diff --git a/linux/build.sh b/linux/build.sh index eb40d746b0651709b654acf39a0f1f35723f54c3..b126448e690e11cf407bfe0fa3c07d2a0b01d10c 100755 --- a/linux/build.sh +++ b/linux/build.sh @@ -83,6 +83,16 @@ maybe_faketime dch --force-distribution --distribution="$OURSUITE" --release "" # https://salsa.debian.org/kernel-team/linux/-/merge_requests/1159 # Do not require run-parts 5.21 or otherwise this would not work on bookworm +# - check whether either /etc or /usr directories exist +# - since the /etc directory is now allowed to be missing, do not pass it if +# it does not exist +# - use --help output of run-parts to determine whether more than one argument +# can be passed +# - in debianutils 5.14, run-parts --help output changed from stderr to stdout +# so we have to check both +# - this will fail if /etc does not exist *and* run-parts is too old (because +# then no directory will be passed) -- we assume that /etc can only +# be missing on new systems which will thus also have new run-parts cat << 'END' | env --chdir=linux patch -p1 --- a/debian/templates/headers.postinst.in +++ b/debian/templates/headers.postinst.in @@ -91,7 +101,7 @@ cat << 'END' | env --chdir=linux patch -p1 +if (-d "/etc/kernel/header_postinst.d" || -d "/usr/share/kernel/header_postinst.d") { system ("run-parts --report --exit-on-error --arg=$version " . - "/etc/kernel/header_postinst.d") && -+ '$(test -d /etc/kernel/header_postinst.d && echo /etc/kernel/header_postinst.d) $(test -d /usr/share/kernel/header_postinst.d && run-parts --help | grep -Fxq "Usage: run-parts [OPTION]... DIRECTORY [DIRECTORY ...]" && echo /usr/share/kernel/header_postinst.d)') && ++ '$(test -d /etc/kernel/header_postinst.d && echo /etc/kernel/header_postinst.d) $(test -d /usr/share/kernel/header_postinst.d && run-parts --help 2>&1 | grep -Fxq "Usage: run-parts [OPTION]... DIRECTORY [DIRECTORY ...]" && echo /usr/share/kernel/header_postinst.d)') && die "Failed to process /etc/kernel/header_postinst.d"; } END @@ -104,7 +114,7 @@ for maint in postinst postrm preinst prerm; do +if [ -d /etc/kernel/$maint.d ] || [ -d /usr/share/kernel/$maint.d ]; then DEB_MAINT_PARAMS="\$*" run-parts --report --exit-on-error --arg=\$version \\ - --arg=\$image_path /etc/kernel/$maint.d -+ --arg=\$image_path \$(test -d /etc/kernel/$maint.d && echo /etc/kernel/$maint.d) \$(test -d /usr/share/kernel/$maint.d && run-parts --help | grep -Fxq "Usage: run-parts [OPTION]... DIRECTORY [DIRECTORY ...]" && echo /usr/share/kernel/$maint.d) ++ --arg=\$image_path \$(test -d /etc/kernel/$maint.d && echo /etc/kernel/$maint.d) \$(test -d /usr/share/kernel/$maint.d && run-parts --help 2>&1 | grep -Fxq "Usage: run-parts [OPTION]... DIRECTORY [DIRECTORY ...]" && echo /usr/share/kernel/$maint.d) fi END