Hi, Quoting Masahiro Yamada (2024-12-03 07:15:17) > On Tue, Dec 3, 2024 at 2:59 AM Johannes Schauer Marin Rodrigues > <josch@xxxxxxxxxxxxxxxx> wrote: > > > > Hi, > > > > Quoting Masahiro Yamada (2024-12-02 16:42:02) > > > > @@ -84,7 +93,26 @@ install_linux_image () { # Tell initramfs builder > > > > whether it's wanted export INITRD=$(if_enabled_echo CONFIG_BLK_DEV_INITRD > > > > Yes No) > > > > > > > > - test -d ${debhookdir}/${script}.d && run-parts --arg="${KERNELRELEASE}" -- arg="/${installed_image_path}" ${debhookdir}/${script}.d > > > > + # run-parts will error out if one of its directory arguments does not > > > > + # exist, so filter the list of hook directories accordingly. > > > > + hookdirs= > > > > + for dir in ${debhookdir}; do > > > > + test -d "\$dir/${script}.d" || continue > > > > + hookdirs="\$hookdirs \$dir/${script}.d" > > > > + done > > > > + hookdirs="\${hookdirs# }" > > > > + test -n "\$hookdirs" || exit 0 > > > > + > > > > + # If more than one hook directory remained, check version of run-parts. If > > > > + # run-parts is too old, fall back to only processing the first. > > > > + case \$hookdirs in *" "*) if ! run-parts --help 2>&1 \ > > > > + | grep -Fxq "Usage: run-parts [OPTION]... DIRECTORY [DIRECTORY ...]"; then > > > > + echo "E: run-parts >=5.21 is required for multiple hook directories, falling back to $firsthookdir" >&2 > > > > > > Same comment as in the previous version. > > > If both /etc/kernel/postinst.d/ and /usr/share/kernel/postinst.d/ exist, > > > can we assume the run-parts>=5.12 on that system? > > > > > > since KDEB_HOOKDIR can now be any directories and any number of directories, > > the question should rather be: if more than one directory from KDEB_HOOKDIR > > exists, can we assume that run-parts>=5.12 exists on that system? > > > > Personally, I'd prefer a best-effort fallback mechanism. The alternative would > > be that kernel installation would just error out in case a (buggy) package on a > > distro ships something in /usr/share/kernel/postinst.d/ but failed to also > > declare a versioned dependency against debianutils. The error message cannot > > (or rather only with considerable effort) tell the user *why* their kernel > > installation errored out. By only considering the first hook directory > > (probably /etc) in those situation, the kernel would succeed to install and the > > hooks from the (buggy) package would be skipped. I understand that such a > > behaviour comes with its own set of disadvantages. One could also argue, that > > it is better to error out loudly in case of an error instead of hiding a > > message prefixed with a "E:" in a bunch of console output when a kernel package > > gets installed. > > > > What is your position on this question? What behaviour would you prefer? If you > > strongly prefer the kernel installation to error out loudly if run-parts is too > > old, then my next patch will implement just that. I think whether "we can > > assume run-parts>=5.12" depends on what we declare to be the right way to hold > > this feature. If we say "packages must declare this versioned dependency and if > > they fail to do this then it is their bug and not ours" then yes, then we can > > assume run-parts>=5.12 in case of multiple directories. >█ > My preference is to pass the existing hook directories to run-parts. > If KDEB_HOOKDIR specifies two directories and both exist, > pass them to run-parts. Done in this third version of my patch. Thank you for your reviews and your patience with me! :) cheers, josch Johannes Schauer Marin Rodrigues (1): scripts/package/builddeb: allow hooks also in /usr/share/kernel scripts/package/builddeb | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) -- 2.39.2