[OE-core] [PATCH] kernel-module-split: Add support for KERNEL_MODULE_AUTOLOAD and KERNEL_MODULE_PROBECONF

Bruce Ashfield bruce.ashfield at gmail.com
Fri Jun 13 19:02:05 UTC 2014


On Fri, Jun 13, 2014 at 11:46 AM, Richard Purdie
<richard.purdie at linuxfoundation.org> wrote:
> The current module_autoload_* and module_conf_* variables are error
> both ugly and error prone. They aren't registered in the task checksums
> so changes to them aren't reflected in the build. This turns out to
> be near impossible to fix with the current variable format in any
> sensible way :(.
>
> This patch replace module_autoload with the list of variables in
> KERNEL_MODULE_AUTOLOAD which is a much simpler and usable API. An
> error is printed if an old style variable is encountered. It should
> be simple to convert to this.
>
> module_conf_* are harder to deal with since there is data associated
> with it, it isn't simply a flag. We need a list of variables that are set
> in order to be able to correctly handle the task checksum so we add
> KERNEL_MODULE_PROBECONF for this purpose and error if the user hasn't
> added a module to it when they should have.

Looks reasonable to me. In my experience, there aren't a lot of users of
the module_* variables, so the transition to the new names and semantics
shouldn't be a big issue.

Cheers,

Bruce

>
> [YOCTO #5786]
>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
>
> diff --git a/meta/classes/kernel-module-split.bbclass b/meta/classes/kernel-module-split.bbclass
> index d43f743..e38a6f6 100644
> --- a/meta/classes/kernel-module-split.bbclass
> +++ b/meta/classes/kernel-module-split.bbclass
> @@ -130,8 +130,11 @@ python split_kernel_module_packages () {
>
>          # If autoloading is requested, output /etc/modules-load.d/<name>.conf and append
>          # appropriate modprobe commands to the postinst
> +        autoloadlist = (d.getVar("KERNEL_MODULE_AUTOLOAD", True) or "").split()
>          autoload = d.getVar('module_autoload_%s' % basename, True)
>          if autoload:
> +            bb.error("KERNEL_MODULE_AUTOLOAD has replaced module_autoload_%s, please replace it!" % basename)
> +        if basename in autoloadlist:
>              name = '%s/etc/modules-load.d/%s.conf' % (dvar, basename)
>              f = open(name, 'w')
>              for m in autoload.split():
> @@ -144,12 +147,15 @@ python split_kernel_module_packages () {
>              d.setVar('pkg_postinst_%s' % pkg, postinst)
>
>          # Write out any modconf fragment
> +        modconflist = (d.getVar("KERNEL_MODULE_PROBECONF", True) or "").split()
>          modconf = d.getVar('module_conf_%s' % basename, True)
> -        if modconf:
> +        if modconf and basename in modconflist:
>              name = '%s/etc/modprobe.d/%s.conf' % (dvar, basename)
>              f = open(name, 'w')
>              f.write("%s\n" % modconf)
>              f.close()
> +        elif modconf:
> +            bb.error("Please ensure module %s is listed in KERNEL_MODULE_PROBECONF since module_conf_%s is set" % (basename, basename))
>
>          files = d.getVar('FILES_%s' % pkg, True)
>          files = "%s /etc/modules-load.d/%s.conf /etc/modprobe.d/%s.conf" % (files, basename, basename)
> @@ -185,3 +191,5 @@ python split_kernel_module_packages () {
>          if len(os.listdir(dir)) == 0:
>              os.rmdir(dir)
>  }
> +
> +do_package[vardeps] += '${@" ".join(map(lambda s: "module_conf_" + s, (d.getVar("KERNEL_MODULE_PROBECONF", True) or "").split()))}'
>
>



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"



More information about the Openembedded-core mailing list