--- wrapper.py.org 2011-03-21 23:04:02.000000000 +0300 +++ wrapper.py 2011-03-22 00:05:55.000000000 +0300 @@ -26,13 +26,15 @@ # Dependencies # ------------------------------------------------------------------------ -import sys, os, types, string +import sys, os, types, string, subprocess from WebappConfig.debug import OUT from WebappConfig.debug import OUT from WebappConfig.version import WCVERSION +from subprocess import PIPE + # ======================================================================== # Portage Wrapper # ------------------------------------------------------------------------ @@ -54,16 +56,15 @@ return portage.settings['CONFIG_PROTECT'] elif pm == "paludis": - cmd="paludis --log-level silent --no-color --environment-variable %s/%s CONFIG_PROTECT" % (cat,pn) + cmd="cave --log-level silent --colour no print-id-environment-variable --variable-name CONFIG_PROTECT %s/%s::installed" % (cat,pn) - fi, fo, fe = os.popen3(cmd) - fi.close() - result_lines = fo.readlines() - error_lines = fe.readlines() - fo.close() - fe.close() + p = subprocess.Popen(cmd, shell = True, stdout = PIPE, stderr = PIPE) + result_lines = p.stdout.readlines() + error_lines = p.stderr.readlines() + p.stdout.close() + p.stderr.close() - return string.join(result_lines, ' ').strip() + return string.join(result_lines, ' ').replace('CONFIG_PROTECT=', '').strip() else: OUT.die("Unknown package manager: " + pm) @@ -100,17 +101,18 @@ pn = config.maybe_get('pn') if cat and pn: - cmd="paludis --log-level silent --no-color --environment-variable %s/%s ROOT" % (cat,pn) - - fi, fo, fe = os.popen3(cmd) - fi.close() - result_lines = fo.readlines() - error_lines = fe.readlines() - fo.close() - fe.close() + cmd="cave --log-level silent --colour no print-id-environment-variable --variable-name ROOT %s/%s::installed" % (cat,pn) - if result_lines[0].strip(): - return result_lines[0].strip() + p = subprocess.Popen(cmd, shell = True, stdout = PIPE, stderr = PIPE) + result_lines = p.stdout.readlines() + error_lines = p.stderr.readlines() + p.stdout.close() + p.stderr.close() + # TODO Check if some error occurs... + + path = result_lines[0].strip().replace('ROOT=', '') + if path: + return path else: return '/' else: @@ -145,14 +147,13 @@ elif pm == "paludis": - cmd="paludis --best-version %s" % (full_name) + cmd="cave print-best-version '%s'" % (full_name) - fi, fo, fe = os.popen3(cmd) - fi.close() - result_lines = fo.readlines() - error_lines = fe.readlines() - fo.close() - fe.close() + p = subprocess.Popen(cmd, shell = True, stdout = PIPE, stderr = PIPE) + result_lines = p.stdout.readlines() + error_lines = p.stderr.readlines() + p.stdout.close() + p.stderr.close() if error_lines: for i in error_lines: