diff --git a/src/mio/daemon_cage.py b/src/mio/daemon_cage.py index bf5df16e4ed2abf303110438b4e5c90673c1cbf2..2fcc3799dc11f094249ebf08a77af66633a487c5 100755 --- a/src/mio/daemon_cage.py +++ b/src/mio/daemon_cage.py @@ -8,13 +8,13 @@ import subprocess import sys import time -def system(command): +def system(command, prefix): null = open("/dev/null") p = subprocess.Popen(command, stdin=null, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, - cwd="/", + cwd=prefix if prefix else "/", close_fds=True, shell=True) null.close() diff --git a/src/mio/node.py b/src/mio/node.py index 30f8eeedf5a63e020c231dbcdee502024e1bbb13..9c2a85d6502a61b897d77d81d0ba4d77aa779fcd 100755 --- a/src/mio/node.py +++ b/src/mio/node.py @@ -128,7 +128,7 @@ class group_node(target_node): log(DEBUG, "[%s].do_trig %s -> %s" % (self.name, run_pre, result)) if result and run_pre: for a in self.pre: - a.run("pre") + a.run("pre", prefix) return result @@ -139,7 +139,7 @@ class group_node(target_node): for t in self.target: t.install(prefix, backup) for a in self.post: - a.run("post") + a.run("post", prefix) def do_test(self, prefix): for d in self.dependency: @@ -523,9 +523,9 @@ class command_node: def __init__(self, decl): self.decl = decl - def run(self, when): + def run(self, when, prefix=None): log(NORMAL, declaration(self), "doing '%s'" % self.decl.command[0]) - mio.daemon_cage.system(self.decl.command[0]) + mio.daemon_cage.system(self.decl.command[0], prefix) def test(self, when): log(NORMAL, declaration(self), "doing '%s'" % self.decl.command[0]) @@ -534,12 +534,13 @@ class script_node: def __init__(self, decl): self.decl = decl - def run(self, when): + def run(self, when, prefix): scripts = self.decl.scripts[0:] name = self.decl.script[0] script = mio.filecache.loadscript(self.decl._url.path, scripts, name) log(NORMAL, declaration(self), "running '%s'" % name) - mio.daemon_cage.system("%s %s %s" % (script.filename, name, when)) + mio.daemon_cage.system("%s %s %s" % (script.filename, name, when), + prefix) def test(self, when): dir = os.path.dirname(self.decl._url)