From 20844255d47fc5d616ee8e2389079bf3f13a701e Mon Sep 17 00:00:00 2001 From: Max Rees Date: Wed, 18 Apr 2018 18:38:44 -0400 Subject: user/py3-setuptools: upgrade to 39.0.1 Changelog: https://github.com/pypa/setuptools/blob/v39.0.1/CHANGES.rst Commits: https://github.com/pypa/setuptools/compare/v38.4.0...v39.0.1 --- user/py3-setuptools/APKBUILD | 12 +- user/py3-setuptools/update-wheel-tests.patch | 460 +++++++++++++++++++++++++++ 2 files changed, 467 insertions(+), 5 deletions(-) create mode 100644 user/py3-setuptools/update-wheel-tests.patch (limited to 'user/py3-setuptools') diff --git a/user/py3-setuptools/APKBUILD b/user/py3-setuptools/APKBUILD index ba5e1aebf..ed0269de7 100644 --- a/user/py3-setuptools/APKBUILD +++ b/user/py3-setuptools/APKBUILD @@ -2,10 +2,10 @@ # Maintainer: Max Rees pkgname=py3-setuptools _pkgname=setuptools -pkgver=38.4.0 +pkgver=39.0.1 pkgrel=1 pkgdesc="A collection of enhancements to the Python distutils" -url="http://pypi.python.org/pypi/setuptools" +url="http://pypi.python.org/project/setuptools" arch="noarch" license="MIT" depends="python3" @@ -15,7 +15,8 @@ options="!check" # Circular dependency with py3-tox. Passes on x86_64 subpackages="py3-easy_install:easy_install" # Note: PyPI download is missing tests/requirements.txt source="$pkgname-$pkgver.tar.gz::https://github.com/pypa/$_pkgname/archive/v$pkgver.tar.gz - pythonpath.patch" + pythonpath.patch + update-wheel-tests.patch" builddir="$srcdir/$_pkgname-$pkgver" build() { @@ -41,5 +42,6 @@ easy_install() { mv "$pkgdir"/usr/bin/easy_install* "$subpkgdir/usr/bin" } -sha512sums="81903ee7ecb19715bbafe7b4e6878d3af5f801a9ff3334e82a599a81a8e6430443c4b765180c53c3c9cdcea338b3fff0bdf26245bc9d2da7d5d41b745de73a24 py3-setuptools-38.4.0.tar.gz -0c80433534dbb715829f48713690a72a68f6cb7e337215c9aa507df0fbb2a2a242f54d42fab848c6f03729f155dfe0ccb819a6f5d5230e2195e94e20094eec0b pythonpath.patch" +sha512sums="34df8f10e89825975c82059c759690a2cc1486fc84c71a76875b92c2452529fbdd628e11e3043e479ea3f031af18b37a37b86d2a8d2505c300188eccdc109332 py3-setuptools-39.0.1.tar.gz +0c80433534dbb715829f48713690a72a68f6cb7e337215c9aa507df0fbb2a2a242f54d42fab848c6f03729f155dfe0ccb819a6f5d5230e2195e94e20094eec0b pythonpath.patch +5262d1dcdbf8ab40eb4e9fde3e8496e6b4e9809d6056e6069fc11ef5390e064dfef9f7eccec3452e7566b88ab861bf544b57dce249c4291142f307bd6465e45a update-wheel-tests.patch" diff --git a/user/py3-setuptools/update-wheel-tests.patch b/user/py3-setuptools/update-wheel-tests.patch new file mode 100644 index 000000000..769ef470f --- /dev/null +++ b/user/py3-setuptools/update-wheel-tests.patch @@ -0,0 +1,460 @@ +From 41882016dbd6b334e6e10e2c3ac5afb9f5793ede Mon Sep 17 00:00:00 2001 +From: Paul Ganssle +Date: Fri, 6 Apr 2018 17:07:44 -0400 +Subject: [PATCH 1/2] Update wheel tests to reflect latest version + +--- + setuptools/tests/test_wheel.py | 16 ---------------- + 1 file changed, 16 deletions(-) + +diff --git a/setuptools/tests/test_wheel.py b/setuptools/tests/test_wheel.py +index b6be6f1f0..d8d5ddb23 100644 +--- a/setuptools/tests/test_wheel.py ++++ b/setuptools/tests/test_wheel.py +@@ -161,11 +161,9 @@ def __repr__(self): + ''' + foo-1.0-py{py_version}.egg/ + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + |-- foo/ + | |-- __init__.py +@@ -196,11 +194,9 @@ def __repr__(self): + ''' + foo-1.0-py{py_version}.egg/ + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + |-- data_dir/ + | |-- data.txt +@@ -267,11 +263,9 @@ def __repr__(self): + foo-1.0-py{py_version}-{platform}.egg/ + |-- extension{shlib_ext} + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + ''' + ), +@@ -293,11 +287,9 @@ def __repr__(self): + foo-1.0-py{py_version}.egg/ + |-- header.h + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + ''' + ), +@@ -326,11 +318,9 @@ def __repr__(self): + ''' + foo-1.0-py{py_version}.egg/ + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + | |-- scripts/ + | | |-- script.py +@@ -346,11 +336,9 @@ def __repr__(self): + ''' + foo-1.0-py{py_version}.egg/ + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- requires.txt + | |-- top_level.txt + '''), +@@ -430,11 +418,9 @@ def __repr__(self): + foo-1.0-py{py_version}.egg/ + |-- foo-1.0-py{py_version}-nspkg.pth + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- namespace_packages.txt + | |-- top_level.txt + |-- foo/ +@@ -466,11 +452,9 @@ def __repr__(self): + ''' + foo-1.0-py{py_version}.egg/ + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + |-- foo/ + | |-- __init__.py + +From ed3762fc7d16174a54b2fa83af1996decafd756f Mon Sep 17 00:00:00 2001 +From: Paul Ganssle +Date: Sat, 7 Apr 2018 13:38:31 -0400 +Subject: [PATCH 2/2] Switch test_wheel over to subset-based test + +This is both compatible with the old version of wheel (last one +supported under Python 3.3) and is more in line with our commitment, +which is that the wheel install provides at least these files. +--- + setuptools/tests/test_wheel.py | 268 ++++++++++++++++++++++------------------- + 1 file changed, 142 insertions(+), 126 deletions(-) + +diff --git a/setuptools/tests/test_wheel.py b/setuptools/tests/test_wheel.py +index d8d5ddb23..150ac4c1b 100644 +--- a/setuptools/tests/test_wheel.py ++++ b/setuptools/tests/test_wheel.py +@@ -92,39 +92,49 @@ def build_wheel(extra_file_defs=None, **kwargs): + yield glob.glob(os.path.join(source_dir, 'dist', '*.whl'))[0] + + +-def tree(root): +- def depth(path): +- return len(path.split(os.path.sep)) +- def prefix(path_depth): +- if not path_depth: +- return '' +- return '| ' * (path_depth - 1) + '|-- ' +- lines = [] +- root_depth = depth(root) ++def tree_set(root): ++ contents = set() + for dirpath, dirnames, filenames in os.walk(root): +- dirnames.sort() +- filenames.sort() +- dir_depth = depth(dirpath) - root_depth +- if dir_depth > 0: +- lines.append('%s%s/' % (prefix(dir_depth - 1), +- os.path.basename(dirpath))) +- for f in filenames: +- lines.append('%s%s' % (prefix(dir_depth), f)) +- return '\n'.join(lines) + '\n' +- +- +-def _check_wheel_install(filename, install_dir, install_tree, ++ for filename in filenames: ++ contents.add(os.path.join(os.path.relpath(dirpath, root), ++ filename)) ++ return contents ++ ++ ++def flatten_tree(tree): ++ """Flatten nested dicts and lists into a full list of paths""" ++ output = set() ++ for node, contents in tree.items(): ++ if isinstance(contents, dict): ++ contents = flatten_tree(contents) ++ ++ for elem in contents: ++ if isinstance(elem, dict): ++ output |= {os.path.join(node, val) ++ for val in flatten_tree(elem)} ++ else: ++ output.add(os.path.join(node, elem)) ++ return output ++ ++ ++def format_install_tree(tree): ++ return {x.format( ++ py_version=PY_MAJOR, ++ platform=get_platform(), ++ shlib_ext=get_config_var('EXT_SUFFIX') or get_config_var('SO')) ++ for x in tree} ++ ++ ++def _check_wheel_install(filename, install_dir, install_tree_includes, + project_name, version, requires_txt): + w = Wheel(filename) + egg_path = os.path.join(install_dir, w.egg_name()) + w.install_as_egg(egg_path) +- if install_tree is not None: +- install_tree = install_tree.format( +- py_version=PY_MAJOR, +- platform=get_platform(), +- shlib_ext=get_config_var('EXT_SUFFIX') or get_config_var('SO') +- ) +- assert install_tree == tree(install_dir) ++ if install_tree_includes is not None: ++ install_tree = format_install_tree(install_tree_includes) ++ exp = tree_set(install_dir) ++ assert install_tree.issubset(exp), (install_tree - exp) ++ + metadata = PathMetadata(egg_path, os.path.join(egg_path, 'EGG-INFO')) + dist = Distribution.from_filename(egg_path, metadata=metadata) + assert dist.project_name == project_name +@@ -157,18 +167,17 @@ def __repr__(self): + setup_kwargs=dict( + packages=['foo'], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- |-- foo/ +- | |-- __init__.py +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': { ++ 'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt' ++ ], ++ 'foo': ['__init__.py'] ++ } ++ }), + ), + + dict( +@@ -190,18 +199,19 @@ def __repr__(self): + setup_kwargs=dict( + data_files=[('data_dir', ['data.txt'])], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- |-- data_dir/ +- | |-- data.txt +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': { ++ 'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt' ++ ], ++ 'data_dir': [ ++ 'data.txt' ++ ] ++ } ++ }), + ), + + dict( +@@ -258,17 +268,17 @@ def __repr__(self): + sources=['extension.c']) + ], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}-{platform}.egg/ +- |-- extension{shlib_ext} +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}-{platform}.egg': [ ++ 'extension{shlib_ext}', ++ {'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt', ++ ]}, ++ ] ++ }), + ), + + dict( +@@ -282,17 +292,17 @@ def __repr__(self): + setup_kwargs=dict( + headers=['header.h'], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- header.h +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': [ ++ 'header.h', ++ {'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt', ++ ]}, ++ ] ++ }), + ), + + dict( +@@ -314,34 +324,37 @@ def __repr__(self): + setup_kwargs=dict( + scripts=['script.py', 'script.sh'], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- | |-- scripts/ +- | | |-- script.py +- | | |-- script.sh +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': { ++ 'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt', ++ {'scripts': [ ++ 'script.py', ++ 'script.sh' ++ ]} ++ ++ ] ++ } ++ }) + ), + + dict( + id='requires1', + install_requires='foobar==2.0', +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- requires.txt +- | |-- top_level.txt +- '''), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': { ++ 'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'requires.txt', ++ 'top_level.txt', ++ ] ++ } ++ }), + requires_txt=DALS( + ''' + foobar==2.0 +@@ -413,21 +426,22 @@ def __repr__(self): + namespace_packages=['foo'], + packages=['foo.bar'], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- foo-1.0-py{py_version}-nspkg.pth +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- namespace_packages.txt +- | |-- top_level.txt +- |-- foo/ +- | |-- __init__.py +- | |-- bar/ +- | | |-- __init__.py +- '''), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': [ ++ 'foo-1.0-py{py_version}-nspkg.pth', ++ {'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'namespace_packages.txt', ++ 'top_level.txt', ++ ]}, ++ {'foo': [ ++ '__init__.py', ++ {'bar': ['__init__.py']}, ++ ]}, ++ ] ++ }), + ), + + dict( +@@ -448,20 +462,22 @@ def __repr__(self): + packages=['foo'], + data_files=[('foo/data_dir', ['foo/data_dir/data.txt'])], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- |-- foo/ +- | |-- __init__.py +- | |-- data_dir/ +- | | |-- data.txt +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': { ++ 'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt', ++ ], ++ 'foo': [ ++ '__init__.py', ++ {'data_dir': [ ++ 'data.txt', ++ ]} ++ ] ++ } ++ }), + ), + + ) -- cgit v1.2.3-70-g09d2 From 30c3def0481fc6aaf0c10cae8038b43c50bd8b0c Mon Sep 17 00:00:00 2001 From: Max Rees Date: Tue, 22 May 2018 00:48:43 -0400 Subject: user/py3-setuptools: bump to 39.1.0 Commits: https://github.com/pypa/setuptools/compare/v39.0.1...v39.1.0 Changelog: https://github.com/pypa/setuptools/blob/v39.1.0/CHANGES.rst#v3910 --- user/py3-setuptools/APKBUILD | 19 +- user/py3-setuptools/pythonpath.patch | 19 +- user/py3-setuptools/update-wheel-tests.patch | 460 --------------------------- 3 files changed, 18 insertions(+), 480 deletions(-) delete mode 100644 user/py3-setuptools/update-wheel-tests.patch (limited to 'user/py3-setuptools') diff --git a/user/py3-setuptools/APKBUILD b/user/py3-setuptools/APKBUILD index ed0269de7..6bee60420 100644 --- a/user/py3-setuptools/APKBUILD +++ b/user/py3-setuptools/APKBUILD @@ -2,21 +2,19 @@ # Maintainer: Max Rees pkgname=py3-setuptools _pkgname=setuptools -pkgver=39.0.1 -pkgrel=1 +pkgver=39.1.0 +pkgrel=0 pkgdesc="A collection of enhancements to the Python distutils" url="http://pypi.python.org/project/setuptools" arch="noarch" license="MIT" depends="python3" makedepends="python3-dev" -#checkdepends="py3-tox" -options="!check" # Circular dependency with py3-tox. Passes on x86_64 +checkdepends="py3-tox" +options="net" # Circular dependency with py3-tox. Passes on x86_64 subpackages="py3-easy_install:easy_install" -# Note: PyPI download is missing tests/requirements.txt -source="$pkgname-$pkgver.tar.gz::https://github.com/pypa/$_pkgname/archive/v$pkgver.tar.gz - pythonpath.patch - update-wheel-tests.patch" +source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz + pythonpath.patch" builddir="$srcdir/$_pkgname-$pkgver" build() { @@ -42,6 +40,5 @@ easy_install() { mv "$pkgdir"/usr/bin/easy_install* "$subpkgdir/usr/bin" } -sha512sums="34df8f10e89825975c82059c759690a2cc1486fc84c71a76875b92c2452529fbdd628e11e3043e479ea3f031af18b37a37b86d2a8d2505c300188eccdc109332 py3-setuptools-39.0.1.tar.gz -0c80433534dbb715829f48713690a72a68f6cb7e337215c9aa507df0fbb2a2a242f54d42fab848c6f03729f155dfe0ccb819a6f5d5230e2195e94e20094eec0b pythonpath.patch -5262d1dcdbf8ab40eb4e9fde3e8496e6b4e9809d6056e6069fc11ef5390e064dfef9f7eccec3452e7566b88ab861bf544b57dce249c4291142f307bd6465e45a update-wheel-tests.patch" +sha512sums="9fa00930a1923782c2f6356bf992410d42b3dd81b5a673e2957eaf8941787fbea324851c5df48e37601641d004ee900c88a1cfa97ef9df374879586a36efa5c6 py3-setuptools-39.1.0.tar.gz +ee248df4174240e90a35190e0a47bf0fa4cc5601adc64eff5fd585c8919e47c3a2bb6191b8333800016567d8a0f0f71b7c2306779ea7e4ab7c8951bdee28ef5e pythonpath.patch" diff --git a/user/py3-setuptools/pythonpath.patch b/user/py3-setuptools/pythonpath.patch index 371804f55..d9d78a861 100644 --- a/user/py3-setuptools/pythonpath.patch +++ b/user/py3-setuptools/pythonpath.patch @@ -1,10 +1,11 @@ ---- setuptools-38.4.0/tox.ini 2018-01-05 13:17:02.000000000 +0000 -+++ setuptools-38.4.0/tox.ini 2018-01-11 01:50:05.810000000 +0000 -@@ -6,6 +6,6 @@ - - [testenv] - deps=-rtests/requirements.txt --passenv=APPDATA USERPROFILE HOMEDRIVE HOMEPATH windir APPVEYOR -+passenv=APPDATA USERPROFILE HOMEDRIVE HOMEPATH windir APPVEYOR PYTHONPATH - commands=py.test {posargs} +--- setuptools-39.1.0/tox.ini 2018-04-28 07:07:00.000000000 -0400 ++++ setuptools-39.1.0/tox.ini 2018-05-22 00:25:02.969163171 -0400 +@@ -12,7 +12,7 @@ + setenv=COVERAGE_FILE={toxworkdir}/.coverage.{envname} + # TODO: The passed environment variables came from copying other tox.ini files + # These should probably be individually annotated to explain what needs them. +-passenv=APPDATA HOMEDRIVE HOMEPATH windir APPVEYOR APPVEYOR_* CI CODECOV_* TRAVIS TRAVIS_* ++passenv=APPDATA HOMEDRIVE HOMEPATH windir APPVEYOR APPVEYOR_* CI CODECOV_* TRAVIS TRAVIS_* PYTHONPATH + commands=pytest --cov-config={toxinidir}/tox.ini --cov-report= {posargs} usedevelop=True + diff --git a/user/py3-setuptools/update-wheel-tests.patch b/user/py3-setuptools/update-wheel-tests.patch deleted file mode 100644 index 769ef470f..000000000 --- a/user/py3-setuptools/update-wheel-tests.patch +++ /dev/null @@ -1,460 +0,0 @@ -From 41882016dbd6b334e6e10e2c3ac5afb9f5793ede Mon Sep 17 00:00:00 2001 -From: Paul Ganssle -Date: Fri, 6 Apr 2018 17:07:44 -0400 -Subject: [PATCH 1/2] Update wheel tests to reflect latest version - ---- - setuptools/tests/test_wheel.py | 16 ---------------- - 1 file changed, 16 deletions(-) - -diff --git a/setuptools/tests/test_wheel.py b/setuptools/tests/test_wheel.py -index b6be6f1f0..d8d5ddb23 100644 ---- a/setuptools/tests/test_wheel.py -+++ b/setuptools/tests/test_wheel.py -@@ -161,11 +161,9 @@ def __repr__(self): - ''' - foo-1.0-py{py_version}.egg/ - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - |-- foo/ - | |-- __init__.py -@@ -196,11 +194,9 @@ def __repr__(self): - ''' - foo-1.0-py{py_version}.egg/ - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - |-- data_dir/ - | |-- data.txt -@@ -267,11 +263,9 @@ def __repr__(self): - foo-1.0-py{py_version}-{platform}.egg/ - |-- extension{shlib_ext} - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - ''' - ), -@@ -293,11 +287,9 @@ def __repr__(self): - foo-1.0-py{py_version}.egg/ - |-- header.h - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - ''' - ), -@@ -326,11 +318,9 @@ def __repr__(self): - ''' - foo-1.0-py{py_version}.egg/ - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - | |-- scripts/ - | | |-- script.py -@@ -346,11 +336,9 @@ def __repr__(self): - ''' - foo-1.0-py{py_version}.egg/ - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- requires.txt - | |-- top_level.txt - '''), -@@ -430,11 +418,9 @@ def __repr__(self): - foo-1.0-py{py_version}.egg/ - |-- foo-1.0-py{py_version}-nspkg.pth - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- namespace_packages.txt - | |-- top_level.txt - |-- foo/ -@@ -466,11 +452,9 @@ def __repr__(self): - ''' - foo-1.0-py{py_version}.egg/ - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - |-- foo/ - | |-- __init__.py - -From ed3762fc7d16174a54b2fa83af1996decafd756f Mon Sep 17 00:00:00 2001 -From: Paul Ganssle -Date: Sat, 7 Apr 2018 13:38:31 -0400 -Subject: [PATCH 2/2] Switch test_wheel over to subset-based test - -This is both compatible with the old version of wheel (last one -supported under Python 3.3) and is more in line with our commitment, -which is that the wheel install provides at least these files. ---- - setuptools/tests/test_wheel.py | 268 ++++++++++++++++++++++------------------- - 1 file changed, 142 insertions(+), 126 deletions(-) - -diff --git a/setuptools/tests/test_wheel.py b/setuptools/tests/test_wheel.py -index d8d5ddb23..150ac4c1b 100644 ---- a/setuptools/tests/test_wheel.py -+++ b/setuptools/tests/test_wheel.py -@@ -92,39 +92,49 @@ def build_wheel(extra_file_defs=None, **kwargs): - yield glob.glob(os.path.join(source_dir, 'dist', '*.whl'))[0] - - --def tree(root): -- def depth(path): -- return len(path.split(os.path.sep)) -- def prefix(path_depth): -- if not path_depth: -- return '' -- return '| ' * (path_depth - 1) + '|-- ' -- lines = [] -- root_depth = depth(root) -+def tree_set(root): -+ contents = set() - for dirpath, dirnames, filenames in os.walk(root): -- dirnames.sort() -- filenames.sort() -- dir_depth = depth(dirpath) - root_depth -- if dir_depth > 0: -- lines.append('%s%s/' % (prefix(dir_depth - 1), -- os.path.basename(dirpath))) -- for f in filenames: -- lines.append('%s%s' % (prefix(dir_depth), f)) -- return '\n'.join(lines) + '\n' -- -- --def _check_wheel_install(filename, install_dir, install_tree, -+ for filename in filenames: -+ contents.add(os.path.join(os.path.relpath(dirpath, root), -+ filename)) -+ return contents -+ -+ -+def flatten_tree(tree): -+ """Flatten nested dicts and lists into a full list of paths""" -+ output = set() -+ for node, contents in tree.items(): -+ if isinstance(contents, dict): -+ contents = flatten_tree(contents) -+ -+ for elem in contents: -+ if isinstance(elem, dict): -+ output |= {os.path.join(node, val) -+ for val in flatten_tree(elem)} -+ else: -+ output.add(os.path.join(node, elem)) -+ return output -+ -+ -+def format_install_tree(tree): -+ return {x.format( -+ py_version=PY_MAJOR, -+ platform=get_platform(), -+ shlib_ext=get_config_var('EXT_SUFFIX') or get_config_var('SO')) -+ for x in tree} -+ -+ -+def _check_wheel_install(filename, install_dir, install_tree_includes, - project_name, version, requires_txt): - w = Wheel(filename) - egg_path = os.path.join(install_dir, w.egg_name()) - w.install_as_egg(egg_path) -- if install_tree is not None: -- install_tree = install_tree.format( -- py_version=PY_MAJOR, -- platform=get_platform(), -- shlib_ext=get_config_var('EXT_SUFFIX') or get_config_var('SO') -- ) -- assert install_tree == tree(install_dir) -+ if install_tree_includes is not None: -+ install_tree = format_install_tree(install_tree_includes) -+ exp = tree_set(install_dir) -+ assert install_tree.issubset(exp), (install_tree - exp) -+ - metadata = PathMetadata(egg_path, os.path.join(egg_path, 'EGG-INFO')) - dist = Distribution.from_filename(egg_path, metadata=metadata) - assert dist.project_name == project_name -@@ -157,18 +167,17 @@ def __repr__(self): - setup_kwargs=dict( - packages=['foo'], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- |-- foo/ -- | |-- __init__.py -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': { -+ 'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt' -+ ], -+ 'foo': ['__init__.py'] -+ } -+ }), - ), - - dict( -@@ -190,18 +199,19 @@ def __repr__(self): - setup_kwargs=dict( - data_files=[('data_dir', ['data.txt'])], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- |-- data_dir/ -- | |-- data.txt -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': { -+ 'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt' -+ ], -+ 'data_dir': [ -+ 'data.txt' -+ ] -+ } -+ }), - ), - - dict( -@@ -258,17 +268,17 @@ def __repr__(self): - sources=['extension.c']) - ], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}-{platform}.egg/ -- |-- extension{shlib_ext} -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}-{platform}.egg': [ -+ 'extension{shlib_ext}', -+ {'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt', -+ ]}, -+ ] -+ }), - ), - - dict( -@@ -282,17 +292,17 @@ def __repr__(self): - setup_kwargs=dict( - headers=['header.h'], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- header.h -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': [ -+ 'header.h', -+ {'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt', -+ ]}, -+ ] -+ }), - ), - - dict( -@@ -314,34 +324,37 @@ def __repr__(self): - setup_kwargs=dict( - scripts=['script.py', 'script.sh'], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- | |-- scripts/ -- | | |-- script.py -- | | |-- script.sh -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': { -+ 'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt', -+ {'scripts': [ -+ 'script.py', -+ 'script.sh' -+ ]} -+ -+ ] -+ } -+ }) - ), - - dict( - id='requires1', - install_requires='foobar==2.0', -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- requires.txt -- | |-- top_level.txt -- '''), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': { -+ 'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'requires.txt', -+ 'top_level.txt', -+ ] -+ } -+ }), - requires_txt=DALS( - ''' - foobar==2.0 -@@ -413,21 +426,22 @@ def __repr__(self): - namespace_packages=['foo'], - packages=['foo.bar'], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- foo-1.0-py{py_version}-nspkg.pth -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- namespace_packages.txt -- | |-- top_level.txt -- |-- foo/ -- | |-- __init__.py -- | |-- bar/ -- | | |-- __init__.py -- '''), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': [ -+ 'foo-1.0-py{py_version}-nspkg.pth', -+ {'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'namespace_packages.txt', -+ 'top_level.txt', -+ ]}, -+ {'foo': [ -+ '__init__.py', -+ {'bar': ['__init__.py']}, -+ ]}, -+ ] -+ }), - ), - - dict( -@@ -448,20 +462,22 @@ def __repr__(self): - packages=['foo'], - data_files=[('foo/data_dir', ['foo/data_dir/data.txt'])], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- |-- foo/ -- | |-- __init__.py -- | |-- data_dir/ -- | | |-- data.txt -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': { -+ 'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt', -+ ], -+ 'foo': [ -+ '__init__.py', -+ {'data_dir': [ -+ 'data.txt', -+ ]} -+ ] -+ } -+ }), - ), - - ) -- cgit v1.2.3-70-g09d2