diff options
author | Jose Quaresma <quaresma.jose@gmail.com> | 2023-06-27 10:16:41 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-06-28 23:17:13 +0100 |
commit | 66b8e3c14d18b6256dbfd9043ebb21f8a71a0d15 (patch) | |
tree | 1ea4c978881b3a36653ad37cfc2fd7161b329f1e /meta/classes-recipe/kernel-module-split.bbclass | |
parent | ff3d1490a47136cce3299235b4bded24b45b7c4e (diff) | |
download | poky-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.bbclass | 35 |
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 | ||
31 | PACKAGE_WRITE_DEPS += "kmod-native depmodwrapper-cross" | 31 | PACKAGE_WRITE_DEPS += "kmod-native depmodwrapper-cross" |
32 | 32 | ||
33 | do_install:append() { | ||
34 | install -d ${D}${sysconfdir}/modules-load.d/ ${D}${sysconfdir}/modprobe.d/ | ||
35 | } | ||
36 | |||
37 | KERNEL_SPLIT_MODULES ?= "1" | 33 | KERNEL_SPLIT_MODULES ?= "1" |
38 | PACKAGESPLITFUNCS =+ "split_kernel_module_packages" | 34 | PACKAGESPLITFUNCS =+ "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 | ||
197 | do_package[vardeps] += '${@" ".join(map(lambda s: "module_conf_" + s, (d.getVar("KERNEL_MODULE_PROBECONF") or "").split()))}' | 188 | do_package[vardeps] += '${@" ".join(map(lambda s: "module_conf_" + s, (d.getVar("KERNEL_MODULE_PROBECONF") or "").split()))}' |