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