#!/usr/bin/env python # Gentoo 'py.test' wrapper script import os import re import subprocess import sys EPYTHON_re = re.compile(r"^python(\d+\.\d+)$") EPYTHON = os.environ.get("EPYTHON") if EPYTHON: EPYTHON_matched = EPYTHON_re.match(EPYTHON) if EPYTHON_matched: PYTHON_ABI = EPYTHON_matched.group(1) else: sys.stderr.write("EPYTHON variable has unrecognized value '%s'\n" % EPYTHON) sys.exit(1) else: try: eselect_process = subprocess.Popen(["/usr/bin/eselect", "python", "show"], stdout=subprocess.PIPE) if eselect_process.wait() != 0: raise ValueError except (OSError, ValueError): sys.stderr.write("Execution of 'eselect python show' failed\n") sys.exit(1) eselect_output = eselect_process.stdout.read() if not isinstance(eselect_output, str): # Python 3 eselect_output = eselect_output.decode() EPYTHON_matched = EPYTHON_re.match(eselect_output) if EPYTHON_matched: PYTHON_ABI = EPYTHON_matched.group(1) else: sys.stderr.write("'eselect python show' printed unrecognized value '%s" % eselect_output) sys.exit(1) target_executable = "%s-%s" % (sys.argv[0], PYTHON_ABI) if not os.path.exists(target_executable): sys.stderr.write("'%s' does not exist\n" % target_executable) sys.exit(1) os.execv(target_executable, sys.argv)