mbox series

[PATCHv3,0/1] scripts/package/builddeb: allow hooks also in /usr/share/kernel

Message ID 20241203065441.2341579-1-josch@mister-muffin.de (mailing list archive)
Headers show
Series scripts/package/builddeb: allow hooks also in /usr/share/kernel | expand

Message

Johannes Schauer Marin Rodrigues Dec. 3, 2024, 6:54 a.m. UTC
Hi,

Quoting Masahiro Yamada (2024-12-03 07:15:17)
> On Tue, Dec 3, 2024 at 2:59 AM Johannes Schauer Marin Rodrigues
> <josch@mister-muffin.de> 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(-)