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 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-60-g2f50