On Fri, Jun 10, 2022 at 06:27:49AM -0400, Ionen Wolkens wrote:
> On Thu, Jun 09, 2022 at 06:11:00PM -0400, Mike Pagano wrote:
> > The Linux kernel supports the compression of modules utilizing GZIP, XZ
> > and ZSTD.  Add code into linux-mod.eclass to support this for out of
> > tree modules utilizing the compression binary specified in the kernel
> > config.
> > 
> > Note that if the binary which provides the compression is not present on
> > the system the kernel would have failed to build with an error
> > indicating the missing binaries name.
> > 
> > Signed-off-by: Mike Pagano <mpag...@gentoo.org>
> > ---
> >   eclass/linux-mod.eclass | 17 ++++++++++++++++-
> >   1 file changed, 16 insertions(+), 1 deletion(-)
> > 
> > diff --git a/eclass/linux-mod.eclass b/eclass/linux-mod.eclass
> > index 6a820371b..b7c13cbf7 100644
> > --- a/eclass/linux-mod.eclass
> > +++ b/eclass/linux-mod.eclass
> > @@ -711,7 +711,22 @@ linux-mod_src_install() {
> >             einfo "Installing ${modulename} module"
> >             cd "${objdir}" || die "${objdir} does not exist"
> >             insinto "${INSTALL_MOD_PATH}"/lib/modules/${KV_FULL}/${libdir}
> > -           doins ${modulename}.${KV_OBJ} || die "doins 
> > ${modulename}.${KV_OBJ} failed"
> > +
> > +           # check here for CONFIG_MODULE_COMPRESS_<compression option> 
> > (NONE, GZIP, XZ, ZSTD)
> > +           # and similarily compress the module being built if != NONE.
> > +
> > +           if linux_chkconfig_present MODULE_COMPRESS_XZ; then
> > +                   xz ${modulename}.${KV_OBJ}
> > +                   doins ${modulename}.${KV_OBJ}.xz || die "doins 
> > ${modulename}.${KV_OBJ}.xz failed"
> > +           elif linux_chkconfig_present MODULE_COMPRESS_GZIP; then
> > +                   gzip ${modulename}.${KV_OBJ}
> > +                   doins ${modulename}.${KV_OBJ}.gz || die "doins 
> > ${modulename}.${KV_OBJ}.gz failed"
> > +           elif linux_chkconfig_present MODULE_COMPRESS_ZSTD; then
> > +                   zstd ${modulename}.${KV_OBJ}
> > +                   doins ${modulename}.${KV_OBJ}.zst || die "doins 
> > ${modulename}.${KV_OBJ}.zst failed"
> > +           else
> > +                   doins ${modulename}.${KV_OBJ} || die "doins 
> > ${modulename}.${KV_OBJ} failed"
> > +           fi
> 
> This is copied from what the ebuild used to do, but doins already dies
> on its own and report what file failed. Be a good occasion to clean
> that up rather than repeat it.
> 
> What does not die on its own is the compression commands though. doins
> would fail right after, but feels kind of unclear/fragile.

Actually, could consider the case where the compression command somehow
left a broken/partial file behind and it gets installed despite error
return value.

> 
> That aside, I tend to wonder if the kernel build system could be used
> to install (i.e. it'd do compression, signing, etc... at same time,
> and even handle new methods without needing to add them to the eclass).
> But it's not something I looked at for usability, so not picky about
> how to handle this.
> 
> >             cd "${OLDPWD}"
> >   
> >             generate_modulesd "${objdir}/${modulename}"
> > -- 
> > 2.35.1
> > 
> 
> 
> 
> 
> -- 
> ionen



-- 
ionen

Attachment: signature.asc
Description: PGP signature

Reply via email to