Page MenuHomeFreeBSD

D54548.1794427396.diff
No OneTemporary

Authored By
Unknown
Size
9 KB
Referenced Files
None
Subscribers
None

D54548.1794427396.diff

diff --git a/release/Makefile b/release/Makefile
--- a/release/Makefile
+++ b/release/Makefile
@@ -89,31 +89,62 @@
.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
+_USE_PKGBASE=yes
+_USE_PORTS=yes
+
+.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 ${.MAKE.OS} == "FreeBSD"
+.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 ${_USE_PKGBASE} == "no" && ${_USE_PKG} == "no"
+_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)
@@ -121,6 +152,9 @@
.endif
.if !exists(${PORTSDIR})
+. if ${_USE_PKGBASE} != "no"
+. error PORTSDIR (${PORTSDIR}) must exist to build pkgbase media.
+. endif
NOPORTS= true
.endif
@@ -151,7 +185,7 @@
IMAGES+= memstick.img
IMAGES+= mini-memstick.img
.endif
-.if !defined(NOPKGBASE) || empty(NOPKGBASE)
+.if ${_USE_PKGBASE} != "no"
RELEASE_TARGETS+= pkgbase-repo.tar
.endif
@@ -177,6 +211,7 @@
#
# Legacy distribution tarballs
#
+.if !defined(NODISTSETS) || empty(NODISTSETS)
base.txz: # Also (if enabled) tests, compat libs, and -dbg variants for all.
mkdir -p ${DISTDIR}
( cd ${WORLDDIR} && ${IMAKE} distributeworld DISTDIR=${.OBJDIR}/${DISTDIR} )
@@ -222,17 +257,12 @@
sh ${.CURDIR}/scripts/make-manifest.sh $$(ls *.txz | grep -v container) > MANIFEST
touch ${.TARGET}
-.if !defined(NODISTSETS) || empty(NODISTSETS)
disc1: packagesystem
bootonly: packagesystem
dvd: packagesystem
.endif
-.if !defined(NOPKGBASE) || empty(NOPKGBASE)
-disc1: pkgbase-repo-dir
-bootonly: pkgbase-repo-dir
-dvd: pkgbase-repo-dir
-.endif
+.if ${_USE_PKGBASE} != "no"
pkgbase-repo:
mkdir -p pkgbase-repo
( ${IMAKE} -C ${WORLDDIR} packages REPODIR=${.OBJDIR}/pkgbase-repo \
@@ -247,10 +277,15 @@
${.OBJDIR}/pkgbase-repo/${PKG_ABI}/latest \
> pkgbase-repo-dir/FreeBSD-base.conf
+disc1: pkgbase-repo-dir
+bootonly: pkgbase-repo-dir
+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
@@ -293,7 +328,7 @@
.endif # make(install-system)
disc1:
-.if !defined(NOPKGBASE) || empty(NOPKGBASE)
+.if ${_USE_PKGBASE} != "no"
# Install system
${MAKE} -C ${.CURDIR} \
INSTALL_SYSTEM_ROOT=${.OBJDIR}/${.TARGET} \
@@ -321,25 +356,30 @@
MK_RESCUE=no MK_DICT=no \
MK_KERNEL_SYMBOLS=no MK_TESTS=no MK_DEBUG_FILES=no)
.endif # if pkgbase
+
+# If we're building pkgbase media (i.e., NODISTSETS isn't defined),
+# copy MANIFEST (the distset checksums) to allow a network install.
.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} || true
- ${PKG_CLEAN} || true
+ ${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 sendmail_enable=\"NONE\" > ${.TARGET}/etc/rc.conf
@@ -359,7 +399,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}" \
@@ -375,6 +415,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
@@ -382,10 +423,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} || true
- ${PKG_CLEAN} || true
+
+.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 sendmail_enable=\"NONE\" > ${.TARGET}/etc/rc.conf
@@ -403,7 +446,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} \
@@ -427,24 +470,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} || true
- ${PKG_CLEAN} || true
+ ${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 sendmail_enable=\"NONE\" > ${.TARGET}/etc/rc.conf
@@ -489,7 +534,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, Nov 11, 8:03 PM (16 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41665009
Default Alt Text
D54548.1794427396.diff (9 KB)

Event Timeline