diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2018-03-17 14:10:32 -0400 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2018-03-17 14:10:32 -0400 |
commit | 929acc4e551448a68411968fb50336ad51ed4d3c (patch) | |
tree | 6eb60f4a8825bd6180746a984c423b15a5d57281 /pavement.py | |
parent | d0f7a33daba39f60aa402c094cd4276b8b6ce462 (diff) | |
download | external_python_setuptools-929acc4e551448a68411968fb50336ad51ed4d3c.tar.gz external_python_setuptools-929acc4e551448a68411968fb50336ad51ed4d3c.tar.bz2 external_python_setuptools-929acc4e551448a68411968fb50336ad51ed4d3c.zip |
Setuptools now vendors its own direct dependencies (packaging, six, pyparsing). Ref #1296.
Diffstat (limited to 'pavement.py')
-rw-r--r-- | pavement.py | 49 |
1 files changed, 44 insertions, 5 deletions
diff --git a/pavement.py b/pavement.py index f85617d4..ca54e61f 100644 --- a/pavement.py +++ b/pavement.py @@ -11,6 +11,32 @@ def remove_all(paths): @task def update_vendored(): + update_pkg_resources() + update_setuptools() + + +def rewrite_packaging(pkg_files, new_root): + """ + Rewrite imports in packaging to redirect to vendored copies. + """ + for file in pkg_files.glob('*.py'): + text = file.text() + text = re.sub(r' (pyparsing|six)', rf' {new_root}.\1', text) + file.write_text(text) + + +def install(vendor): + clean(vendor) + install_args = [ + 'install', + '-r', str(vendor / 'vendored.txt'), + '-t', str(vendor), + ] + pip.main(install_args) + remove_all(vendor.glob('*.dist-info')) + remove_all(vendor.glob('*.egg-info')) + +def update_pkg_resources(): vendor = Path('pkg_resources/_vendor') # pip uninstall doesn't support -t, so do it manually remove_all(vendor.glob('packaging*')) @@ -23,10 +49,23 @@ def update_vendored(): '-t', str(vendor), ] pip.main(install_args) - packaging = vendor / 'packaging' - for file in packaging.glob('*.py'): - text = file.text() - text = re.sub(r' (pyparsing|six)', r' pkg_resources.extern.\1', text) - file.write_text(text) + rewrite_packaging(vendor / 'packaging', 'pkg_resources.extern.') + remove_all(vendor.glob('*.dist-info')) + remove_all(vendor.glob('*.egg-info')) + + +def update_setuptools(): + vendor = Path('setuptools/_vendor') + # pip uninstall doesn't support -t, so do it manually + remove_all(vendor.glob('packaging*')) + remove_all(vendor.glob('six*')) + remove_all(vendor.glob('pyparsing*')) + install_args = [ + 'install', + '-r', str(vendor / 'vendored.txt'), + '-t', str(vendor), + ] + pip.main(install_args) + rewrite_packaging(vendor / 'packaging', 'setuptools.extern') remove_all(vendor.glob('*.dist-info')) remove_all(vendor.glob('*.egg-info')) |