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
signature.asc
Description: PGP signature