Move generate_module_data before create_runtime
module-info and the updated depmod stuff need to be inside the runtime image, so this needs to happen before create_runtime. Accordingly, generate_module_data gets moved to RuntimeBuilder.
This commit is contained in:
parent
a8f627faab
commit
d636b82783
@ -214,6 +214,9 @@ class Lorax(BaseLoraxClass):
|
|||||||
logger.info("cleaning unneeded files")
|
logger.info("cleaning unneeded files")
|
||||||
rb.cleanup()
|
rb.cleanup()
|
||||||
|
|
||||||
|
logger.info("generating kernel module metadata")
|
||||||
|
rb.generate_module_data()
|
||||||
|
|
||||||
logger.info("creating the runtime image")
|
logger.info("creating the runtime image")
|
||||||
runtime = "images/install.img"
|
runtime = "images/install.img"
|
||||||
# FIXME: compression options (type, speed, etc.)
|
# FIXME: compression options (type, speed, etc.)
|
||||||
@ -224,9 +227,6 @@ class Lorax(BaseLoraxClass):
|
|||||||
inroot=installroot, outroot=self.outputdir,
|
inroot=installroot, outroot=self.outputdir,
|
||||||
runtime=runtime, templatedir=templatedir)
|
runtime=runtime, templatedir=templatedir)
|
||||||
|
|
||||||
logger.info("generating kernel module metadata")
|
|
||||||
treebuilder.generate_module_data()
|
|
||||||
|
|
||||||
logger.info("rebuilding initramfs images")
|
logger.info("rebuilding initramfs images")
|
||||||
treebuilder.rebuild_initrds(add_args=["--xz"])
|
treebuilder.rebuild_initrds(add_args=["--xz"])
|
||||||
|
|
||||||
|
@ -40,6 +40,27 @@ templatemap = {
|
|||||||
's390x': 's390.tmpl',
|
's390x': 's390.tmpl',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def generate_module_info(moddir, outfile=None):
|
||||||
|
def module_desc(mod):
|
||||||
|
return check_output(["modinfo", "-F", "description", mod]).strip()
|
||||||
|
def read_module_set(name):
|
||||||
|
return set(l.strip() for l in open(joinpaths(moddir,name)) if ".ko" in l)
|
||||||
|
modsets = {'scsi':read_module_set("modules.block"),
|
||||||
|
'eth':read_module_set("modules.networking")}
|
||||||
|
|
||||||
|
modinfo = list()
|
||||||
|
for root, dirs, files in os.walk(moddir):
|
||||||
|
for modtype, modset in modsets.items():
|
||||||
|
for mod in modset.intersection(files): # modules in this dir
|
||||||
|
(name, ext) = os.path.splitext(mod) # foo.ko -> (foo, .ko)
|
||||||
|
desc = module_desc(joinpaths(root,mod)) or "%s driver" % name
|
||||||
|
modinfo.append(dict(name=name, type=modtype, desc=desc))
|
||||||
|
|
||||||
|
out = open(outfile or joinpaths(moddir,"module-info"), "w")
|
||||||
|
out.write("Version 0\n")
|
||||||
|
for mod in sorted(modinfo, key=lambda m: m.get('name')):
|
||||||
|
out.write('{name}\n\t{type}\n\t"{desc:.65}"\n'.format(**mod))
|
||||||
|
|
||||||
class RuntimeBuilder(object):
|
class RuntimeBuilder(object):
|
||||||
'''Builds the anaconda runtime image.'''
|
'''Builds the anaconda runtime image.'''
|
||||||
def __init__(self, product, arch, yum, templatedir=None):
|
def __init__(self, product, arch, yum, templatedir=None):
|
||||||
@ -78,6 +99,15 @@ class RuntimeBuilder(object):
|
|||||||
removelocales = locales.difference(keeplocales)
|
removelocales = locales.difference(keeplocales)
|
||||||
self._runner.run("runtime-cleanup.tmpl", removelocales=removelocales)
|
self._runner.run("runtime-cleanup.tmpl", removelocales=removelocales)
|
||||||
|
|
||||||
|
def generate_module_data(self):
|
||||||
|
root = self.vars.root
|
||||||
|
moddir = joinpaths(root, "lib/modules/")
|
||||||
|
for kver in os.listdir(moddir):
|
||||||
|
ksyms = joinpaths(root, "boot/System.map-%s" % kver)
|
||||||
|
logger.info("doing depmod and module-info for %s", kver)
|
||||||
|
check_call(["depmod", "-a", "-F", ksyms, "-b", root, kver])
|
||||||
|
generate_module_info(moddir+kver, outfile=moddir+"module-info")
|
||||||
|
|
||||||
def create_runtime(self, outfile="/tmp/squashfs.img"):
|
def create_runtime(self, outfile="/tmp/squashfs.img"):
|
||||||
# make live rootfs image - must be named "LiveOS/rootfs.img" for dracut
|
# make live rootfs image - must be named "LiveOS/rootfs.img" for dracut
|
||||||
workdir = joinpaths(os.path.dirname(outfile), "runtime-workdir")
|
workdir = joinpaths(os.path.dirname(outfile), "runtime-workdir")
|
||||||
@ -107,16 +137,6 @@ class TreeBuilder(object):
|
|||||||
def kernels(self):
|
def kernels(self):
|
||||||
return findkernels(root=self.vars.inroot)
|
return findkernels(root=self.vars.inroot)
|
||||||
|
|
||||||
def generate_module_data(self):
|
|
||||||
inroot = self.vars.inroot
|
|
||||||
for kernel in self.kernels:
|
|
||||||
kver = kernel.version
|
|
||||||
ksyms = joinpaths(inroot, "boot/System.map-%s" % kver)
|
|
||||||
logger.info("doing depmod and module-info for %s", kver)
|
|
||||||
check_call(["depmod", "-a", "-F", ksyms, "-b", inroot, kver])
|
|
||||||
moddir = joinpaths(inroot, "lib/modules/")
|
|
||||||
generate_module_info(moddir+kver, outfile=moddir+"module-info")
|
|
||||||
|
|
||||||
def rebuild_initrds(self, add_args=[], backup=""):
|
def rebuild_initrds(self, add_args=[], backup=""):
|
||||||
'''Rebuild all the initrds in the tree. If backup is specified, each
|
'''Rebuild all the initrds in the tree. If backup is specified, each
|
||||||
initrd will be renamed with backup as a suffix before rebuilding.
|
initrd will be renamed with backup as a suffix before rebuilding.
|
||||||
@ -170,27 +190,6 @@ def findkernels(root="/", kdir="boot"):
|
|||||||
|
|
||||||
return kernels
|
return kernels
|
||||||
|
|
||||||
def generate_module_info(moddir, outfile=None):
|
|
||||||
def module_desc(mod):
|
|
||||||
return check_output(["modinfo", "-F", "description", mod]).strip()
|
|
||||||
def read_module_set(name):
|
|
||||||
return set(l.strip() for l in open(joinpaths(moddir,name)) if ".ko" in l)
|
|
||||||
modsets = {'scsi':read_module_set("modules.block"),
|
|
||||||
'eth':read_module_set("modules.networking")}
|
|
||||||
|
|
||||||
modinfo = list()
|
|
||||||
for root, dirs, files in os.walk(moddir):
|
|
||||||
for modtype, modset in modsets.items():
|
|
||||||
for mod in modset.intersection(files): # modules in this dir
|
|
||||||
(name, ext) = os.path.splitext(mod) # foo.ko -> (foo, .ko)
|
|
||||||
desc = module_desc(joinpaths(root,mod)) or "%s driver" % name
|
|
||||||
modinfo.append(dict(name=name, type=modtype, desc=desc))
|
|
||||||
|
|
||||||
out = open(outfile or joinpaths(moddir,"module-info"), "w")
|
|
||||||
out.write("Version 0\n")
|
|
||||||
for mod in sorted(modinfo, key=lambda m: m.get('name')):
|
|
||||||
out.write('{name}\n\t{type}\n\t"{desc:.65}"\n'.format(**mod))
|
|
||||||
|
|
||||||
# udev whitelist: 'a-zA-Z0-9#+.:=@_-' (see is_whitelisted in libudev-util.c)
|
# udev whitelist: 'a-zA-Z0-9#+.:=@_-' (see is_whitelisted in libudev-util.c)
|
||||||
udev_blacklist=' !"$%&\'()*,/;<>?[\\]^`{|}~' # ASCII printable, minus whitelist
|
udev_blacklist=' !"$%&\'()*,/;<>?[\\]^`{|}~' # ASCII printable, minus whitelist
|
||||||
udev_blacklist += ''.join(chr(i) for i in range(32)) # ASCII non-printable
|
udev_blacklist += ''.join(chr(i) for i in range(32)) # ASCII non-printable
|
||||||
|
Loading…
Reference in New Issue
Block a user