diff options
author | Kubilay Kocak <koobs@FreeBSD.org> | 2018-11-28 05:51:49 +0000 |
---|---|---|
committer | Kubilay Kocak <koobs@FreeBSD.org> | 2018-11-28 05:51:49 +0000 |
commit | 99f578691b95e381c25c56217858e2e37b969117 (patch) | |
tree | e39f6521eaf428e1a7d7128f343c9075cccc3bd9 /converters/py-rencode | |
parent | 9e6f63e20fa868ca7c55c56b22e3b847242be50f (diff) | |
download | ports-99f578691b95e381c25c56217858e2e37b969117.tar.gz ports-99f578691b95e381c25c56217858e2e37b969117.zip |
converters/py-rencode: Fails to configure if cython is installed
ports r482774 removed USE_PYTHON=cython, likely due to it (cython) not
being explicitly declared as a dependency in setup.py:*_requires.
However, setup.py conditionally builds with cython if it is installed, but
the 1.0.6 source distribution (sdist) does not contain a .pyx file to build
with.
This leads to a configure/build error when cython is installed:
ValueError: 'rencode/rencode.pyx' doesn't match any files
Upstream commit 5c928f14567fabc9efb8bbb8ac5e0eef03c61541 [1] via issue
#25 [2] adds the required .pyx file to the sdist, which technically
addresses the "build with cython from the sdist" issue, but does not
fundamentally resolve the higher-level question: why build with cython when
a C source pre-processed by cython has already been produced for, and is
contained in, the source distribution.
A cython build (and the dependency on cython) does not appear to be
necessary, nor intended [3][4], nor recommended [5], even after #25 is
released, for sdist consumers.
The conditional code to build with cython should not be included in
setup.py, at least not as a default case, or without an explicit request
by the user to use cython, as an optional build method, for sdist consumers
(most downstream packagers and setuptools/pip users [6]).
This change removes the conditional check for Cython, leaving the standard
setuptools build_ext (with the packaged .c) file, as the build method.
While I'm here:
- Canonicalise COMMENT (match seutp.py:description)
- Add test target with post-patch target to make the tests dir a module
usable by a setup.py test (via test_suite directive) target.
- Honour CFLAGS: Remove forced (appended) -O3 arg from setup.py
[1] https://github.com/aresch/rencode/commit/5c928f14567fabc9efb8bbb8ac5e0eef03c61541
[2] https://github.com/aresch/rencode/pull/25
[3] setup.py: "Error: sdist requires cython module to generate `.c` file."
[4] dev-requirements.txt:Cython
[5] https://cython.readthedocs.io/en/latest/src/userguide/source_files_and_compilation.html#distributing-cython-modules
[6] https://github.com/aresch/rencode/issues/11
PR: 233561
Reported by: John Hein <z7dr6ut7gs snkmail com>
Approved by: koobs (python)
Notes
Notes:
svn path=/head/; revision=486079
Diffstat (limited to 'converters/py-rencode')
-rw-r--r-- | converters/py-rencode/Makefile | 11 | ||||
-rw-r--r-- | converters/py-rencode/files/patch-setup.py | 35 |
2 files changed, 45 insertions, 1 deletions
diff --git a/converters/py-rencode/Makefile b/converters/py-rencode/Makefile index 2c9a058c7627..c06747201d83 100644 --- a/converters/py-rencode/Makefile +++ b/converters/py-rencode/Makefile @@ -2,12 +2,13 @@ PORTNAME= rencode PORTVERSION= 1.0.6 +PORTREVISION= 1 CATEGORIES= converters devel python MASTER_SITES= CHEESESHOP PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} MAINTAINER= python@FreeBSD.org -COMMENT= R-encoding and r-decoding implementation +COMMENT= Web safe object pickling/unpickling LICENSE= GPLv3 LICENSE_FILE= ${WRKSRC}/COPYING @@ -17,7 +18,15 @@ BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} USES= python USE_PYTHON= autoplist distutils +# Make setup.py test target work with setup.py:test_suite +# See: files/patch-setup.py +post-patch: + ${TOUCH} ${WRKSRC}/tests/__init__.py + post-install: ${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/rencode/_rencode.so +do-test: + cd ${WRKSRC} && ${PYTHON_CMD} ${PYDISTUTILS_SETUP} test + .include <bsd.port.mk> diff --git a/converters/py-rencode/files/patch-setup.py b/converters/py-rencode/files/patch-setup.py new file mode 100644 index 000000000000..8c34a7b2e316 --- /dev/null +++ b/converters/py-rencode/files/patch-setup.py @@ -0,0 +1,35 @@ +# 1) converters/py-rencode: Fails to configure if cython is installed +# 2) make setup.py test command work via test_suite directive +# 3) Honour/respect user CFLAGS +# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233561 + +--- setup.py.orig 2018-10-21 17:41:35 UTC ++++ setup.py +@@ -29,19 +29,14 @@ from distutils.errors import CCompilerError, Distutils + from setuptools import setup + from setuptools.extension import Extension + +-try: +- from Cython.Build import build_ext +- from Cython.Build import cythonize +-except ImportError as ex: +- from setuptools.command.build_ext import build_ext +- cythonize = False ++from setuptools.command.build_ext import build_ext ++cythonize = False + + source_ext = ".pyx" if cythonize else ".c" + + ext_modules = [ + Extension( + "rencode._rencode", +- extra_compile_args=["-O3"], + sources=["rencode/rencode" + source_ext], + ), + ] +@@ -93,4 +88,5 @@ setup( + cmdclass={'build_ext': optional_build_ext}, + ext_modules=ext_modules, + setup_requires=['setuptools', 'wheel'], ++ test_suite='tests', + ) |