use tox env when asking pbr for its name

It seems pbr needs to be installed in order to get its name, so use tox
instead of the system python.

Change-Id: I8809978b23430daacfc6a48d1f4bc84cce24c003
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
Doug Hellmann
2017-02-08 07:52:56 -05:00
parent 3e74275929
commit d1566749d6

View File

@@ -23,9 +23,22 @@ def get_sdist_name(workdir, repo):
if not os.path.exists(os.path.join(dest, 'setup.py')):
# Not a python project
return None
cmd = ['python', 'setup.py', '--name']
use_tox = repo.endswith('/pbr')
if use_tox and not os.path.exists(os.path.join(dest, '.tox', 'venv')):
# Use tox to set up a virtualenv so we can install the
# dependencies for the package. This only seems to be
# necessary for pbr, but...
subprocess.check_output(
['tox', '-e', 'venv', '--notest'],
cwd=dest,
)
if use_tox:
python = '.tox/venv/bin/python'
else:
python = 'python'
# Run it once and discard the result to ensure any setup_requires
# dependencies are installed.
cmd = [python, 'setup.py', '--name']
subprocess.check_output(cmd, cwd=dest)
# Run it again to get a clean version of the name.
name = subprocess.check_output(cmd, cwd=dest).strip()