app-admin/ansible-lint: Version bump to 4.1.0
authorTony Vroon <chainsaw@gentoo.org>
Mon, 10 Feb 2020 13:29:17 +0000 (13:29 +0000)
committerTony Vroon <chainsaw@gentoo.org>
Mon, 10 Feb 2020 13:29:37 +0000 (13:29 +0000)
Squelch DISTUTILS_USE_SETUPTOOLS as suggested by Ferenc Erki on GitHub.
Remove unused setuptools-git from DEPEND as per Ferenc Erki on GitHub.
Scavenge upstream patch identified by Peter on bug 698864 (setuptools).
Concern for Python 2.7 has now ceased due to EOL.

Closes: https://bugs.gentoo.org/681988
Bug: https://bugs.gentoo.org/698864
Closes: https://github.com/gentoo/gentoo/pull/14588
Reported-by: Lik
Suggested-by: Ferenc Erki
Signed-Off-By: Tony Vroon <chainsaw@gentoo.org>
Package-Manager: Portage-2.3.84, Repoman-2.3.20

app-admin/ansible-lint/Manifest
app-admin/ansible-lint/ansible-lint-4.1.0.ebuild [new file with mode: 0644]
app-admin/ansible-lint/files/ansible-lint-4.1.0-specifierset-split-setuptools.patch [new file with mode: 0644]

index 071396fc34ae858cdb203cf69df6b583bca9ddf0..eddd28d3cda3b2bc70112332b274fb22ada8d55a 100644 (file)
@@ -1 +1,2 @@
 DIST ansible-lint-4.0.1.tar.gz 2909257 BLAKE2B c030b6fc58eaeeec42e40dd5bc46e5181916433b905bfc4a82382bf6bba8536d2639172aab0e2928ce1dd5489f322e19ab1c0ea5abb637562616addb9733e81a SHA512 a2f3bd44287a2c72f79c5fbb4c02446484cf764d386d403694325bce172e2b195dd4812e0f89e5f4e1930db124e2b383e4f067bed5d4858c354c0ae0b3fb03e4
