From 929acc4e551448a68411968fb50336ad51ed4d3c Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 17 Mar 2018 14:10:32 -0400 Subject: Setuptools now vendors its own direct dependencies (packaging, six, pyparsing). Ref #1296. --- pavement.py | 49 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) (limited to 'pavement.py') 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')) -- cgit v1.2.1