git: 988426e815c1 - main - kern.post.mk: Support flavors in PORTS_MODULES

From: Dag-Erling Smørgrav <des_at_FreeBSD.org>
Date: Mon, 11 Aug 2025 13:55:10 UTC
The branch main has been updated by des:

URL: https://cgit.FreeBSD.org/src/commit/?id=988426e815c12a899c8c6853090b8c8fca7ed5cd

commit 988426e815c12a899c8c6853090b8c8fca7ed5cd
Author:     Dag-Erling Smørgrav <des@FreeBSD.org>
AuthorDate: 2025-08-11 13:54:51 +0000
Commit:     Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2025-08-11 13:54:51 +0000

    kern.post.mk: Support flavors in PORTS_MODULES
    
    MFC after:      1 week
    PR:             288596
    Reviewed by:    pkubaj
    Differential Revision:  https://reviews.freebsd.org/D51833
---
 share/man/man7/build.7 | 10 +++++++---
 sys/conf/kern.post.mk  | 10 ++++++++--
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/share/man/man7/build.7 b/share/man/man7/build.7
index 0aae2c42ac04..4022b915c972 100644
--- a/share/man/man7/build.7
+++ b/share/man/man7/build.7
@@ -25,7 +25,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd March 8, 2025
+.Dd August 8, 2025
 .Dt BUILD 7
 .Os
 .Sh NAME
@@ -667,8 +667,12 @@ This is currently incompatible with building
 .Pa src
 into
 .Cm packages .
-.Bd -literal -offset indent
-make PORTS_MODULES=emulators/virtualbox-ose-kmod kernel
+Each port must be specified as
+.Ar category Ns Li / Ns Ar port Ns Op Li @ Ns Ar flavor ,
+e.g.
+.Bd -literal
+PORTS_MODULES=graphics/gpu-firmware-intel-kmod@kabylake
+PORTS_MODULES+=graphics/drm-66-kmod
 .Ed
 .It Va LOCAL_MODULES
 A list of external kernel modules that should be built and installed
diff --git a/sys/conf/kern.post.mk b/sys/conf/kern.post.mk
index 59e51c394a35..0e4ffd92724e 100644
--- a/sys/conf/kern.post.mk
+++ b/sys/conf/kern.post.mk
@@ -124,7 +124,10 @@ PORTSMODULESENV=\
 all:
 .for __i in ${PORTS_MODULES}
 	@${ECHO} "===> Ports module ${__i} (all)"
-	cd ${PORTSDIR:U/usr/ports}/${__i}; ${PORTSMODULESENV} ${MAKE} -B clean build
+	port=${__i}; flavor=$${port#*@}; port=$${port%@*}; flavor=$${flavor%$${port}}; \
+	cd ${PORTSDIR:U/usr/ports}/$${port}; \
+	${PORTSMODULESENV} ${MAKE} -B $${flavor:+FLAVOR=}$${flavor} \
+	    clean build
 .endfor
 
 .for __target in install reinstall clean
@@ -132,7 +135,10 @@ ${__target}: ports-${__target}
 ports-${__target}:
 .for __i in ${PORTS_MODULES}
 	@${ECHO} "===> Ports module ${__i} (${__target})"
-	cd ${PORTSDIR:U/usr/ports}/${__i}; ${PORTSMODULESENV} ${MAKE} -B ${__target:C/(re)?install/deinstall reinstall/}
+	port=${__i}; flavor=$${port#*@}; port=$${port%@*}; flavor=$${flavor%$${port}}; \
+	cd ${PORTSDIR:U/usr/ports}/$${port}; \
+	${PORTSMODULESENV} ${MAKE} -B $${flavor:+FLAVOR=}$${flavor} \
+	    ${__target:C/(re)?install/deinstall reinstall/}
 .endfor
 .endfor
 .endif