projects
/
mirror
/
dsa-puppet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
df33326
)
Use a regular pipe to transport apt's output
author
Peter Palfrader
<peter@palfrader.org>
Tue, 14 May 2013 20:34:53 +0000
(22:34 +0200)
committer
Peter Palfrader
<peter@palfrader.org>
Tue, 14 May 2013 20:56:22 +0000
(22:56 +0200)
modules/porterbox/files/dd-schroot-cmd
patch
|
blob
|
history
diff --git
a/modules/porterbox/files/dd-schroot-cmd
b/modules/porterbox/files/dd-schroot-cmd
index
e82a71c
..
76f3c9d
100755
(executable)
--- 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)]
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:
if pid == pty.CHILD:
+ os.close(r)
fd = os.open("/dev/null", os.O_RDWR)
os.dup2(fd, 0) # stdin
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.execlp(cmd[0], *cmd)
+ os.close(w)
try:
while 1:
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
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
p,v = os.waitpid(pid, 0)
s,r = WrappedRunner.get_ret(v)
return s,r