Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Nov 2018 05:51:49 +0000 (UTC)
From:      Kubilay Kocak <koobs@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r486079 - in head/converters/py-rencode: . files
Message-ID:  <201811280551.wAS5pn2F052286@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: koobs
Date: Wed Nov 28 05:51:49 2018
New Revision: 486079
URL: https://svnweb.freebsd.org/changeset/ports/486079

Log:
  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)

Added:
  head/converters/py-rencode/files/
  head/converters/py-rencode/files/patch-setup.py   (contents, props changed)
Modified:
  head/converters/py-rencode/Makefile

Modified: head/converters/py-rencode/Makefile
==============================================================================
--- head/converters/py-rencode/Makefile	Wed Nov 28 05:24:31 2018	(r486078)
+++ head/converters/py-rencode/Makefile	Wed Nov 28 05:51:49 2018	(r486079)
@@ -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/p
 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>

Added: head/converters/py-rencode/files/patch-setup.py
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/converters/py-rencode/files/patch-setup.py	Wed Nov 28 05:51:49 2018	(r486079)
@@ -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',
+ )



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201811280551.wAS5pn2F052286>