aboutsummaryrefslogtreecommitdiffstats
path: root/pavement.py
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2018-03-17 14:10:32 -0400
committerJason R. Coombs <jaraco@jaraco.com>2018-03-17 14:10:32 -0400
commit929acc4e551448a68411968fb50336ad51ed4d3c (patch)
tree6eb60f4a8825bd6180746a984c423b15a5d57281 /pavement.py
parentd0f7a33daba39f60aa402c094cd4276b8b6ce462 (diff)
downloadexternal_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.py49
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'))