Bring a patch from the next release that refactors setup.py
This makes ansible-lint compatible with the upcoming update to devel/py-setuptools ok sthen
This commit is contained in:
parent
5aa8b9780e
commit
f67a863585
171
sysutils/ansible-lint/patches/patch-setup_py
Normal file
171
sysutils/ansible-lint/patches/patch-setup_py
Normal file
@ -0,0 +1,171 @@
|
||||
$OpenBSD: patch-setup_py,v 1.1 2019/11/19 20:22:55 kmos Exp $
|
||||
|
||||
Bring in refactor of setup.py from upcoming release to work with
|
||||
setuptools 41.6.0
|
||||
|
||||
https://github.com/ansible/ansible-lint/commit/c91d23b2f82b4efb540168132842b243eb2d8b0d.diff
|
||||
|
||||
Index: setup.py
|
||||
--- setup.py.orig
|
||||
+++ setup.py
|
||||
@@ -1,138 +1,16 @@
|
||||
#! /usr/bin/env python
|
||||
"""Ansible-lint distribution package setuptools installer."""
|
||||
|
||||
-import setuptools
|
||||
|
||||
+__requires__ = ('setuptools >= 34.4', )
|
||||
|
||||
-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)
|
||||
+import setuptools
|
||||
+from setuptools.config import read_configuration
|
||||
|
||||
- # 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())))
|
||||
- )
|
||||
-
|
||||
- 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'])
|
||||
-
|
||||
-
|
||||
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,
|
||||
+ }
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
@comment $OpenBSD: PLIST,v 1.8 2019/04/01 16:44:56 sthen Exp $
|
||||
@comment $OpenBSD: PLIST,v 1.9 2019/11/19 20:22:56 kmos Exp $
|
||||
bin/ansible-lint
|
||||
lib/python${MODPY_VERSION}/site-packages/ansible_lint-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/
|
||||
lib/python${MODPY_VERSION}/site-packages/ansible_lint-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info/PKG-INFO
|
||||
@ -19,7 +19,7 @@ lib/python${MODPY_VERSION}/site-packages/ansible_lint.egg-info/top_level.txt
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/__init__.py
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/__main__.py
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/${MODPY_PYCACHE}/
|
||||
${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/ansiblelint/${MODPY_PYCACHE}/
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/${MODPY_PYCACHE}__main__.${MODPY_PYC_MAGIC_TAG}pyc
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/${MODPY_PYCACHE}generate_docs.${MODPY_PYC_MAGIC_TAG}pyc
|
||||
@ -27,7 +27,7 @@ lib/python${MODPY_VERSION}/site-packages/ansiblelint/${MODPY_PYCACHE}utils.${MOD
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/${MODPY_PYCACHE}version.${MODPY_PYC_MAGIC_TAG}pyc
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/formatters/
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/formatters/__init__.py
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/formatters/${MODPY_PYCACHE}/
|
||||
${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/ansiblelint/formatters/${MODPY_PYCACHE}/
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/formatters/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/generate_docs.py
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/rules/
|
||||
@ -63,7 +63,7 @@ lib/python${MODPY_VERSION}/site-packages/ansiblelint/rules/UseHandlerRatherThanW
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/rules/UsingBareVariablesIsDeprecatedRule.py
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/rules/VariableHasSpacesRule.py
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/rules/__init__.py
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/rules/${MODPY_PYCACHE}/
|
||||
${MODPY_COMMENT}lib/python${MODPY_VERSION}/site-packages/ansiblelint/rules/${MODPY_PYCACHE}/
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/rules/${MODPY_PYCACHE}AlwaysRunRule.${MODPY_PYC_MAGIC_TAG}pyc
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/rules/${MODPY_PYCACHE}BecomeUserWithoutBecomeRule.${MODPY_PYC_MAGIC_TAG}pyc
|
||||
lib/python${MODPY_VERSION}/site-packages/ansiblelint/rules/${MODPY_PYCACHE}CommandHasChangesCheckRule.${MODPY_PYC_MAGIC_TAG}pyc
|
||||
|
Loading…
x
Reference in New Issue
Block a user