Skip to content

Commit

Permalink
converters/py-rencode: Fails to configure if cython is installed
Browse files Browse the repository at this point in the history
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] aresch/rencode@5c928f1
[2] aresch/rencode#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] aresch/rencode#11

PR:		233561
Reported by:	John Hein <z7dr6ut7gs snkmail com>
Approved by:	koobs (python)


git-svn-id: svn+ssh://svn.freebsd.org/ports/head@486079 35697150-7ecd-e111-bb59-0022644237b5
  • Loading branch information
koobs committed Nov 28, 2018
1 parent 770401b commit c5a1484
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
11 changes: 10 additions & 1 deletion converters/py-rencode/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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>
35 changes: 35 additions & 0 deletions converters/py-rencode/files/patch-setup.py
Original file line number Diff line number Diff line change
@@ -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',
)

0 comments on commit c5a1484

Please sign in to comment.