release: Add NODISTSETS to skip legacy dist sets

`make -DPKGBASE -DNODISTSETS` can now be used to build an installer
without any support for dist sets.

Reviewed by:	Isaac Freund <ifreund@freebsdfoundation.org>
Event:		Kitchener-Waterloo Hackathon 202506
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D50919
This commit is contained in:
Ed Maste 2025-06-18 14:46:10 -04:00
parent 47c3158b65
commit 3f494a4e5c

View file

@ -21,6 +21,7 @@
# Variables affecting the build process:
# WORLDDIR: location of src tree -- must have built world and default kernel
# (by default, the directory above this one)
# NODISTSETS: if set, do not include dist sets or MANIFEST
# PKGBASE: if set, include pkgbase packages rather than dist tarballs in
# disc1 and dvd1 installation media
# PORTSDIR: location of ports tree to distribute (default: /usr/ports)
@ -179,6 +180,12 @@ packagesystem: ${DISTRIBUTIONS}
sh ${.CURDIR}/scripts/make-manifest.sh $$(ls *.txz | grep -v container) > MANIFEST
touch ${.TARGET}
.if !defined(NODISTSETS)
disc1: packagesystem
bootonly: packagesystem
dvd1: packagesystem
.endif
.if defined(PKGBASE)
PKGBASE_REPO= pkgbase-repo
PKG_ABI= $$(${PKG_CMD} -o ABI_FILE=${.TARGET}/usr/bin/uname config ABI)
@ -188,7 +195,7 @@ pkgbase-repo:
mkdir -p pkgbase-repo
( ${IMAKE} -C ${WORLDDIR} packages REPODIR=${.OBJDIR}/pkgbase-repo )
disc1: packagesystem ${PKGBASE_REPO}
disc1: ${PKGBASE_REPO}
# Install system
mkdir -p ${.TARGET}
( cd ${WORLDDIR} && ${IMAKE} installworld installkernel distribution \
@ -211,6 +218,7 @@ disc1: packagesystem ${PKGBASE_REPO}
mtree -C -k type,mode,link,size | \
sed 's|^\.|./usr/freebsd-packages|g' >> ${.TARGET}/METALOG
.endif
.if !defined(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
@ -223,6 +231,7 @@ disc1: packagesystem ${PKGBASE_REPO}
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))
# Install packages onto release media.
${PKG_INSTALL} pkg || true
@ -245,7 +254,7 @@ disc1: packagesystem ${PKGBASE_REPO}
echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
touch ${.TARGET}
bootonly: packagesystem
bootonly:
# Install system
mkdir -p ${.TARGET}
( cd ${WORLDDIR} && ${IMAKE} installworld installkernel distribution \
@ -256,11 +265,13 @@ bootonly: packagesystem
MK_TOOLCHAIN=no \
MK_RESCUE=no MK_DICT=no \
MK_KERNEL_SYMBOLS=no MK_TESTS=no MK_DEBUG_FILES=no)
.if !defined(NODISTSETS)
# Copy manifest only (no distfiles) to get checksums
mkdir -p ${.TARGET}/usr/freebsd-dist
cp MANIFEST ${.TARGET}/usr/freebsd-dist
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))
# Install packages onto release media.
${PKG_INSTALL} pkg || true
@ -281,7 +292,7 @@ bootonly: packagesystem
echo "./boot/loader.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
dvd: packagesystem ${PKGBASE_REPO}
dvd: ${PKGBASE_REPO}
# Install system
mkdir -p ${.TARGET}
( cd ${WORLDDIR} && ${IMAKE} installworld installkernel distribution \
@ -300,6 +311,7 @@ dvd: packagesystem ${PKGBASE_REPO}
mtree -C -k type,mode,link,size | \
sed 's|^\.|./usr/freebsd-packages|g' >> ${.TARGET}/METALOG
.endif
.if !defined(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
@ -313,6 +325,7 @@ dvd: packagesystem ${PKGBASE_REPO}
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))
# Install packages onto release media.
${PKG_INSTALL} pkg || true