From: Ola x Nilsson <ola.x.nilsson@axis.com>
To: Jose Quaresma <quaresma.jose@gmail.com>
Cc: <openembedded-core@lists.openembedded.org>,
Jose Quaresma <jose.quaresma@foundries.io>,
Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Subject: Re: [PATCH V2 1/2] kernel-module-split: make autoload and probeconf distribution specific
Date: Tue, 20 Jun 2023 10:54:10 +0200 [thread overview]
Message-ID: <jwqh6r2bjbf.fsf@axis.com> (raw)
In-Reply-To: <20230619231343.1683736-1-jose.quaresma@foundries.io>
On Mon, Jun 19 2023, Jose Quaresma wrote:
> The modules-load.d [1] - Configure kernel modules to load at boot
> should install their configuration files in /usr/lib/modules-load.d.
>
> The modprobe.d [2] - Configuration directory for modprobe
> should install their configuration files in /lib/modprobe.d
>
> [1] https://www.freedesktop.org/software/systemd/man/modules-load.d.html
> [2] https://www.man7.org/linux/man-pages//man5/modprobe.d.5.html
>
> [YOCTO #12212] https://bugzilla.yoctoproject.org/show_bug.cgi?id=12212
>
> CC: Ola x Nilsson <Ola.x.Nilsson@axis.com>
> CC: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> ---
>
> V2: use the same location as before on the class and define the new
> location just for systemd.
>
> .../kernel-module-split.bbclass | 30 +++++++++----------
> .../distro/include/init-manager-systemd.inc | 4 +++
> 2 files changed, 18 insertions(+), 16 deletions(-)
>
> diff --git a/meta/classes-recipe/kernel-module-split.bbclass b/meta/classes-recipe/kernel-module-split.bbclass
> index 50882c31a7..ee14bb6910 100644
> --- a/meta/classes-recipe/kernel-module-split.bbclass
> +++ b/meta/classes-recipe/kernel-module-split.bbclass
> @@ -30,8 +30,11 @@ fi
>
> PACKAGE_WRITE_DEPS += "kmod-native depmodwrapper-cross"
>
> +modulesloaddir ??= "${sysconfdir}/modules-load.d"
> +modprobedir ??= "${sysconfdir}/modprobe.d"
> +
> do_install:append() {
> - install -d ${D}${sysconfdir}/modules-load.d/ ${D}${sysconfdir}/modprobe.d/
> + install -d ${D}${modulesloaddir} ${D}${modprobedir}
> }
>
> KERNEL_SPLIT_MODULES ?= "1"
> @@ -93,8 +96,9 @@ python split_kernel_module_packages () {
>
> dvar = d.getVar('PKGD')
>
> - # If autoloading is requested, output /etc/modules-load.d/<name>.conf and append
> + # If autoloading is requested, output ${modulesloaddir}/<name>.conf and append
> # appropriate modprobe commands to the postinst
> + autoloadpath = '%s/%s.conf' % (d.getVar('modulesloaddir'), basename)
> autoloadlist = (d.getVar("KERNEL_MODULE_AUTOLOAD") or "").split()
> autoload = d.getVar('module_autoload_%s' % basename)
> if autoload and autoload == basename:
> @@ -102,8 +106,7 @@ python split_kernel_module_packages () {
> if autoload and basename not in autoloadlist:
> bb.warn("module_autoload_%s is defined but '%s' isn't included in KERNEL_MODULE_AUTOLOAD, please add it there" % (basename, basename))
> if basename in autoloadlist:
> - name = '%s/etc/modules-load.d/%s.conf' % (dvar, basename)
> - f = open(name, 'w')
> + f = open("%s%s" % (dvar, autoloadpath), 'w')
> if autoload:
> for m in autoload.split():
> f.write('%s\n' % m)
You could take the opportunity to rewrite this section to use context
manager to handle the file object:
with open(...) as f
> @@ -117,23 +120,19 @@ python split_kernel_module_packages () {
> d.setVar('pkg_postinst:%s' % pkg, postinst)
>
> # Write out any modconf fragment
> + modconfpath = '%s/%s.conf' % (d.getVar('modprobedir'), basename)
> modconflist = (d.getVar("KERNEL_MODULE_PROBECONF") or "").split()
> modconf = d.getVar('module_conf_%s' % basename)
> if modconf and basename in modconflist:
> - name = '%s/etc/modprobe.d/%s.conf' % (dvar, basename)
> - f = open(name, 'w')
> + f = open("%s%s" % (dvar, modconfpath), 'w')
Same.
> 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)
> - files = "%s /etc/modules-load.d/%s.conf /etc/modprobe.d/%s.conf" % (files, basename, basename)
> - d.setVar('FILES:%s' % pkg, files)
> -
> - conffiles = d.getVar('CONFFILES:%s' % pkg)
> - conffiles = "%s /etc/modules-load.d/%s.conf /etc/modprobe.d/%s.conf" % (conffiles, basename, basename)
> - d.setVar('CONFFILES:%s' % pkg, conffiles)
> + appendfiles = " %s %s" % (autoloadpath, modconfpath)
> + d.appendVar('FILES:%s' % pkg, appendfiles)
> + d.appendVar('CONFFILES:%s' % pkg, appendfiles)
>
I think it would be best to use autoloadpath and modconfpath for the
automatic creation of such files, but use all known variants of these
paths for the package splitting. If the module makefile creates the
files in one of the places the package splitter should find them without
requireing the customization of the recipe.
> if "description" in vals:
> old_desc = d.getVar('DESCRIPTION:' + pkg) or ""
> @@ -169,8 +168,7 @@ python split_kernel_module_packages () {
> postrm = d.getVar('pkg_postrm:modules')
>
> if splitmods != '1':
> - etcdir = d.getVar('sysconfdir')
> - d.appendVar('FILES:' + metapkg, '%s/modules-load.d/ %s/modprobe.d/ %s/modules/' % (etcdir, etcdir, d.getVar("nonarch_base_libdir")))
> + d.appendVar('FILES:' + metapkg, '%s/ %s/ %s/modules/' % (modulesloaddir, modprobedir, d.getVar("nonarch_base_libdir")))
> d.appendVar('pkg_postinst:%s' % metapkg, postinst)
> d.prependVar('pkg_postrm:%s' % metapkg, postrm);
> return
> @@ -189,7 +187,7 @@ python split_kernel_module_packages () {
> # avoid warnings. removedirs only raises an OSError if an empty
> # directory cannot be removed.
> dvar = d.getVar('PKGD')
> - for dir in ["%s/etc/modprobe.d" % (dvar), "%s/etc/modules-load.d" % (dvar), "%s/etc" % (dvar)]:
> + for dir in ["%s%s" % (dvar, modprobedir), "%s%s" % (dvar, modulesloaddir)]:
> if len(os.listdir(dir)) == 0:
> os.rmdir(dir)
> }
Same.
> diff --git a/meta/conf/distro/include/init-manager-systemd.inc b/meta/conf/distro/include/init-manager-systemd.inc
> index 7867d90028..fc13089764 100644
> --- a/meta/conf/distro/include/init-manager-systemd.inc
> +++ b/meta/conf/distro/include/init-manager-systemd.inc
> @@ -5,3 +5,7 @@ VIRTUAL-RUNTIME_init_manager ??= "systemd"
> VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
> VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
> VIRTUAL-RUNTIME_dev_manager ??= "systemd"
> +
> +# use autoload and probeconf distribution specific
> +modulesloaddir ?= "${libdir}/modules-load.d"
> +modprobedir ?= "${nonarch_base_libdir}/modprobe.d"
--
Ola x Nilsson
next prev parent reply other threads:[~2023-06-20 8:59 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-19 23:13 [PATCH V2 1/2] kernel-module-split: make autoload and probeconf distribution specific Jose Quaresma
2023-06-19 23:13 ` [PATCH V2 2/2] kernel: autoload and probeconf are handled by kernel-module-split Jose Quaresma
2023-06-20 1:13 ` [PATCH V2 1/2] kernel-module-split: make autoload and probeconf distribution specific Peter Kjellerstedt
2023-06-20 8:54 ` Ola x Nilsson [this message]
2023-06-20 13:57 ` [OE-core] " Luca Ceresoli
2023-06-20 14:12 ` Jose Quaresma
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=jwqh6r2bjbf.fsf@axis.com \
--to=ola.x.nilsson@axis.com \
--cc=jose.quaresma@foundries.io \
--cc=openembedded-core@lists.openembedded.org \
--cc=peter.kjellerstedt@axis.com \
--cc=quaresma.jose@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox