diff options
| author | Isaac Freund <ifreund@freebsdfoundation.org> | 2025-05-10 21:36:53 +0000 |
|---|---|---|
| committer | Ed Maste <emaste@FreeBSD.org> | 2025-05-20 20:30:12 +0000 |
| commit | 62d18f8c4c10a5e680b0b795040abffc7964977e (patch) | |
| tree | 404e0fab39059a84529c58a83476a93d1aa99a5b /release/Makefile | |
| parent | 1f922483cc993e282329ffed9096f437799b630e (diff) | |
Diffstat (limited to 'release/Makefile')
| -rw-r--r-- | release/Makefile | 53 |
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 |
