summaryrefslogtreecommitdiffstats
path: root/meta/classes/kernel-module-split.bbclass
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2014-06-13 16:46:25 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-06-16 15:31:40 +0100
commitc56c9a2f41eac8f87f13547806edc794b77ba54e (patch)
tree6b7ac56a88f4aa402d7adde8a963d2f87eafa01b /meta/classes/kernel-module-split.bbclass
parent3476a49b10093c58b2f89e3d9a8527224f1bd7f6 (diff)
downloadpoky-c56c9a2f41eac8f87f13547806edc794b77ba54e.tar.gz
kernel-module-split: Add support for KERNEL_MODULE_AUTOLOAD and KERNEL_MODULE_PROBECONF
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. [YOCTO #5786] (From OE-Core rev: 6f8b5be646be0f3e15e215907547f11d2a23d81b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/kernel-module-split.bbclass')
-rw-r--r--meta/classes/kernel-module-split.bbclass10
1 files changed, 9 insertions, 1 deletions
diff --git a/meta/classes/kernel-module-split.bbclass b/meta/classes/kernel-module-split.bbclass
index d43f7431cb..e38a6f6e7e 100644
--- a/meta/classes/kernel-module-split.bbclass
+++ b/meta/classes/kernel-module-split.bbclass
@@ -130,8 +130,11 @@ python split_kernel_module_packages () {
130 130
131 # If autoloading is requested, output /etc/modules-load.d/<name>.conf and append 131 # If autoloading is requested, output /etc/modules-load.d/<name>.conf and append
132 # appropriate modprobe commands to the postinst 132 # appropriate modprobe commands to the postinst
133 autoloadlist = (d.getVar("KERNEL_MODULE_AUTOLOAD", True) or "").split()
133 autoload = d.getVar('module_autoload_%s' % basename, True) 134 autoload = d.getVar('module_autoload_%s' % basename, True)
134 if autoload: 135 if autoload:
136 bb.error("KERNEL_MODULE_AUTOLOAD has replaced module_autoload_%s, please replace it!" % basename)
137 if basename in autoloadlist:
135 name = '%s/etc/modules-load.d/%s.conf' % (dvar, basename) 138 name = '%s/etc/modules-load.d/%s.conf' % (dvar, basename)
136 f = open(name, 'w') 139 f = open(name, 'w')
137 for m in autoload.split(): 140 for m in autoload.split():
@@ -144,12 +147,15 @@ python split_kernel_module_packages () {
144 d.setVar('pkg_postinst_%s' % pkg, postinst) 147 d.setVar('pkg_postinst_%s' % pkg, postinst)
145 148
146 # Write out any modconf fragment 149 # Write out any modconf fragment
150 modconflist = (d.getVar("KERNEL_MODULE_PROBECONF", True) or "").split()
147 modconf = d.getVar('module_conf_%s' % basename, True) 151 modconf = d.getVar('module_conf_%s' % basename, True)
148 if modconf: 152 if modconf and basename in modconflist:
149 name = '%s/etc/modprobe.d/%s.conf' % (dvar, basename) 153 name = '%s/etc/modprobe.d/%s.conf' % (dvar, basename)
150 f = open(name, 'w') 154 f = open(name, 'w')
151 f.write("%s\n" % modconf) 155 f.write("%s\n" % modconf)
152 f.close() 156 f.close()
157 elif modconf:
158 bb.error("Please ensure module %s is listed in KERNEL_MODULE_PROBECONF since module_conf_%s is set" % (basename, basename))
153 159
154 files = d.getVar('FILES_%s' % pkg, True) 160 files = d.getVar('FILES_%s' % pkg, True)
155 files = "%s /etc/modules-load.d/%s.conf /etc/modprobe.d/%s.conf" % (files, basename, basename) 161 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 () {
185 if len(os.listdir(dir)) == 0: 191 if len(os.listdir(dir)) == 0:
186 os.rmdir(dir) 192 os.rmdir(dir)
187} 193}
194
195do_package[vardeps] += '${@" ".join(map(lambda s: "module_conf_" + s, (d.getVar("KERNEL_MODULE_PROBECONF", True) or "").split()))}'