Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F157912660
D54548.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
9 KB
Referenced Files
None
Subscribers
None
D54548.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D54548: release: Improve error handling and option logic
Attached
Detach File
Event Timeline
Log In to Comment