Kaydet (Commit) 5ac6d80c authored tarafından Éric Araujo's avatar Éric Araujo

Also close file descriptors from os.popen and subprocess.Popen

üst 25b57413
...@@ -343,22 +343,26 @@ class bdist_rpm(Command): ...@@ -343,22 +343,26 @@ class bdist_rpm(Command):
src_rpm, non_src_rpm, spec_path) src_rpm, non_src_rpm, spec_path)
out = os.popen(q_cmd) out = os.popen(q_cmd)
binary_rpms = [] try:
source_rpm = None binary_rpms = []
while True: source_rpm = None
line = out.readline() while True:
if not line: line = out.readline()
break if not line:
l = line.strip().split() break
assert(len(l) == 2) l = line.strip().split()
binary_rpms.append(l[1]) assert(len(l) == 2)
# The source rpm is named after the first entry in the spec file binary_rpms.append(l[1])
if source_rpm is None: # The source rpm is named after the first entry in the spec file
source_rpm = l[0] if source_rpm is None:
source_rpm = l[0]
status = out.close()
if status: status = out.close()
raise DistutilsExecError("Failed to execute: %s" % repr(q_cmd)) if status:
raise DistutilsExecError("Failed to execute: %s" % repr(q_cmd))
finally:
out.close()
self.spawn(rpm_cmd) self.spawn(rpm_cmd)
......
...@@ -263,10 +263,12 @@ def query_vcvarsall(version, arch="x86"): ...@@ -263,10 +263,12 @@ def query_vcvarsall(version, arch="x86"):
popen = subprocess.Popen('"%s" %s & set' % (vcvarsall, arch), popen = subprocess.Popen('"%s" %s & set' % (vcvarsall, arch),
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE) stderr=subprocess.PIPE)
try:
stdout, stderr = popen.communicate() stdout, stderr = popen.communicate()
if popen.wait() != 0: if popen.wait() != 0:
raise DistutilsPlatformError(stderr.decode("mbcs")) raise DistutilsPlatformError(stderr.decode("mbcs"))
finally:
popen.close()
stdout = stdout.decode("mbcs") stdout = stdout.decode("mbcs")
for line in stdout.split("\n"): for line in stdout.split("\n"):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment