[dak/master] Install default SIGPIPE handler before calling dpkg-deb.
Signed-off-by: Torsten Werner <twerner@debian.org>
---
daklib/dbconn.py | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/daklib/dbconn.py b/daklib/dbconn.py
index d39f8c5..5c987bd 100755
--- a/daklib/dbconn.py
+++ b/daklib/dbconn.py
@@ -39,6 +39,7 @@ import re
import psycopg2
import traceback
import commands
+import signal
try:
# python >= 2.6
@@ -487,6 +488,11 @@ __all__.append('BinContents')
################################################################################
+def subprocess_setup():
+ # Python installs a SIGPIPE handler by default. This is usually not what
+ # non-Python subprocesses expect.
+ signal.signal(signal.SIGPIPE, signal.SIG_DFL)
+
class DBBinary(ORMObject):
def __init__(self, package = None, source = None, version = None, \
maintainer = None, architecture = None, poolfile = None, \
@@ -525,7 +531,8 @@ class DBBinary(ORMObject):
package does not contain any regular file.
'''
fullpath = self.poolfile.fullpath
- dpkg = Popen(['dpkg-deb', '--fsys-tarfile', fullpath], stdout = PIPE)
+ dpkg = Popen(['dpkg-deb', '--fsys-tarfile', fullpath], stdout = PIPE,
+ preexec_fn = subprocess_setup)
tar = TarFile.open(fileobj = dpkg.stdout, mode = 'r|')
for member in tar.getmembers():
if not member.isdir():
--
1.7.2.5
Reply to: