mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
kernel-module-split.bbclass: support CONFIG_MODULE_COMPRESS=y
In case, kernel config enables compressed modules, support of splitting via split_kernel_module_packages won't find any module. So, first expand module pattern regex to recognize compressed modules and then objcopy on temporary extacted to extract module information. (From OE-Core rev: fae400b225827400bf32380a7d599d3b2969db55) Signed-off-by: Jens Rehsack <sno@netbsd.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
c814947e03
commit
67886623d9
|
@ -44,9 +44,23 @@ python split_kernel_module_packages () {
|
|||
def extract_modinfo(file):
|
||||
import tempfile, subprocess
|
||||
tempfile.tempdir = d.getVar("WORKDIR")
|
||||
compressed = re.match( r'.*\.([xg])z$', file)
|
||||
tf = tempfile.mkstemp()
|
||||
tmpfile = tf[1]
|
||||
cmd = "%sobjcopy -j .modinfo -O binary %s %s" % (d.getVar("HOST_PREFIX") or "", file, tmpfile)
|
||||
if compressed:
|
||||
tmpkofile = tmpfile + ".ko"
|
||||
if compressed.group(1) == 'g':
|
||||
cmd = "gunzip -dc %s > %s" % (file, tmpkofile)
|
||||
subprocess.check_call(cmd, shell=True)
|
||||
elif compressed.group(1) == 'x':
|
||||
cmd = "xz -dc %s > %s" % (file, tmpkofile)
|
||||
subprocess.check_call(cmd, shell=True)
|
||||
else:
|
||||
msg = "Cannot decompress '%s'" % file
|
||||
raise msg
|
||||
cmd = "%sobjcopy -j .modinfo -O binary %s %s" % (d.getVar("HOST_PREFIX") or "", tmpkofile, tmpfile)
|
||||
else:
|
||||
cmd = "%sobjcopy -j .modinfo -O binary %s %s" % (d.getVar("HOST_PREFIX") or "", file, tmpfile)
|
||||
subprocess.check_call(cmd, shell=True)
|
||||
# errors='replace': Some old kernel versions contain invalid utf-8 characters in mod descriptions (like 0xf6, 'ö')
|
||||
f = open(tmpfile, errors='replace')
|
||||
|
@ -54,6 +68,8 @@ python split_kernel_module_packages () {
|
|||
f.close()
|
||||
os.close(tf[0])
|
||||
os.unlink(tmpfile)
|
||||
if compressed:
|
||||
os.unlink(tmpkofile)
|
||||
vals = {}
|
||||
for i in l:
|
||||
m = modinfoexp.match(i)
|
||||
|
@ -133,7 +149,7 @@ python split_kernel_module_packages () {
|
|||
kernel_package_name = d.getVar("KERNEL_PACKAGE_NAME") or "kernel"
|
||||
kernel_version = d.getVar("KERNEL_VERSION")
|
||||
|
||||
module_regex = r'^(.*)\.k?o$'
|
||||
module_regex = r'^(.*)\.k?o(?:\.[xg]z)?$'
|
||||
|
||||
module_pattern_prefix = d.getVar('KERNEL_MODULE_PACKAGE_PREFIX')
|
||||
module_pattern_suffix = d.getVar('KERNEL_MODULE_PACKAGE_SUFFIX')
|
||||
|
|
Loading…
Reference in New Issue
Block a user