+DIST ansible-lint-4.1.0.tar.gz 2911091 BLAKE2B b6e414dbdeebcc1cae900736829abf2db0930e5e05ae7c2bbd6d30a89b6ac28485ddfb63528bdc3baae6ef97ae7536507632d43b16f9a16dd86887d781940aeb SHA512 c1d07093d68bf5f43c20c3a999adf26d23ba587d5008a35069dcbab514b208737f5d0ecaf032e43d313233ea06193db81b349d5fb62f3ac684af9e51d8bc6e08
diff --git a/app-admin/ansible-lint/ansible-lint-4.1.0.ebuild b/app-admin/ansible-lint/ansible-lint-4.1.0.ebuild
new file mode 100644 (file)
index 0000000..46715fc
--- /dev/null
@@ -0,0 +1,39 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DISTUTILS_USE_SETUPTOOLS=rdepend
+PYTHON_COMPAT=( python3_{6,7} )
+
+inherit distutils-r1
+
+DESCRIPTION="Checks ansible playbooks for practices and behaviour that can be improved"
+HOMEPAGE="https://github.com/ansible/ansible-lint"
+SRC_URI="https://github.com/ansible/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="test"
+RESTRICT="!test? ( test )"
+PATCHES="${FILESDIR}/${P}-specifierset-split-setuptools.patch"
+
+CDEPEND="app-admin/ansible[${PYTHON_USEDEP}]
+               dev-python/pyyaml[${PYTHON_USEDEP}]
+               dev-python/six[${PYTHON_USEDEP}]"
+DEPEND="dev-python/ruamel-yaml[${PYTHON_USEDEP}]
+               dev-python/setuptools[${PYTHON_USEDEP}]
+               dev-python/setuptools_scm[${PYTHON_USEDEP}]
+               dev-python/setuptools_scm_git_archive[${PYTHON_USEDEP}]
+               test? (
+                       dev-python/flake8[${PYTHON_USEDEP}]
+                       dev-python/nose[${PYTHON_USEDEP}]
+                       dev-python/wheel[${PYTHON_USEDEP}]
+               )
+               ${CDEPEND}"
+RDEPEND="${CDEPEND}"
+
+python_test() {
+       nosetests || die
+}
diff --git a/app-admin/ansible-lint/files/ansible-lint-4.1.0-specifierset-split-setuptools.patch b/app-admin/ansible-lint/files/ansible-lint-4.1.0-specifierset-split-setuptools.patch
new file mode 100644 (file)
index 0000000..4e4ac16
--- /dev/null
@@ -0,0 +1,175 @@
+From c91d23b2f82b4efb540168132842b243eb2d8b0d Mon Sep 17 00:00:00 2001
+From: Sviatoslav Sydorenko <wk@sydorenko.org.ua>
+Date: Thu, 24 Oct 2019 01:38:35 +0200
+Subject: [PATCH] Drop support for setuptools older than 34.4.0
+
+Resolves #599
+---
+ setup.py | 141 +++++--------------------------------------------------
+ 1 file changed, 13 insertions(+), 128 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 25cc9e80d09e4657b56c4c4ed68d9411b7d7eae9..ff4c5bd65a7f5786c5af32750fb83dd3f6d92cec 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,138 +1,16 @@
+ #! /usr/bin/env python
+ """Ansible-lint distribution package setuptools installer."""
+-import setuptools
+-
+-
+-try:
+-    from setuptools.config import read_configuration, ConfigOptionsHandler
+-    import setuptools.config
+-    import setuptools.dist
+-
+-    # Set default value for 'use_scm_version'
+-    setattr(setuptools.dist.Distribution, 'use_scm_version', False)
+-
+-    # Attach bool parser to 'use_scm_version' option
+-    class ShimConfigOptionsHandler(ConfigOptionsHandler):
+-        """Extension class for ConfigOptionsHandler."""
+-
+-        @property
+-        def parsers(self):
+-            """Return an option mapping with default data type parsers."""
+-            _orig_parsers = super(ShimConfigOptionsHandler, self).parsers
+-            return dict(use_scm_version=self._parse_bool, **_orig_parsers)
+-
+-    setuptools.config.ConfigOptionsHandler = ShimConfigOptionsHandler
+-except ImportError:
+-    """This is a shim for setuptools<30.3."""
+-    import io
+-    import json
+-
+-    try:
+-        from configparser import ConfigParser, NoSectionError
+-    except ImportError:
+-        from ConfigParser import ConfigParser, NoSectionError
+-        ConfigParser.read_file = ConfigParser.readfp
+-
+-    def maybe_read_files(d):
+-        """Read files if the string starts with `file:` marker."""
+-        d = d.strip()
+-        if not d.startswith('file:'):
+-            return d
+-        descs = []
+-        for fname in map(str.strip, str(d[5:]).split(',')):
+-            with io.open(fname, encoding='utf-8') as f:
+-                descs.append(f.read())
+-        return ''.join(descs)
+-
+-    def cfg_val_to_list(v):
+-        """Turn config val to list and filter out empty lines."""
+-        return list(filter(bool, map(str.strip, str(v).strip().splitlines())))
+-    def cfg_val_to_dict(v):
+-        """Turn config val to dict and filter out empty lines."""
+-        return dict(
+-            map(lambda l: list(map(str.strip, l.split('=', 1))),
+-                filter(bool, map(str.strip, str(v).strip().splitlines())))
+-        )
++__requires__ = ('setuptools >= 34.4', )
+-    def cfg_val_to_primitive(v):
+-        """Parse primitive config val to appropriate data type."""
+-        return json.loads(v.strip().lower())
+-    def read_configuration(filepath):
+-        """Read metadata and options from setup.cfg located at filepath."""
+-        cfg = ConfigParser()
+-        with io.open(filepath, encoding='utf-8') as f:
+-            cfg.read_file(f)
+-
+-        md = dict(cfg.items('metadata'))
+-        for list_key in 'classifiers', 'keywords':
+-            try:
+-                md[list_key] = cfg_val_to_list(md[list_key])
+-            except KeyError:
+-                pass
+-        try:
+-            md['long_description'] = maybe_read_files(md['long_description'])
+-        except KeyError:
+-            pass
+-        opt = dict(cfg.items('options'))
+-        for list_key in 'use_scm_version', 'zip_safe':
+-            try:
+-                opt[list_key] = cfg_val_to_primitive(opt[list_key])
+-            except KeyError:
+-                pass
+-        for list_key in 'scripts', 'install_requires', 'setup_requires':
+-            try:
+-                opt[list_key] = cfg_val_to_list(opt[list_key])
+-            except KeyError:
+-                pass
+-        try:
+-            opt['package_dir'] = cfg_val_to_dict(opt['package_dir'])
+-        except KeyError:
+-            pass
+-        try:
+-            opt_package_data = dict(cfg.items('options.package_data'))
+-            if not opt_package_data.get('', '').strip():
+-                opt_package_data[''] = opt_package_data['*']
+-                del opt_package_data['*']
+-        except (KeyError, NoSectionError):
+-            opt_package_data = {}
+-        try:
+-            opt_extras_require = dict(cfg.items('options.extras_require'))
+-            opt['extras_require'] = {}
+-            for k, v in opt_extras_require.items():
+-                opt['extras_require'][k] = cfg_val_to_list(v)
+-        except NoSectionError:
+-            pass
+-        opt['package_data'] = {}
+-        for k, v in opt_package_data.items():
+-            opt['package_data'][k] = cfg_val_to_list(v)
+-        cur_pkgs = opt.get('packages', '').strip()
+-        if '\n' in cur_pkgs:
+-            opt['packages'] = cfg_val_to_list(opt['packages'])
+-        elif cur_pkgs.startswith('find:'):
+-            opt_packages_find = dict(cfg.items('options.packages.find'))
+-            opt['packages'] = setuptools.find_packages(**opt_packages_find)
+-        return {'metadata': md, 'options': opt}
+-
+-
+-setup_params = {}
+-declarative_setup_params = read_configuration('setup.cfg')
+-
+-# Patch incorrectly decoded package_dir option
+-# ``egg_info`` demands native strings failing with unicode under Python 2
+-# Ref https://github.com/pypa/setuptools/issues/1136
+-declarative_setup_params['options']['package_dir'] = {
+-    str(k): str(v)
+-    for k, v in declarative_setup_params['options']['package_dir'].items()
+-}
+-
+-setup_params = dict(setup_params, **declarative_setup_params['metadata'])
+-setup_params = dict(setup_params, **declarative_setup_params['options'])
++import setuptools
++from setuptools.config import read_configuration
+ def cut_local_version_on_upload(version):
++    """Generate a PEP440 local version if uploading to PyPI."""
+     import os
+     import setuptools_scm.version  # only present during setup time
+     IS_PYPI_UPLOAD = os.getenv('PYPI_UPLOAD') == 'true'
+@@ -142,8 +20,15 @@ def cut_local_version_on_upload(version):
+     )
+-setup_params['use_scm_version'] = {
+-    'local_scheme': cut_local_version_on_upload,
++# This is needed because even new
++# setuptools don't parse
++# `setup_requires` from `setup.cfg`:
++declarative_setup_params = read_configuration('setup.cfg')
++setup_params = {
++    'setup_requires': declarative_setup_params['options']['setup_requires'],
++    'use_scm_version': {
++        'local_scheme': cut_local_version_on_upload,
++    }
+ }