Page MenuHomeFreeBSD

D54548.diff
No OneTemporary

D54548.diff

diff --git a/release/Makefile b/release/Makefile
--- a/release/Makefile
+++ b/release/Makefile
@@ -97,31 +97,63 @@
.endfor
.endif
-.if !defined(NOPKGBASE) || empty(NOPKGBASE)
-PKGBASE_REPO_DIR= pkgbase-repo-dir
-PKG_NAME_PREFIX!= ${IMAKE} -f Makefile.inc1 -C ${WORLDDIR} -V PKG_NAME_PREFIX
-WSTAGEDIR!= ${IMAKE} -f Makefile.inc1 -C ${WORLDDIR} -V WSTAGEDIR
+# Determine what we want to put on the media. NOPKG turns off ports packages
+# (e.g., wifi firmware), while NOPKGBASE turns off base packages and uses
+# dist sets instead. If both are disabled, we avoid installing pkg at all.
-PKG_ABI_FILE= ${WSTAGEDIR}/usr/bin/uname
-PKG_ABI= $$(${PKG_CMD} -o ABI_FILE=${PKG_ABI_FILE} config ABI)
+_USE_PKG=yes # Enabled if we need pkg(8).
+_USE_PKGBASE=yes # Enabled if we build installers for pkgbase.
+_USE_PORTS=yes # Enabled if we install ports packages.
+
+.if defined(NOPKGBASE) && !empty(NOPKGBASE)
+_USE_PKGBASE=no
+.else
+. if ${.MAKE.OS} != "FreeBSD"
+. error Building pkgbase release media is only supported on FreeBSD.
+. endif
+.endif
+
+.if defined(NOPKG) && !empty(NOPKG)
+_USE_PORTS=no
+.else
+. if ${.MAKE.OS} != "FreeBSD"
+. error Building release media with third-party packages is only supported on FreeBSD.
+. endif
.endif
-.if ${.MAKE.OS} == "FreeBSD"
+.if ${_USE_PKGBASE} == "no" && ${_USE_PORTS} == "no"
+# If we aren't using base packages or ports packages, we don't need pkg.
+_USE_PKG=no
+.endif
+
+.if ${_USE_PKG} != "no"
# For installing packages into the release media.
-PKG_ENV+= INSTALL_AS_USER=yes
-PKG_ENV+= ASSUME_ALWAYS_YES=yes
+WSTAGEDIR!= ${IMAKE} -f Makefile.inc1 -C ${WORLDDIR} -V WSTAGEDIR
+PKG_ABI_FILE= ${WSTAGEDIR}/usr/bin/uname
+# We can't use != here because worldstage might not exist yet.
+PKG_ABI= $$(${PKG_CMD} -o ABI_FILE=${PKG_ABI_FILE} config ABI)
+
+PKG_ARGS+= -o INSTALL_AS_USER=yes
+PKG_ARGS+= -o ASSUME_ALWAYS_YES=yes
PKG_ARGS+= -o METALOG=METALOG
PKG_ARGS+= -o ABI=${PKG_ABI}
PKG_ARGS+= -r ${.TARGET}
-PKG_REPO_ARGS= -o REPOS_DIR=${.CURDIR}/pkg_repos
-PKGBASE_REPO_ARGS=-o REPOS_DIR=${.OBJDIR}/pkgbase-repo-dir
+
# Pass -f to make sure pkg writes to the METALOG even if the package
# is already installed from a previous build
-PKG_INSTALL= env ${PKG_ENV} ${PKG_CMD} ${PKG_ARGS} ${PKG_REPO_ARGS} install -f
-PKG_CLEAN= env ${PKG_ENV} ${PKG_CMD} ${PKG_ARGS} ${PKG_REPO_ARGS} clean -a
+PKG_REPO_ARGS= -o REPOS_DIR=${.CURDIR}/pkg_repos
+PKG_INSTALL= ${PKG_CMD} ${PKG_ARGS} ${PKG_REPO_ARGS} install -f
+PKG_CLEAN= ${PKG_CMD} ${PKG_ARGS} ${PKG_REPO_ARGS} clean -a
+.endif
+
+.if ${_USE_PKGBASE} != "no"
+PKG_NAME_PREFIX!= ${IMAKE} -f Makefile.inc1 -C ${WORLDDIR} -V PKG_NAME_PREFIX
+
# This installs from the pkgbase repo we created during build.
-PKGBASE_INSTALL=env ${PKG_ENV} ${PKG_CMD} ${PKG_ARGS} ${PKGBASE_REPO_ARGS} install -f
-PKGBASE_CLEAN= env ${PKG_ENV} ${PKG_CMD} ${PKG_ARGS} ${PKGBASE_REPO_ARGS} clean -a
+PKGBASE_REPO_DIR= pkgbase-repo-dir
+PKGBASE_REPO_ARGS=-o REPOS_DIR=${.OBJDIR}/${PKGBASE_REPO_DIR}
+PKGBASE_INSTALL=${PKG_CMD} ${PKG_ARGS} ${PKGBASE_REPO_ARGS} install -f
+PKGBASE_CLEAN= ${PKG_CMD} ${PKG_ARGS} ${PKGBASE_REPO_ARGS} clean -a
.endif
.if !defined(VOLUME_LABEL) || empty(VOLUME_LABEL)
@@ -129,6 +161,9 @@
.endif
.if !exists(${PORTSDIR})
+. if ${_USE_PKGBASE} != "no"
+. error PORTSDIR (${PORTSDIR}) must exist to build pkgbase media.
+. endif
NOPORTS= true
.endif
@@ -159,7 +194,7 @@
IMAGES+= memstick.img
IMAGES+= mini-memstick.img
.endif
-.if !defined(NOPKGBASE) || empty(NOPKGBASE)
+.if ${_USE_PKGBASE} != "no"
RELEASE_TARGETS+= pkgbase-repo.tar
.endif
@@ -182,9 +217,11 @@
.include <bsd.obj.mk>
clean: beforeclean
+.if !defined(NODISTSETS) || empty(NODISTSETS)
#
# Legacy distribution tarballs
#
+
base.txz: # Also (if enabled) tests, compat libs, and -dbg variants for all.
mkdir -p ${DISTDIR}
( cd ${WORLDDIR} && ${IMAKE} distributeworld DISTDIR=${.OBJDIR}/${DISTDIR} )
@@ -230,13 +267,13 @@
sh ${.CURDIR}/scripts/make-manifest.sh $$(ls *.txz | grep -v container) > MANIFEST
touch ${.TARGET}
-.if !defined(NODISTSETS) || empty(NODISTSETS)
bootonly disc1 dvd: print-distset-warning packagesystem
.endif
-.if !defined(NOPKGBASE) || empty(NOPKGBASE)
-bootonly disc1 dvd: pkgbase-repo-dir
-.endif
+.if ${_USE_PKGBASE} != "no"
+#
+# Base system packages.
+#
pkgbase-repo:
mkdir -p pkgbase-repo
@@ -252,10 +289,13 @@
${.OBJDIR}/pkgbase-repo/${PKG_ABI}/latest \
> pkgbase-repo-dir/FreeBSD-base.conf
+bootonly disc1 dvd: pkgbase-repo-dir
+.endif
+
# Install a system suitable for an installer from the release package repo.
# This is usually invoked via submake by the various media targets, and
# should not be added as a dependency of other targets.
-.if make(install-system)
+.if ${_USE_PKGBASE} != "no" && make(install-system)
. if !defined(INSTALL_SYSTEM_ROOT) || empty(INSTALL_SYSTEM_ROOT)
. error INSTALL_SYSTEM_ROOT must be defined
@@ -312,7 +352,7 @@
.endif
disc1:
-.if !defined(NOPKGBASE) || empty(NOPKGBASE)
+.if ${_USE_PKGBASE} != "no"
# Install system
${MAKE} -C ${.CURDIR} \
INSTALL_SYSTEM_ROOT=${.OBJDIR}/${.TARGET} \
@@ -340,25 +380,28 @@
MK_RESCUE=no MK_DICT=no \
MK_KERNEL_SYMBOLS=no MK_TESTS=no MK_DEBUG_FILES=no)
.endif # if pkgbase
+
.if !defined(NODISTSETS) || empty(NODISTSETS)
# Copy MANIFEST to provide legacy dist checksums in both modes
mkdir -p ${.TARGET}/usr/freebsd-dist
echo "./usr/freebsd-dist type=dir uname=root gname=wheel mode=0755" >> ${.TARGET}/METALOG
cp MANIFEST ${.TARGET}/usr/freebsd-dist
echo "./usr/freebsd-dist/MANIFEST type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
-.if defined(NOPKGBASE) && !empty(NOPKGBASE)
-# Copy distfiles
+.if ${_USE_PKGBASE} == "no"
+# For non-pkgbase media, also copy the actual sets.
for dist in $$(ls *.txz | grep -v container | grep -vE -- '(${base ${_ALL_libcompats}:L:ts|})-dbg'); do \
cp $${dist} ${.TARGET}/usr/freebsd-dist; \
echo "./usr/freebsd-dist/$${dist} type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG; \
done
.endif
.endif
-.if ${.MAKE.OS} == "FreeBSD" && (!defined(NOPKG) || empty(NOPKG))
+
+.if ${_USE_PORTS} != "no"
# Install packages onto release media.
- -${PKG_INSTALL} pkg ${RELEASE_MEDIA_EXTRA_PACKAGES}
- -${PKG_CLEAN}
+ ${PKG_INSTALL} pkg ${RELEASE_MEDIA_EXTRA_PACKAGES}
+ ${PKG_CLEAN}
.endif
+
# Set up installation environment
ln -fs /tmp/bsdinstall_etc/resolv.conf ${.TARGET}/etc/resolv.conf
echo hostid_enable=\"NO\" >> ${.TARGET}/etc/rc.conf
@@ -377,7 +420,7 @@
bootonly:
# Install system
-.if !defined(NOPKGBASE) || empty(NOPKGBASE)
+.if ${_USE_PKGBASE} != "no"
${MAKE} -C ${.CURDIR} \
INSTALL_SYSTEM_ROOT=${.OBJDIR}/${.TARGET} \
INSTALL_SYSTEM_MEDIATYPE="${.TARGET}" \
@@ -393,6 +436,7 @@
MK_RESCUE=no MK_DICT=no \
MK_KERNEL_SYMBOLS=no MK_TESTS=no MK_DEBUG_FILES=no)
.endif # if pkgbase
+
.if !defined(NODISTSETS) || empty(NODISTSETS)
# Copy manifest only (no distfiles) to get checksums
mkdir -p ${.TARGET}/usr/freebsd-dist
@@ -400,10 +444,12 @@
echo "./usr/freebsd-dist type=dir uname=root gname=wheel mode=0755" >> ${.TARGET}/METALOG
echo "./usr/freebsd-dist/MANIFEST type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
.endif
-.if ${.MAKE.OS} == "FreeBSD" && (!defined(NOPKG) || empty(NOPKG))
- -${PKG_INSTALL} pkg ${RELEASE_MEDIA_EXTRA_PACKAGES}
- -${PKG_CLEAN}
+
+.if ${_USE_PORTS} != "no"
+ ${PKG_INSTALL} pkg ${RELEASE_MEDIA_EXTRA_PACKAGES}
+ ${PKG_CLEAN}
.endif
+
# Set up installation environment
ln -fs /tmp/bsdinstall_etc/resolv.conf ${.TARGET}/etc/resolv.conf
echo hostid_enable=\"NO\" >> ${.TARGET}/etc/rc.conf
@@ -420,7 +466,7 @@
echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
dvd:
-.if !defined(NOPKGBASE) || empty(NOPKGBASE)
+.if ${_USE_PKGBASE} != "no"
# Install system
${MAKE} -C ${.CURDIR} \
INSTALL_SYSTEM_ROOT=${.OBJDIR}/${.TARGET} \
@@ -444,24 +490,26 @@
DESTDIR=${.OBJDIR}/${.TARGET} MK_RESCUE=no MK_KERNEL_SYMBOLS=no \
MK_TESTS=no MK_DEBUG_FILES=no)
.endif # if pkgbase
+
+# Copy distfiles
.if !defined(NODISTSETS) || empty(NODISTSETS)
- # Copy MANIFEST to provide legacy dist checksums in both modes
mkdir -p ${.TARGET}/usr/freebsd-dist
echo "./usr/freebsd-dist type=dir uname=root gname=wheel mode=0755" >> ${.TARGET}/METALOG
cp MANIFEST ${.TARGET}/usr/freebsd-dist
echo "./usr/freebsd-dist/MANIFEST type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
-# Copy distfiles
mkdir -p ${.TARGET}/usr/freebsd-dist
for dist in $$(ls *.txz | grep -v container); do \
cp $${dist} ${.TARGET}/usr/freebsd-dist; \
echo "./usr/freebsd-dist/$${dist} type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG; \
done
.endif
-.if ${.MAKE.OS} == "FreeBSD" && (!defined(NOPKG) || empty(NOPKG))
+
+.if ${_USE_PORTS} != "no"
# Install packages onto release media.
- -${PKG_INSTALL} pkg ${RELEASE_MEDIA_EXTRA_PACKAGES}
- -${PKG_CLEAN}
+ ${PKG_INSTALL} pkg ${RELEASE_MEDIA_EXTRA_PACKAGES}
+ ${PKG_CLEAN}
.endif
+
# Set up installation environment
ln -fs /tmp/bsdinstall_etc/resolv.conf ${.TARGET}/etc/resolv.conf
echo hostid_enable=\"NO\" >> ${.TARGET}/etc/rc.conf
@@ -505,7 +553,7 @@
cd bootonly-memstick && sh ${.CURDIR}/${TARGET}/make-memstick.sh ./METALOG ../${.TARGET}
pkg-stage: dvd
-.if !defined(NOPKG) || empty(NOPKG)
+.if ${_USE_PORTS} != "no"
env PORTSDIR=${PORTSDIR} REPOS_DIR=${.CURDIR}/pkg_repos/ \
sh ${.CURDIR}/scripts/pkg-stage.sh -N
mkdir -p ${.OBJDIR}/dvd/packages/repos/

File Metadata

Mime Type
text/plain
Expires
Wed, May 27, 10:28 AM (13 m, 9 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33389434
Default Alt Text
D54548.diff (9 KB)

Event Timeline