diff --git a/sysutils/ansible-lint/patches/patch-setup_py b/sysutils/ansible-lint/patches/patch-setup_py new file mode 100644 index 00000000000..0b33de6b71b --- /dev/null +++ b/sysutils/ansible-lint/patches/patch-setup_py @@ -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, ++ } + } + + diff --git a/sysutils/ansible-lint/pkg/PLIST b/sysutils/ansible-lint/pkg/PLIST index 243f04ebcd5..0a8396a4062 100644 --- a/sysutils/ansible-lint/pkg/PLIST +++ b/sysutils/ansible-lint/pkg/PLIST @@ -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