git: 8c1de3109776 - stable/14 - release: Ship firmware from kmods repo on DVD

From: Colin Percival <cperciva_at_FreeBSD.org>
Date: Thu, 05 Feb 2026 18:21:27 UTC
The branch stable/14 has been updated by cperciva:

URL: https://cgit.FreeBSD.org/src/commit/?id=8c1de31097763ce1d918a3f82c61fd8d30edbe75

commit 8c1de31097763ce1d918a3f82c61fd8d30edbe75
Author:     Colin Percival <cperciva@FreeBSD.org>
AuthorDate: 2025-09-16 18:43:36 +0000
Commit:     Colin Percival <cperciva@FreeBSD.org>
CommitDate: 2026-02-05 18:21:17 +0000

    release: Ship firmware from kmods repo on DVD
    
    The packages for X.Y-RELEASE are a snapshot of the quarterly branch
    for stable/X, i.e. typically built on X.(Y-1)-RELEASE.  (The case of
    Y=0 is an exception for obvious reasons.)  This works for most ports
    but not for kernel modules, which may need to be built on the release
    in question; this is why we have a separate "kmods" repository.
    
    Make sure that we put the packages from the kmods repository onto the
    mini-pkg-repo on the DVD rather than shipping unusable firmware.
    
    Reviewed by:    bz
    MFC after:      1 week
    Sponsored by:   https://www.patreon.com/cperciva
    Differential Revision:  https://reviews.freebsd.org/D52581
    
    (cherry picked from commit bda8028146694ee490543b35e3349e060936fde4)
---
 release/pkg_repos/release-dvd.conf |  7 +++++++
 release/scripts/pkg-stage.sh       | 25 ++++++++++++++++++-------
 2 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/release/pkg_repos/release-dvd.conf b/release/pkg_repos/release-dvd.conf
index c2e64c43a56f..d2db295c53c8 100644
--- a/release/pkg_repos/release-dvd.conf
+++ b/release/pkg_repos/release-dvd.conf
@@ -5,3 +5,10 @@ release: {
   fingerprints: "/usr/share/keys/pkg",
   enabled: yes
 }
+release-kmods: {
+  url: "pkg+http://pkg.FreeBSD.org/${ABI}/kmods_latest",
+  mirror_type: "srv",
+  signature_type: "fingerprints",
+  fingerprints: "/usr/share/keys/pkg",
+  enabled: yes
+}
diff --git a/release/scripts/pkg-stage.sh b/release/scripts/pkg-stage.sh
index 2c70b59be241..d490e83ba9ec 100755
--- a/release/scripts/pkg-stage.sh
+++ b/release/scripts/pkg-stage.sh
@@ -12,13 +12,12 @@ export ROOTDIR="$PWD/dvd"
 export PKGCMD="/usr/sbin/pkg -d --rootdir ${ROOTDIR}"
 export PORTSDIR="${PORTSDIR:-/usr/ports}"
 
-_DVD_PACKAGES="
+_DVD_PACKAGES_MAIN="
 comms/usbmuxd
 devel/git@lite
 misc/freebsd-doc-all
 net/mpd5
 net/rsync
-net/wifi-firmware-kmod@release
 ports-mgmt/pkg
 shells/bash
 shells/zsh
@@ -35,6 +34,10 @@ x11/xorg
 x11-wm/sway
 "
 
+_DVD_PACKAGES_KMODS="
+net/wifi-firmware-kmod@release
+"
+
 # If NOPORTS is set for the release, do not attempt to build pkg(8).
 if [ ! -f ${PORTSDIR}/Makefile ]; then
 	echo "*** ${PORTSDIR} is missing!    ***"
@@ -57,18 +60,25 @@ if [ ! -z "${PKG_ALTABI}" ]; then
 	ln -s ${PKG_ABI} ${ROOTDIR}/packages/${PKG_ALTABI}
 fi
 
-# Ensure the ports listed in _DVD_PACKAGES exist to sanitize the
+# Ensure the ports listed in _DVD_PACKAGES_* exist to sanitize the
 # final list.
-for _P in ${_DVD_PACKAGES}; do
+for _P in ${_DVD_PACKAGES_MAIN}; do
+	if [ -d "${PORTSDIR}/${_P%%@*}" ]; then
+		DVD_PACKAGES_MAIN="${DVD_PACKAGES_MAIN} ${_P}"
+	else
+		echo "*** Skipping nonexistent port: ${_P%%@*}"
+	fi
+done
+for _P in ${_DVD_PACKAGES_KMODS}; do
 	if [ -d "${PORTSDIR}/${_P%%@*}" ]; then
-		DVD_PACKAGES="${DVD_PACKAGES} ${_P}"
+		DVD_PACKAGES_KMODS="${DVD_PACKAGES_KMODS} ${_P}"
 	else
 		echo "*** Skipping nonexistent port: ${_P%%@*}"
 	fi
 done
 
 # Make sure the package list is not empty.
-if [ -z "${DVD_PACKAGES}" ]; then
+if [ -z "${DVD_PACKAGES_MAIN}${DVD_PACKAGES_KMODS}" ]; then
 	echo "*** The package list is empty."
 	echo "*** Something is very wrong."
 	# Exit '0' so the rest of the build process continues
@@ -79,7 +89,8 @@ fi
 # Print pkg(8) information to make debugging easier.
 ${PKGCMD} -vv
 ${PKGCMD} update -f
-${PKGCMD} fetch -o ${PKG_REPODIR} -d ${DVD_PACKAGES}
+${PKGCMD} fetch -o ${PKG_REPODIR} -r release -d ${DVD_PACKAGES_MAIN}
+${PKGCMD} fetch -o ${PKG_REPODIR} -r release-kmods -d ${DVD_PACKAGES_KMODS}
 
 # Create the 'Latest/pkg.txz' symlink so 'pkg bootstrap' works
 # using the on-disc packages.