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] 5c928f1456
[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)
Ports using USE_PYTHON=distutils are now flavored. They will
automatically get flavors (py27, py34, py35, py36) depending on what
versions they support.
There is also a USE_PYTHON=flavors for ports that do not use distutils
but need FLAVORS to be set. A USE_PYTHON=noflavors can be set if
using distutils but flavors are not wanted.
A new USE_PYTHON=optsuffix that will add PYTHON_PKGNAMESUFFIX has been
added to cope with Python ports that did not have the Python
PKGNAMEPREFIX but are flavored.
USES=python now also exports a PY_FLAVOR variable that contains the
current python flavor. It can be used in dependency lines when the
port itself is not python flavored. For example, deskutils/calibre.
By default, all the flavors are generated. To only generate flavors
for the versions in PYTHON2_DEFAULT and PYTHON3_DEFAULT, define
BUILD_DEFAULT_PYTHON_FLAVORS in your make.conf.
In all the ports with Python dependencies, the *_DEPENDS entries MUST
end with the flavor so that the framework knows which to build/use.
This is done by appending '@${PY_FLAVOR}' after the origin (or
@${FLAVOR} if in a Python module with Python flavors, as the content
will be the same). For example:
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR}
PR: 223071
Reviewed by: portmgr, python
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D12464
For complex, heterogeneous data structures with many small elements,
r-encodings take up significantly less space than b-encodings.
This version of rencode is a complete rewrite in Cython to attempt to
increase the performance over the pure Python module written by Petru
Paler, Connelly Barnes et al. Later, it was forked, enhanced, and
bundled with Deluge. Now, it is re-packaged and distributed by Xpra.
WWW: https://github.com/aresch/rencode