summaryrefslogtreecommitdiffstats
path: root/meta/classes-recipe/kernel-module-split.bbclass
diff options
context:
space:
mode:
authorJose Quaresma <quaresma.jose@gmail.com>2023-06-27 10:16:41 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-06-28 23:17:13 +0100
commit66b8e3c14d18b6256dbfd9043ebb21f8a71a0d15 (patch)
tree1ea4c978881b3a36653ad37cfc2fd7161b329f1e /meta/classes-recipe/kernel-module-split.bbclass
parentff3d1490a47136cce3299235b4bded24b45b7c4e (diff)
downloadpoky-66b8e3c14d18b6256dbfd9043ebb21f8a71a0d15.tar.gz
kernel-module-split: install config modules directories only when they are needed
Instaed of allways create the directories and removing it at the if they are not used, we can just do it when there are modules configuration to be created. So the best thing to do is install the directories only when necessary. (From OE-Core rev: 71460993f350bca3d5a22115fd5551696f955c9f) Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes-recipe/kernel-module-split.bbclass')
-rw-r--r--meta/classes-recipe/kernel-module-split.bbclass35
1 files changed, 13 insertions, 22 deletions
diff --git a/meta/classes-recipe/kernel-module-split.bbclass b/meta/classes-recipe/kernel-module-split.bbclass
index 50882c31a7..9467a28208 100644
--- a/meta/classes-recipe/kernel-module-split.bbclass
+++ b/meta/classes-recipe/kernel-module-split.bbclass
@@ -30,10 +30,6 @@ fi
30 30
31PACKAGE_WRITE_DEPS += "kmod-native depmodwrapper-cross" 31PACKAGE_WRITE_DEPS += "kmod-native depmodwrapper-cross"
32 32
33do_install:append() {
34 install -d ${D}${sysconfdir}/modules-load.d/ ${D}${sysconfdir}/modprobe.d/
35}
36
37KERNEL_SPLIT_MODULES ?= "1" 33KERNEL_SPLIT_MODULES ?= "1"
38PACKAGESPLITFUNCS =+ "split_kernel_module_packages" 34PACKAGESPLITFUNCS =+ "split_kernel_module_packages"
39 35
@@ -102,7 +98,9 @@ python split_kernel_module_packages () {
102 if autoload and basename not in autoloadlist: 98 if autoload and basename not in autoloadlist:
103 bb.warn("module_autoload_%s is defined but '%s' isn't included in KERNEL_MODULE_AUTOLOAD, please add it there" % (basename, basename)) 99 bb.warn("module_autoload_%s is defined but '%s' isn't included in KERNEL_MODULE_AUTOLOAD, please add it there" % (basename, basename))
104 if basename in autoloadlist: 100 if basename in autoloadlist:
105 name = '%s/etc/modules-load.d/%s.conf' % (dvar, basename) 101 conf = '/etc/modules-load.d/%s.conf' % basename
102 name = '%s%s' % (dvar, conf)
103 os.makedirs(os.path.dirname(name), exist_ok=True)
106 f = open(name, 'w') 104 f = open(name, 'w')
107 if autoload: 105 if autoload:
108 for m in autoload.split(): 106 for m in autoload.split():
@@ -110,6 +108,9 @@ python split_kernel_module_packages () {
110 else: 108 else:
111 f.write('%s\n' % basename) 109 f.write('%s\n' % basename)
112 f.close() 110 f.close()
111 conf2append = ' %s' % conf
112 d.appendVar('FILES:%s' % pkg, conf2append)
113 d.appendVar('CONFFILES:%s' % pkg, conf2append)
113 postinst = d.getVar('pkg_postinst:%s' % pkg) 114 postinst = d.getVar('pkg_postinst:%s' % pkg)
114 if not postinst: 115 if not postinst:
115 bb.fatal("pkg_postinst:%s not defined" % pkg) 116 bb.fatal("pkg_postinst:%s not defined" % pkg)
@@ -120,21 +121,19 @@ python split_kernel_module_packages () {
120 modconflist = (d.getVar("KERNEL_MODULE_PROBECONF") or "").split() 121 modconflist = (d.getVar("KERNEL_MODULE_PROBECONF") or "").split()
121 modconf = d.getVar('module_conf_%s' % basename) 122 modconf = d.getVar('module_conf_%s' % basename)
122 if modconf and basename in modconflist: 123 if modconf and basename in modconflist:
123 name = '%s/etc/modprobe.d/%s.conf' % (dvar, basename) 124 conf = '/etc/modprobe.d/%s.conf' % basename
125 name = '%s%s' % (dvar, conf)
126 os.makedirs(os.path.dirname(name), exist_ok=True)
124 f = open(name, 'w') 127 f = open(name, 'w')
125 f.write("%s\n" % modconf) 128 f.write("%s\n" % modconf)
126 f.close() 129 f.close()
130 conf2append = ' %s' % conf
131 d.appendVar('FILES:%s' % pkg, conf2append)
132 d.appendVar('CONFFILES:%s' % pkg, conf2append)
133
127 elif modconf: 134 elif modconf:
128 bb.error("Please ensure module %s is listed in KERNEL_MODULE_PROBECONF since module_conf_%s is set" % (basename, basename)) 135 bb.error("Please ensure module %s is listed in KERNEL_MODULE_PROBECONF since module_conf_%s is set" % (basename, basename))
129 136
130 files = d.getVar('FILES:%s' % pkg)
131 files = "%s /etc/modules-load.d/%s.conf /etc/modprobe.d/%s.conf" % (files, basename, basename)
132 d.setVar('FILES:%s' % pkg, files)
133
134 conffiles = d.getVar('CONFFILES:%s' % pkg)
135 conffiles = "%s /etc/modules-load.d/%s.conf /etc/modprobe.d/%s.conf" % (conffiles, basename, basename)
136 d.setVar('CONFFILES:%s' % pkg, conffiles)
137
138 if "description" in vals: 137 if "description" in vals:
139 old_desc = d.getVar('DESCRIPTION:' + pkg) or "" 138 old_desc = d.getVar('DESCRIPTION:' + pkg) or ""
140 d.setVar('DESCRIPTION:' + pkg, old_desc + "; " + vals["description"]) 139 d.setVar('DESCRIPTION:' + pkg, old_desc + "; " + vals["description"])
@@ -184,14 +183,6 @@ python split_kernel_module_packages () {
184 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='%s-%s' % (kernel_package_name, kernel_version)) 183 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='%s-%s' % (kernel_package_name, kernel_version))
185 if modules: 184 if modules:
186 d.appendVar('RDEPENDS:' + metapkg, ' '+' '.join(modules)) 185 d.appendVar('RDEPENDS:' + metapkg, ' '+' '.join(modules))
187
188 # If modules-load.d and modprobe.d are empty at this point, remove them to
189 # avoid warnings. removedirs only raises an OSError if an empty
190 # directory cannot be removed.
191 dvar = d.getVar('PKGD')
192 for dir in ["%s/etc/modprobe.d" % (dvar), "%s/etc/modules-load.d" % (dvar), "%s/etc" % (dvar)]:
193 if len(os.listdir(dir)) == 0:
194 os.rmdir(dir)
195} 186}
196 187
197do_package[vardeps] += '${@" ".join(map(lambda s: "module_conf_" + s, (d.getVar("KERNEL_MODULE_PROBECONF") or "").split()))}' 188do_package[vardeps] += '${@" ".join(map(lambda s: "module_conf_" + s, (d.getVar("KERNEL_MODULE_PROBECONF") or "").split()))}'