1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
8 from config import config
11 return re.sub("([\"\\\\$`])", r"\\\1", cmd)
13 def command(cmd, user = None):
15 user = config.builder_user
16 return "%s sudo chroot %s su - %s -c \"export LC_ALL=C; %s\"" \
17 % (config.sudo_chroot_wrapper, config.chroot, user, quote(cmd))
20 return "%s sudo chroot %s /bin/sh -c \"export LC_ALL=C; %s\"" \
21 % (config.sudo_chroot_wrapper, config.chroot, quote(cmd))
23 def popen(cmd, user = "builder", mode = "r"):
24 f = os.popen(command(cmd, user), mode)
27 def run(cmd, user = "builder", logfile = None, logstdout = None):
28 c = command(cmd, user)
31 c = "%s 2>&1 | /usr/bin/tee -a %s" % (c, logfile)
33 c = "%s >> %s 2>&1" % (c, logfile)
44 def cp(file, outfile, user="builder", rm=False):
46 m.update(str(random.sample(xrange(100000), 500)))
47 digest = m.hexdigest()
49 marker_start = "--- FILE BEGIN DIGEST %s ---" % digest
50 marker_end = "--- FILE END DIGEST %s ---" % digest
52 f = open(outfile, 'wb')
53 cmd = "echo \"%s\"; cat %s; echo \"%s\"" % (marker_start, file, marker_end)
55 cmd += "; rm %s" % file
56 c = command(cmd, user)
61 if not marker and l.strip() == marker_start:
64 me = l.find(marker_end)