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

Denys Dmytriyenko denis at denix.org
Fri Sep 8 20:37:26 UTC 2017


On Fri, Sep 08, 2017 at 09:06:17PM +0100, Paul Barker wrote:
> 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.

FWIW, this was discussed at #yocto on IRC today. When I first saw the change 
several days ago, I was puzzled as well...
The existing method has been in use by many of us for a very long time and 
seems to be well documented - I also vote for reverting the change.

-- 
Denys



More information about the Openembedded-core mailing list