[OE-core] [PATCH v2] kernel-module-split: rrecommend kernel-image instead of rdepend

Paul Barker pbarker at toganlabs.com
Fri Sep 8 20:06:17 UTC 2017


On Mon, Aug 21, 2017 at 10:21 AM, Martin Hundebøll <mnhu at prevas.dk> wrote:
> Hard depending on the kernel makes it impossible to install kernel
> modules without getting the kernel image installed too. This is
> inconvenient in e.g. initramdisks, where the kernel is loaded from
> outside the initramdisk.
>
> Making the kernel modules rrecommend kernel-image-<version> instead of
> rdepending on it, makes it possible to install kernel modules without
> the kernel image by setting "kernel-image" in BAD_RECOMMENDATIONS.
>
> Signed-off-by: Martin Hundebøll <mnhu at prevas.dk>
> ---
>  meta/classes/kernel-module-split.bbclass | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/meta/classes/kernel-module-split.bbclass b/meta/classes/kernel-module-split.bbclass
> index 1035525dac..78843c5474 100644
> --- a/meta/classes/kernel-module-split.bbclass
> +++ b/meta/classes/kernel-module-split.bbclass
> @@ -120,6 +120,11 @@ python split_kernel_module_packages () {
>                  rdepends[dep] = []
>          d.setVar('RDEPENDS_' + pkg, bb.utils.join_deps(rdepends, commasep=False))
>
> +        # let kernel modules runtime recommend kernel image
> +        rrecommends = bb.utils.explode_dep_versions2(d.getVar('RRECOMMENDS_' + pkg) or "")
> +        rrecommends['kernel-image'] = []
> +        d.setVar('RRECOMMENDS_' + pkg, bb.utils.join_deps(rrecommends, commasep=False))
> +
>          # Avoid automatic -dev recommendations for modules ending with -dev.
>          d.setVarFlag('RRECOMMENDS_' + pkg, 'nodeprrecs', 1)
>
> @@ -138,7 +143,7 @@ python split_kernel_module_packages () {
>      postinst = d.getVar('pkg_postinst_modules')
>      postrm = d.getVar('pkg_postrm_modules')
>
> -    modules = do_split_packages(d, root='${nonarch_base_libdir}/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='kernel-%s' % (d.getVar("KERNEL_VERSION")))
> +    modules = do_split_packages(d, root='${nonarch_base_libdir}/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='')
>      if modules:
>          metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
>          d.appendVar('RDEPENDS_' + metapkg, ' '+' '.join(modules))
> --
> 2.14.1
>

This breaks the method described in the kernel dev FAQ to omit the
kernel image from the rootfs which is to set the following in a conf
file:

    RDEPENDS_kernel-base = ""

See http://www.yoctoproject.org/docs/2.3.1/kernel-dev/kernel-dev.html#idm45690538384880.

By recommending kernel-image directly instead of recommending the
top-level kernel-<version> package which was actually removed from
extra_depends, we skip the inclusion of the kernel-base package. I'm
not familiar enough with the details of kernel module loading to know
if the 2 files in kernel-base (modules.builtin and modules.order) are
strictly needed but I think they should at least be included in via
recommendation.

As we already have a documented way to omit the kernel image, can we
revert this?

As an alternative I can send in a patch which changes the recommend to
the top-level kernel-<version> package instead of kernel-image.

-- 
Paul Barker
Togán Labs Ltd



More information about the Openembedded-core mailing list