The branch main has been updated by manu:

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

commit b6e9a7a2e2517fb9cb560fbd9b1d6171645df24a
Author:     Emmanuel Vadot <m...@freebsd.org>
AuthorDate: 2024-02-02 18:25:55 +0000
Commit:     Emmanuel Vadot <m...@freebsd.org>
CommitDate: 2024-02-03 08:49:12 +0000

    Reapply "pkgbase: Create a FreeBSD-dtb package"
    
    This reverts commit 9bbe06b004e2cadb55a3792c77991ee640bf0f52.
    
    Before that dtbs where included in each kernel packages which prevents
    us to install multiple kernels.
    
    Fix mtree-to-plist.awk to only generate a dtb.plist when we create
    the kernel one (because dtb are installed during make installkernel).
    
    Sponsored by:   Beckhoff Automation GmbH & Co. KG
---
 Makefile.inc1                      | 28 +++++++++++++++++++++++++++-
 release/packages/dtb.ucl           | 16 ++++++++++++++++
 release/scripts/mtree-to-plist.awk | 20 ++++++++++++++------
 3 files changed, 57 insertions(+), 7 deletions(-)

diff --git a/Makefile.inc1 b/Makefile.inc1
index 1e86cda657dd..7a9917fd8a74 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -2178,9 +2178,35 @@ _default_flavor= -default
 . if ${MK_DEBUG_FILES} != "no"
 _debug=-dbg
 . endif
+
+create-dtb-package:
+       @if [ -f ${KSTAGEDIR}/${DISTDIR}/dtb.plist ]; then \
+       sed -e "s/%VERSION%/${PKG_VERSION}/" \
+               -e "s/%PKGNAME%/dtb/" \
+               -e "s/%COMMENT%/FreeBSD Devicetree Blobs/" \
+               -e "s/%DESC%/FreeBSD Devicetree Blobs/" \
+               -e "s/ %VCS_REVISION%/${VCS_REVISION}/" \
+               -e "s/%PKG_NAME_PREFIX%/${PKG_NAME_PREFIX}/" \
+               -e "s/%PKG_MAINTAINER%/${PKG_MAINTAINER}/" \
+               -e "s|%PKG_WWW%|${PKG_WWW}|" \
+               ${SRCDIR}/release/packages/dtb.ucl \
+               > ${KSTAGEDIR}/${DISTDIR}/dtb.ucl ; \
+       awk -F\" ' \
+               /name/ { printf("===> Creating %s-", $$2); next } \
+               /version/ {print $$2; next } ' \
+               ${KSTAGEDIR}/${DISTDIR}/dtb.ucl ; \
+       ${PKG_CMD} -o ABI=${PKG_ABI} -o ALLOW_BASE_SHLIBS=yes \
+               -o OSVERSION="${SRCRELDATE}" \
+               create -f ${PKG_FORMAT} \
+               -M ${KSTAGEDIR}/${DISTDIR}/dtb.ucl \
+               -p ${KSTAGEDIR}/${DISTDIR}/dtb.plist \
+               -r ${KSTAGEDIR}/${DISTDIR} \
+               -o ${REPODIR}/${PKG_ABI}/${PKG_OUTPUT_DIR} ; \
+       fi
+
 create-kernel-packages:        .PHONY
 . for flavor in "" ${_debug}
-create-kernel-packages: 
create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},}
+create-kernel-packages: 
create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},} 
create-dtb-package
 create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},}: 
_pkgbootstrap .PHONY
        @cd ${KSTAGEDIR}/${DISTDIR} ; \
        ${METALOG_SORT_CMD} ${KSTAGEDIR}/kernel.meta | \
diff --git a/release/packages/dtb.ucl b/release/packages/dtb.ucl
new file mode 100644
index 000000000000..e4717b9054a2
--- /dev/null
+++ b/release/packages/dtb.ucl
@@ -0,0 +1,16 @@
+#
+#
+
+name = "%PKG_NAME_PREFIX%-%PKGNAME%"
+origin = "base"
+version = "%VERSION%"
+comment = "%COMMENT%"
+categories = [ base ]
+maintainer = "%PKG_MAINTAINER%"
+www = "%PKG_WWW%"
+prefix = "/"
+licenselogic = "single"
+licenses = [ BSD2CLAUSE ]
+desc = <<EOD
+%DESC%
+EOD
diff --git a/release/scripts/mtree-to-plist.awk 
b/release/scripts/mtree-to-plist.awk
index 7fcac9b92a81..a5ff6fef235a 100644
--- a/release/scripts/mtree-to-plist.awk
+++ b/release/scripts/mtree-to-plist.awk
@@ -23,9 +23,13 @@
                }
        }
        if (kernel != "") {
-               tags="package=kernel"
-               if (_kernconf != "") {
-                       tags=tags""_kernconf
+               if ($1 ~ /^\/boot\/dtb\//) {
+                       tags="package=dtb"
+               } else {
+                       tags="package=kernel"
+                       if (_kernconf != "") {
+                               tags=tags""_kernconf
+                       }
                }
        }
        if (length(tags) == 0)
@@ -36,8 +40,12 @@
                for (i in a) {
                        if (a[i] ~ /^package=/) {
                                pkgname=a[i]
-                               if ($1 ~ /^\/boot\//)
-                                       pkgname="bootloader"
+                               if ($1 ~ /^\/boot\//) {
+                                       if (kernel != "" && $1 ~ 
/^\/boot\/dtb\//)
+                                               pkgname="dtb"
+                                       else
+                                               pkgname="bootloader"
+                               }
                                gsub(/package=/, "", pkgname)
                        } else if (a[i] == "config") {
                                type="config"
@@ -64,7 +72,7 @@
                print "No packages specified in line: $0"
                next
        }
-       if (kernel != "") {
+       if (kernel != "" && pkgname != "dtb") {
                output="kernel"
                if (_kernconf != "") {
                        output=output"."_kernconf

Reply via email to