pld-builder.new: PLD_Builder/gpg.py Use Popen3 so we won't have zo...

arekm arekm at pld-linux.org
Tue Nov 20 23:05:02 CET 2007


Author: arekm                        Date: Tue Nov 20 22:05:02 2007 GMT
Module: pld-builder.new               Tag: HEAD
---- Log message:
Use Popen3 so we won't have zombies.

---- Files affected:
pld-builder.new/PLD_Builder:
   gpg.py (1.15 -> 1.16) 

---- Diffs:

================================================================
Index: pld-builder.new/PLD_Builder/gpg.py
diff -u pld-builder.new/PLD_Builder/gpg.py:1.15 pld-builder.new/PLD_Builder/gpg.py:1.16
--- pld-builder.new/PLD_Builder/gpg.py:1.15	Tue Nov 20 22:15:24 2007
+++ pld-builder.new/PLD_Builder/gpg.py	Tue Nov 20 23:04:57 2007
@@ -21,31 +21,35 @@
     object.
     """
 
-    (gpg_out, gpg_in, gpg_err) = popen2.popen3("gpg --batch --no-tty --decrypt")
+    gpg_run = popen2.Popen3("gpg --batch --no-tty --decrypt", True)
     try:
-        body = pipeutil.rw_pipe(buf, gpg_in, gpg_out)
+        body = pipeutil.rw_pipe(buf, gpg_run.tochild, gpg_run.fromchild)
     except OSError, e:
         __gpg_close([gpg_out, gpg_err, gpg_in])
+        gpg_run.wait()
         log.error("gnupg signing failed, does gpg binary exist? : %s" % e)
         raise
 
     rx = re.compile("^gpg: (Good signature from|                aka) .*<([^>]+)>")
     emails = []
-    for l in gpg_err.xreadlines():
+    for l in gpg_run.childerr.xreadlines():
         m = rx.match(l)
         if m:
             emails.append(m.group(2))
-    __gpg_close([gpg_out, gpg_err, gpg_in])
+    __gpg_close([gpg_run.fromchild, gpg_run.childerr, gpg_run.tochild])
+    gpg_run.wait()
     return (emails, body)
 
 def sign(buf):
-    (gpg_out, gpg_in, gpg_err) = popen2.popen3("gpg --batch --no-tty --clearsign")
+    gpg_run  = popen2.Popen3("gpg --batch --no-tty --clearsign", True)
     try:
-        body = pipeutil.rw_pipe(buf, gpg_in, gpg_out)
+        body = pipeutil.rw_pipe(buf, gpg_run.tochild, gpg_run.fromchild)
     except OSError, e:
         __gpg_close([gpg_out, gpg_err, gpg_in])
+        gpg_run.wait()
         log.error("gnupg signing failed, does gpg binary exist? : %s" % e)
         raise
 
-    __gpg_close([gpg_out, gpg_err, gpg_in])
+    __gpg_close([gpg_run.fromchild, gpg_run.childerr, gpg_run.tochild])
+    gpg_run.wait()
     return body
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/pld-builder.new/PLD_Builder/gpg.py?r1=1.15&r2=1.16&f=u



More information about the pld-cvs-commit mailing list