git: b6e9a7a2e251 - main - Reapply "pkgbase: Create a FreeBSD-dtb package"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 03 Feb 2024 08:49:23 UTC
The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=b6e9a7a2e2517fb9cb560fbd9b1d6171645df24a commit b6e9a7a2e2517fb9cb560fbd9b1d6171645df24a Author: Emmanuel Vadot <manu@FreeBSD.org> AuthorDate: 2024-02-02 18:25:55 +0000 Commit: Emmanuel Vadot <manu@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