From 5f8bd237d10d29b62555be36976205ff3089cdc1 Mon Sep 17 00:00:00 2001 From: lxnay Date: Thu, 5 Feb 2009 12:13:40 +0000 Subject: [PATCH] Molecule: implement prechroot facility git-svn-id: http://svn.sabayonlinux.org/projects/molecule/trunk@2992 cd1c1023-2f26-0410-ae45-c471fc1f0318 --- molecule/handlers.py | 2 +- molecule/settings.py | 2 +- molecule/utils.py | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/molecule/handlers.py b/molecule/handlers.py index 0b97e65..8de8def 100644 --- a/molecule/handlers.py +++ b/molecule/handlers.py @@ -147,7 +147,7 @@ class ChrootHandler(GenericHandlerInterface): dest_exec = tmp_exec[len(self.dest_dir):] if not dest_exec.startswith("/"): dest_exec = "/%s" % (dest_exec,) - rc = molecule.utils.exec_chroot_cmd([dest_exec], self.dest_dir) + rc = molecule.utils.exec_chroot_cmd([dest_exec], self.dest_dir, self.metadata.get('prechroot',[])) if rc != 0: self.Output.updateProgress("[%s|%s] %s: %s" % (blue("ChrootHandler"),darkred(self.spec_name),_("inner chroot hook failed"),rc,)) return rc diff --git a/molecule/settings.py b/molecule/settings.py index 215a6ca..294bf0b 100644 --- a/molecule/settings.py +++ b/molecule/settings.py @@ -168,7 +168,7 @@ class SpecParser: self.parser_data_path = { 'prechroot': { 'cb': valid_exec, - 've': ve_string_stripper, + 've': ve_string_splitter, }, 'release_string': { 'cb': ne_string, # validation callback diff --git a/molecule/utils.py b/molecule/utils.py index 9136dec..ce94917 100644 --- a/molecule/utils.py +++ b/molecule/utils.py @@ -49,17 +49,17 @@ def exec_cmd(args): # wildcards automatically ==> rsync no workie return subprocess.call(' '.join(args), shell = True) -def exec_chroot_cmd(args, chroot): +def exec_chroot_cmd(args, chroot, pre_chroot = []): pid = os.fork() if pid == 0: os.chroot(chroot) os.chdir("/") - p = subprocess.Popen(args) - rc = p.wait() + myargs = pre_chroot+args + rc = subprocess.call(myargs) os._exit(rc) else: - pid, status = os.waitpid(pid,0) - return status + rcpid, rc = os.waitpid(pid,0) + return rc def empty_dir(dest_dir): for el in os.listdir(dest_dir):