git: a5afd7920d50 - main - pkgbase: Create a FreeBSD-dtb package
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 29 Jan 2024 18:25:12 UTC
The branch main has been updated by manu:
URL: https://cgit.FreeBSD.org/src/commit/?id=a5afd7920d50ff23f91bdbabb1f0fd7ba028ba9e
commit a5afd7920d50ff23f91bdbabb1f0fd7ba028ba9e
Author: Emmanuel Vadot <manu@FreeBSD.org>
AuthorDate: 2024-01-27 12:20:49 +0000
Commit: Emmanuel Vadot <manu@FreeBSD.org>
CommitDate: 2024-01-29 18:24:25 +0000
pkgbase: Create a FreeBSD-dtb package
Before that dtbs where included in each kernel packages which prevents
us to install multiple kernels.
Differential Revision: https://reviews.freebsd.org/D43632
Reviewed by: bapt
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..e51f3c8bfe1a 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 ($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