• [gentoo-dev] Re: [PATCH] linux-mod.eclass: Support module compression

    From Jaco Kroon@21:1/5 to Mike Pagano on Fri Jun 10 11:40:01 2022
    Hi,

    On 2022/06/10 00:11, 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.

    LGTM.

    Thanks for your work on this.

    Kind Regards,
    Jaco



    Signed-off-by: Mike Pagano <mpagano@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
             cd "${OLDPWD}"
     
             generate_modulesd "${objdir}/${modulename}"

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)