svn commit: r515848 - in head/www/py-cheroot: . files

Kai Knoblich kai at FreeBSD.org
Mon Oct 28 08:09:35 UTC 2019


Author: kai
Date: Mon Oct 28 08:09:34 2019
New Revision: 515848
URL: https://svnweb.freebsd.org/changeset/ports/515848

Log:
  www/py-cheroot: Update to 6.5.6
  
  * There is currently a signification amount of version churn in the upstream
    repository so use the most recent signed release for now.
  
  * Since release 6.3.0 the port installs a CLI tool outside the Python
    environment thus make it concurrent safe.
  
  * Also backport two patches to retain compatibility with recent versions of
    devel/py-setuptools and avoid failures at runtime with Python 3 while I'm
    here. [1]
  
  Changelog since 6.0.0:
  
  https://github.com/cherrypy/cheroot/blob/v6.5.6/CHANGES.rst
  
  PR:		241369
  Submitted by:	Keith Gaughan <k at stereochro.me> (maintainer)
  Approved by:	Keith Gaughan <k at stereochro.me> (maintainer) [1]
  MFH:		2019Q4

Added:
  head/www/py-cheroot/files/
  head/www/py-cheroot/files/patch-setup.cfg   (contents, props changed)
  head/www/py-cheroot/files/patch-setup.py   (contents, props changed)
Modified:
  head/www/py-cheroot/Makefile
  head/www/py-cheroot/distinfo

Modified: head/www/py-cheroot/Makefile
==============================================================================
--- head/www/py-cheroot/Makefile	Mon Oct 28 08:01:23 2019	(r515847)
+++ head/www/py-cheroot/Makefile	Mon Oct 28 08:09:34 2019	(r515848)
@@ -2,8 +2,7 @@
 # $FreeBSD$
 
 PORTNAME=	cheroot
-DISTVERSION=	6.0.0
-PORTREVISION=	1
+DISTVERSION=	6.5.6
 CATEGORIES=	www python
 MASTER_SITES=	CHEESESHOP
 PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
@@ -14,11 +13,12 @@ COMMENT=	Highly-optimized, pure-python HTTP server
 LICENSE=	BSD3CLAUSE
 LICENSE_FILE=	${WRKSRC}/LICENSE.md
 
-BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools_scm>=1.15.0:devel/py-setuptools_scm@${PY_FLAVOR}
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}setuptools_scm>=1.15.0:devel/py-setuptools_scm@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}setuptools_scm_git_archive>=1.0:devel/py-setuptools_scm_git_archive@${PY_FLAVOR}
 RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}six>=1.11.0:devel/py-six@${PY_FLAVOR}
 
 USES=		python
-USE_PYTHON=	distutils autoplist
+USE_PYTHON=	autoplist concurrent distutils
 
 NO_ARCH=	yes
 
@@ -28,6 +28,10 @@ NO_ARCH=	yes
 RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}more-itertools>=2.6:devel/py-more-itertools@${PY_FLAVOR}
 .else
 RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}more-itertools5>=2.6:devel/py-more-itertools5@${PY_FLAVOR}
+.endif
+
+.if ${PYTHON_REL} < 3300
+RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}backports.functools_lru_cache>0:devel/py-backports.functools_lru_cache@${PY_FLAVOR}
 .endif
 
 .include <bsd.port.post.mk>

Modified: head/www/py-cheroot/distinfo
==============================================================================
--- head/www/py-cheroot/distinfo	Mon Oct 28 08:01:23 2019	(r515847)
+++ head/www/py-cheroot/distinfo	Mon Oct 28 08:09:34 2019	(r515848)
@@ -1,3 +1,3 @@
-TIMESTAMP = 1513882382
-SHA256 (cheroot-6.0.0.tar.gz) = ba474e5149b03fabc2bba2d0b490b4d95443894d45b1430b799dccea3b3f4683
-SIZE (cheroot-6.0.0.tar.gz) = 62763
+TIMESTAMP = 1571548810
+SHA256 (cheroot-6.5.6.tar.gz) = b824f9961eb447809badeb051820a05770354e2f9ae5c355eecc21f22633c217
+SIZE (cheroot-6.5.6.tar.gz) = 84633

Added: head/www/py-cheroot/files/patch-setup.cfg
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/py-cheroot/files/patch-setup.cfg	Mon Oct 28 08:09:34 2019	(r515848)
@@ -0,0 +1,16 @@
+Backport patch from 6.6.0 to only require backports.functools_lru_cache for
+Python < 3.3
+
+https://github.com/cherrypy/cheroot/commit/18447cbee7135f3f5017c8f6a9607dc1f7259570
+
+--- setup.cfg.orig	2019-08-18 22:27:10 UTC
++++ setup.cfg
+@@ -57,7 +57,7 @@ setup_requires = 
+ 	setuptools_scm>=1.15.0
+ 	setuptools_scm_git_archive>=1.0
+ install_requires = 
+-	backports.functools_lru_cache
++	backports.functools_lru_cache ; python_version < '3.3'
+ 	six>=1.11.0
+ 	more_itertools>=2.6
+ 

Added: head/www/py-cheroot/files/patch-setup.py
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/py-cheroot/files/patch-setup.py	Mon Oct 28 08:09:34 2019	(r515848)
@@ -0,0 +1,149 @@
+Backported from 8.0 to be compatible with devel/py-setuptools >= 41.4.0
+
+https://github.com/cherrypy/cheroot/commit/2fe8459086c75b216f9e5efb69963596d6372234
+
+--- setup.py.orig	2019-08-18 22:26:46 UTC
++++ setup.py
+@@ -1,138 +1,8 @@
+-#! /usr/bin/env python
++#!/usr/bin/env python
++
+ """Cheroot 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, 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, 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, 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
+-        opt_package_data = dict(cfg.items('options.package_data'))
+-        try:
+-            if not opt_package_data.get('', '').strip():
+-                opt_package_data[''] = opt_package_data['*']
+-                del opt_package_data['*']
+-        except KeyError:
+-            pass
+-        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
+-if 'package_dir' in declarative_setup_params['options']:
+-    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'])
+-
+-
+-__name__ == '__main__' and setuptools.setup(**setup_params)
++if __name__ == '__main__':
++    setuptools.setup(use_scm_version=True)


More information about the svn-ports-head mailing list