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.
This commit is contained in:
parent
ff371f18f0
commit
a36dbf75bd
|
@ -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
|
||||
|
||||
|
|
40
bootstrap.py
40
bootstrap.py
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue