X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=modules%2Fporterbox%2Ffiles%2Fdd-schroot-cmd;h=76f3c9d113d62253554764432da9bf2b57fd3518;hb=206524a32e769b40cd66b33b5468d3a64a9b5b4a;hp=e82a71c889473dce58a00ef405e996575809de55;hpb=1af943401cb3dea6a550030e3c6ad3043c463e03;p=mirror%2Fdsa-puppet.git diff --git a/modules/porterbox/files/dd-schroot-cmd b/modules/porterbox/files/dd-schroot-cmd index e82a71c88..76f3c9d11 100755 --- a/modules/porterbox/files/dd-schroot-cmd +++ b/modules/porterbox/files/dd-schroot-cmd @@ -106,20 +106,26 @@ class WrappedRunner(): cmdstr = ' '.join(pipes.quote(s) for s in cmd) cmd = ['unshare', '--uts', '--ipc', '--net', '--'] cmd += ['sh', '-c', 'ip addr add 127.0.0.1/8 dev lo && ip link set dev lo up && %s'%(cmdstr)] - pid, fd = pty.fork() + (r, w) = os.pipe() + pid, ptyfd = pty.fork() if pid == pty.CHILD: + os.close(r) fd = os.open("/dev/null", os.O_RDWR) os.dup2(fd, 0) # stdin + os.dup2(w, 1) # stdout + os.dup2(w, 2) # stderr os.execlp(cmd[0], *cmd) + os.close(w) try: while 1: - b = os.read(fd, 1) + b = os.read(r, 1) if b == "": break sys.stdout.write(b) except OSError, e: if e[0] == EIO: pass else: raise - os.close(fd) + os.close(r) + os.close(ptyfd) # we don't care about that one p,v = os.waitpid(pid, 0) s,r = WrappedRunner.get_ret(v) return s,r