summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-03-08 18:54:02 -0800
committerZac Medico <zmedico@gentoo.org>2012-03-08 18:54:02 -0800
commitf1475a5cb14539fc412d8fca393b7473399d9a5b (patch)
tree54dedb41cd49827a1619dbb5d8450bf5cf020056 /pym
parent6486c0957cb54adf8ec45fb07d62750b77680632 (diff)
downloadportage-f1475a5cb14539fc412d8fca393b7473399d9a5b.tar.gz
portage-f1475a5cb14539fc412d8fca393b7473399d9a5b.tar.bz2
portage-f1475a5cb14539fc412d8fca393b7473399d9a5b.zip
Use Popen to avoid unnecessary shell.
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/actions.py53
1 files changed, 45 insertions, 8 deletions
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
index 096dc3a95..090d9e1bf 100644
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@ -27,7 +27,6 @@ portage.proxy.lazyimport.lazyimport(globals(),
from portage import os
from portage import shutil
-from portage import subprocess_getstatusoutput
from portage import _unicode_decode
from portage.cache.cache_errors import CacheError
from portage.const import GLOBAL_CONFIG_PATH
@@ -1357,7 +1356,14 @@ def action_info(settings, trees, myopts, myfiles):
lastSync = "Unknown"
append("Timestamp of tree: %s" % (lastSync,))
- output=subprocess_getstatusoutput("distcc --version")
+ try:
+ proc = subprocess.Popen(["distcc", "--version"],
+ stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ except OSError:
+ output = (1, None)
+ else:
+ output = _unicode_decode(proc.communicate()[0]).rstrip("\n")
+ output = (proc.wait(), output)
if output[0] == os.EX_OK:
distcc_str = output[1].split("\n", 1)[0]
if "distcc" in settings.features:
@@ -1366,7 +1372,14 @@ def action_info(settings, trees, myopts, myfiles):
distcc_str += " [disabled]"
append(distcc_str)
- output=subprocess_getstatusoutput("ccache -V")
+ try:
+ proc = subprocess.Popen(["ccache", "-V"],
+ stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ except OSError:
+ output = (1, None)
+ else:
+ output = _unicode_decode(proc.communicate()[0]).rstrip("\n")
+ output = (proc.wait(), output)
if output[0] == os.EX_OK:
ccache_str = output[1].split("\n", 1)[0]
if "ccache" in settings.features:
@@ -3038,7 +3051,7 @@ def getgccversion(chost):
return: the current in-use gcc version
"""
- gcc_ver_command = 'gcc -dumpversion'
+ gcc_ver_command = ['gcc', '-dumpversion']
gcc_ver_prefix = 'gcc-'
gcc_not_found_error = red(
@@ -3047,16 +3060,40 @@ def getgccversion(chost):
"!!! other terminals also.\n"
)
- mystatus, myoutput = subprocess_getstatusoutput("gcc-config -c")
+ try:
+ proc = subprocess.Popen(["gcc-config", "-c"],
+ stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ except OSError:
+ myoutput = None
+ mystatus = 1
+ else:
+ myoutput = _unicode_decode(proc.communicate()[0]).rstrip("\n")
+ mystatus = proc.wait()
if mystatus == os.EX_OK and myoutput.startswith(chost + "-"):
return myoutput.replace(chost + "-", gcc_ver_prefix, 1)
- mystatus, myoutput = subprocess_getstatusoutput(
- chost + "-" + gcc_ver_command)
+ try:
+ proc = subprocess.Popen(
+ [chost + "-" + gcc_ver_command[0]] + gcc_ver_command[1:],
+ stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ except OSError:
+ myoutput = None
+ mystatus = 1
+ else:
+ myoutput = _unicode_decode(proc.communicate()[0]).rstrip("\n")
+ mystatus = proc.wait()
if mystatus == os.EX_OK:
return gcc_ver_prefix + myoutput
- mystatus, myoutput = subprocess_getstatusoutput(gcc_ver_command)
+ try:
+ proc = subprocess.Popen(gcc_ver_command,
+ stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ except OSError:
+ myoutput = None
+ mystatus = 1
+ else:
+ myoutput = _unicode_decode(proc.communicate()[0]).rstrip("\n")
+ mystatus = proc.wait()
if mystatus == os.EX_OK:
return gcc_ver_prefix + myoutput