Commit a36dbf75 authored by Jason R. Coombs's avatar Jason R. Coombs

In the bootstrap script, generate a requirements.txt file and use it to...

In the bootstrap script, generate a requirements.txt file and use it to install the dependencies just in time to make them available long enough to generate the egg info.
parent ff371f18
......@@ -13,3 +13,4 @@ setuptools.egg-info
*.swp
*~
.hg*
requirements.txt
......@@ -19,7 +19,7 @@ script:
- env
# update egg_info based on setup.py in checkout
- rwt -- bootstrap.py
- python bootstrap.py
- tox
......
......@@ -5,13 +5,18 @@ environment by creating a minimal egg-info directory and then invoking the
egg-info command to flesh out the egg-info directory.
"""
__requires__ = ['packaging', 'six', 'appdirs']
import os
import io
import re
import contextlib
import tempfile
import shutil
import sys
import textwrap
import subprocess
import pip
minimal_egg_info = textwrap.dedent("""
[distutils.commands]
egg_info = setuptools.command.egg_info:egg_info
......@@ -54,6 +59,35 @@ def run_egg_info():
subprocess.check_call(cmd)
def gen_deps():
with io.open('setup.py', encoding='utf-8') as strm:
text = strm.read()
pattern = r'install_requires=\[(.*?)\]'
match = re.search(pattern, text, flags=re.M|re.DOTALL)
reqs = eval(match.group(1).replace('\n', ''))
with io.open('requirements.txt', 'w', encoding='utf-8') as reqs_file:
reqs_file.write('\n'.join(reqs))
@contextlib.contextmanager
def install_deps():
"Just in time make the deps available"
gen_deps()
tmpdir = tempfile.mkdtemp()
args = [
'install',
'-t', tmpdir,
'-r', 'requirements.txt',
]
pip.main(args)
os.environ['PYTHONPATH'] = tmpdir
try:
yield tmpdir
finally:
shutil.rmtree(tmpdir)
if __name__ == '__main__':
ensure_egg_info()
run_egg_info()
with install_deps():
run_egg_info()
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