aboutsummaryrefslogtreecommitdiff
path: root/release/Makefile
diff options
context:
space:
mode:
authorIsaac Freund <ifreund@freebsdfoundation.org>2025-05-10 21:36:53 +0000
committerEd Maste <emaste@FreeBSD.org>2025-05-20 20:30:12 +0000
commit62d18f8c4c10a5e680b0b795040abffc7964977e (patch)
tree404e0fab39059a84529c58a83476a93d1aa99a5b /release/Makefile
parent1f922483cc993e282329ffed9096f437799b630e (diff)
Diffstat (limited to 'release/Makefile')
-rw-r--r--release/Makefile53
1 files changed, 51 insertions, 2 deletions
diff --git a/release/Makefile b/release/Makefile
index 1a64c51d3400..578df226ff49 100644
--- a/release/Makefile
+++ b/release/Makefile
@@ -21,6 +21,8 @@
# Variables affecting the build process:
# WORLDDIR: location of src tree -- must have built world and default kernel
# (by default, the directory above this one)
+# 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)
# XTRADIR: xtra-bits-dir argument for <arch>/mkisoimages.sh
# NOPKG: if set, do not distribute third-party packages
@@ -124,7 +126,7 @@ CLEANFILES+= ${I}.xz
.if defined(WITH_DVD) && !empty(WITH_DVD)
CLEANFILES+= pkg-stage
.endif
-CLEANDIRS= dist ftp disc1 disc1-disc1 disc1-memstick bootonly bootonly-bootonly bootonly-memstick dvd
+CLEANDIRS= dist pkgbase-repo pkgbase-repo-conf ftp disc1 disc1-disc1 disc1-memstick bootonly bootonly-bootonly bootonly-memstick dvd
beforeclean:
chflags -R noschg .
.include <bsd.obj.mk>
@@ -170,7 +172,16 @@ ports.txz:
--exclude 'usr/ports/INDEX*' --exclude work usr/ports | \
${XZ_CMD} > ${.OBJDIR}/ports.txz )
-disc1: packagesystem
+.if defined(PKGBASE)
+PKGBASE_REPO= pkgbase-repo
+PKG_ABI= $$(${PKG_CMD} -o ABI_FILE=${.TARGET}/usr/bin/uname config ABI)
+.endif
+
+pkgbase-repo:
+ mkdir -p pkgbase-repo
+ ( ${IMAKE} -C ${WORLDDIR} packages REPODIR=${.OBJDIR}/pkgbase-repo )
+
+disc1: packagesystem ${PKGBASE_REPO}
# Install system
mkdir -p ${.TARGET}
( cd ${WORLDDIR} && ${IMAKE} installworld installkernel distribution \
@@ -181,6 +192,24 @@ disc1: packagesystem
MK_RESCUE=no MK_DICT=no \
MK_KERNEL_SYMBOLS=no MK_TESTS=no MK_DEBUG_FILES=no \
-DDB_FROM_SRC -DNO_ROOT)
+.if defined(PKGBASE)
+# Create offline pkgbase repo on release media
+ mkdir -p ${.TARGET}/usr/freebsd-packages/repos/
+ ${.CURDIR}/scripts/pkgbase-stage.lua disc \
+ ${.OBJDIR}/pkgbase-repo/${PKG_ABI}/latest \
+ ${.TARGET}/usr/freebsd-packages/offline \
+ "${_ALL_libcompats}"
+ cp ${.CURDIR}/scripts/FreeBSD-base-offline.conf \
+ ${.TARGET}/usr/freebsd-packages/repos/
+ mtree -c -p ${.TARGET}/usr/freebsd-packages | \
+ mtree -C -k type,mode,link,size | \
+ sed 's|^\.|./usr/freebsd-packages|g' >> ${.TARGET}/METALOG
+# 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
+.else
# Copy distfiles
mkdir -p ${.TARGET}/usr/freebsd-dist
for dist in MANIFEST $$(ls *.txz | grep -v container | grep -vE -- '(${base ${_ALL_libcompats}:L:ts|})-dbg'); \
@@ -190,6 +219,7 @@ disc1: packagesystem
for dist in MANIFEST $$(ls *.txz | grep -v container | grep -vE -- '(${base ${_ALL_libcompats}:L:ts|})-dbg'); \
do 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))
# Install packages onto release media.
${PKG_INSTALL} pkg || true
@@ -256,6 +286,24 @@ dvd: packagesystem
DESTDIR=${.OBJDIR}/${.TARGET} MK_RESCUE=no MK_KERNEL_SYMBOLS=no \
MK_TESTS=no MK_DEBUG_FILES=no \
-DDB_FROM_SRC -DNO_ROOT)
+.if defined(PKGBASE)
+# Create offline pkgbase repo on release media
+ mkdir -p ${.TARGET}/usr/freebsd-packages/repos/
+ ${.CURDIR}/scripts/pkgbase-stage.lua dvd \
+ ${.OBJDIR}/pkgbase-repo/${PKG_ABI}/latest \
+ ${.TARGET}/usr/freebsd-packages/offline \
+ "${_ALL_libcompats}"
+ cp ${.CURDIR}/scripts/FreeBSD-base-offline.conf \
+ ${.TARGET}/usr/freebsd-packages/repos/
+ mtree -c -p ${.TARGET}/usr/freebsd-packages | \
+ mtree -C -k type,mode,link,size | \
+ sed 's|^\.|./usr/freebsd-packages|g' >> ${.TARGET}/METALOG
+# 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
+.else
# Copy distfiles
mkdir -p ${.TARGET}/usr/freebsd-dist
for dist in MANIFEST $$(ls *.txz | grep -v container); \
@@ -265,6 +313,7 @@ dvd: packagesystem
for dist in MANIFEST $$(ls *.txz | grep -v container); \
do 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))
# Install packages onto release media.
${PKG_INSTALL} pkg || true