This adds a "ramdisk" section to lorax.conf, which contains a "style" key. This key is passed to LoraxInstallTree to control what style of ramdisk should be built. The default is "initramfs", which is the current default One Big Image style of ramdisk. More may be added later. --- src/pylorax/__init__.py | 6 +++++- src/pylorax/installtree.py | 33 ++++++++++++++++++++------------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/pylorax/__init__.py b/src/pylorax/__init__.py index 1ce411c..de74b28 100644 --- a/src/pylorax/__init__.py +++ b/src/pylorax/__init__.py @@ -96,6 +96,9 @@ class Lorax(BaseLoraxClass): self.conf.add_section("templates") self.conf.set("templates", "ramdisk", "ramdisk.ltmpl") + self.conf.add_section("ramdisk") + self.conf.set("ramdisk", "style", "initramfs") + # read the config file if os.path.isfile(conf_file): self.conf.read(conf_file) @@ -197,7 +200,8 @@ class Lorax(BaseLoraxClass): # set up install tree logger.info("setting up install tree") self.installtree = LoraxInstallTree(self.yum, self.basearch, - self.libdir, self.workdir) + self.libdir, self.workdir, + self.conf.get("ramdisk", "style")) # set up required build parameters logger.info("setting up build parameters") diff --git a/src/pylorax/installtree.py b/src/pylorax/installtree.py index 9883bba..9704769 100644 --- a/src/pylorax/installtree.py +++ b/src/pylorax/installtree.py @@ -39,16 +39,33 @@ from sysutils import * class LoraxInstallTree(BaseLoraxClass): - def __init__(self, yum, basearch, libdir, workdir): + def __init__(self, yum, basearch, libdir, workdir, style): BaseLoraxClass.__init__(self) self.yum = yum self.root = self.yum.installroot self.basearch = basearch self.libdir = libdir self.workdir = workdir + self.style = style self.lcmds = constants.LoraxRequiredCommands() + if self.style == 'initramfs': + self.make_initrd = self.make_initramfs + + def compress(self, initrd, kernel, compression="xz"): + start = time.time() + logger.debug("creating {0}-style initrd".format(self.style)) + # move corresponding modules to the tree + shutil.move(joinpaths(self.workdir, kernel.version), + joinpaths(self.root, "modules")) + result = self.make_initrd(initrd, kernel, compression) + # move modules out of the tree again + shutil.move(joinpaths(self.root, "modules", kernel.version), + self.workdir) + elapsed = time.time() - start + return result, elapsed + def remove_locales(self): chroot = lambda: os.chroot(self.root) @@ -506,13 +523,8 @@ class LoraxInstallTree(BaseLoraxClass): dst = joinpaths(self.root, "sbin") shutil.copy2(src, dst) - def compress(self, initrd, kernel): + def make_initramfs(self, initrd, kernel, type="xz"): chdir = lambda: os.chdir(self.root) - start = time.time() - - # move corresponding modules to the tree - shutil.move(joinpaths(self.workdir, kernel.version), - joinpaths(self.root, "modules")) find = subprocess.Popen([self.lcmds.FIND, "."], stdout=subprocess.PIPE, preexec_fn=chdir) @@ -525,13 +537,8 @@ class LoraxInstallTree(BaseLoraxClass): gzipped.write(cpio.stdout.read()) gzipped.close() - # move modules out of the tree again - shutil.move(joinpaths(self.root, "modules", kernel.version), - self.workdir) - - elapsed = time.time() - start + return True - return True, elapsed @property def kernels(self): -- 1.7.4 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list