From fde84b2a19a99478f7e946feee6e376c2b00e4bb Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Aug 16 2016 15:48:59 +0000 Subject: Remove Cython build requirement - Only build python3 for Fedora --- diff --git a/2036.patch b/2036.patch new file mode 100644 index 0000000..1e0db3b --- /dev/null +++ b/2036.patch @@ -0,0 +1,88 @@ +From 48be23fc5ca94efa0f42a2242f1bb10f11992a42 Mon Sep 17 00:00:00 2001 +From: Orion Poplawski +Date: Wed, 6 Apr 2016 10:33:26 -0600 +Subject: [PATCH 1/3] Do not use setup_requires for cython - source tarballs + have shipped .c files + +--- + setup.py | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/setup.py b/setup.py +index 53b5aa7..1ca10a5 100644 +--- a/setup.py ++++ b/setup.py +@@ -131,8 +131,6 @@ def configuration(parent_package='', top_path=None): + 'Operating System :: MacOS', + ], + install_requires=INSTALL_REQUIRES, +- # install cython when running setup.py (source install) +- setup_requires=['cython>=0.21'], + requires=REQUIRES, + packages=setuptools.find_packages(exclude=['doc']), + include_package_data=True, + +From b90d0b505ac9ae8f51b85058635c063b896566f6 Mon Sep 17 00:00:00 2001 +From: Orion Poplawski +Date: Wed, 6 Apr 2016 10:38:34 -0600 +Subject: [PATCH 2/3] Simply do not use cython to rebuild .c files if installed + cython is too old, do not emit error + +Give RuntimeError if cython is missing and we need it +--- + skimage/_build.py | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/skimage/_build.py b/skimage/_build.py +index 2905ee2..e88d356 100644 +--- a/skimage/_build.py ++++ b/skimage/_build.py +@@ -27,15 +27,19 @@ def cython(pyx_files, working_path=''): + try: + from Cython import __version__ + if LooseVersion(__version__) < '0.23': +- raise RuntimeError('Cython >= 0.23 needed to build scikit-image') ++ raise ImportError + + from Cython.Build import cythonize + except ImportError: +- # If cython is not found, we do nothing -- the build will make use of +- # the distributed .c files +- print("Cython not found; falling back to pre-built %s" \ +- % " ".join([f.replace('.pyx.in', 'c').replace('.pyx', '.c') +- for f in pyx_files])) ++ # If cython is not found, the build will make use of ++ # the distributed .c files if present ++ c_files = [f.replace('.pyx.in', '.c').replace('.pyx', '.c') for f in pyx_files] ++ for cfile in [os.path.join(working_path, f) for f in c_files]: ++ if not os.path.isfile(cfile): ++ raise RuntimeError('Cython >= 0.23 is required to build scikit-image from SCM checkout') ++ ++ print("Cython >= 0.23 not found; falling back to pre-built %s" \ ++ % " ".join(c_files)) + else: + for pyxfile in [os.path.join(working_path, f) for f in pyx_files]: + + +From db4f67ee6cc3f23442fd95597b20c63971bbb13f Mon Sep 17 00:00:00 2001 +From: Orion Poplawski +Date: Sat, 16 Apr 2016 15:10:54 -0600 +Subject: [PATCH 3/3] SCM -> git + +--- + skimage/_build.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/skimage/_build.py b/skimage/_build.py +index e88d356..b50128b 100644 +--- a/skimage/_build.py ++++ b/skimage/_build.py +@@ -36,7 +36,7 @@ def cython(pyx_files, working_path=''): + c_files = [f.replace('.pyx.in', '.c').replace('.pyx', '.c') for f in pyx_files] + for cfile in [os.path.join(working_path, f) for f in c_files]: + if not os.path.isfile(cfile): +- raise RuntimeError('Cython >= 0.23 is required to build scikit-image from SCM checkout') ++ raise RuntimeError('Cython >= 0.23 is required to build scikit-image from git checkout') + + print("Cython >= 0.23 not found; falling back to pre-built %s" \ + % " ".join(c_files)) diff --git a/python-scikit-image.spec b/python-scikit-image.spec index 8e90241..9d28568 100644 --- a/python-scikit-image.spec +++ b/python-scikit-image.spec @@ -1,9 +1,13 @@ +%if 0%{?fedora} %global with_python3 1 +%else +%global with_python3 0 +%endif %global srcname scikit-image Name: python-scikit-image Version: 0.12.3 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Image processing in Python # The following files are BSD 2 clauses, the rest BSD 3 clauses # skimage/graph/_mcp.pyx @@ -12,6 +16,8 @@ License: BSD URL: http://scikit-image.org/ Source0: https://pypi.python.org/packages/source/s/scikit-image/scikit-image-%{version}.tar.gz +# Do not need Cython to build since upstream ships .pyx files +Patch0: https://patch-diff.githubusercontent.com/raw/scikit-image/scikit-image/pull/2036.patch BuildRequires: xorg-x11-server-Xvfb @@ -21,8 +27,11 @@ versatile set of image processing routines. %package -n python2-%{srcname} Summary: Image processing in Python 2 -BuildRequires: python2-devel python-setuptools numpy Cython +BuildRequires: python2-devel python-setuptools numpy BuildRequires: scipy python-matplotlib python-nose +%if 0%{?rhel} +BuildRequires: python-matplotlib-qt4 +%endif BuildRequires: python-six >= 1.3 BuildRequires: python-networkx-core BuildRequires: python-pillow @@ -39,7 +48,7 @@ versatile set of image processing routines. %if 0%{?with_python3} %package -n python3-%{srcname} Summary: Image processing in Python 3 -BuildRequires: python3-devel python3-setuptools python3-numpy python3-Cython +BuildRequires: python3-devel python3-setuptools python3-numpy BuildRequires: python3-scipy python3-matplotlib python3-nose BuildRequires: python3-six >= 1.3 BuildRequires: python3-networkx-core @@ -70,6 +79,7 @@ Utilities provided by scikit-image: 'skivi' %prep %setup -n %{srcname}-%{version} -q +%patch0 -p1 -b .Cython # Remove some shebangs pushd skimage for i in $(grep -l -r "/usr/bin/env"); do @@ -133,6 +143,10 @@ popd %{_bindir}/skivi %changelog +* Tue Aug 16 2016 Orion Poplawski - 0.12.3-5 +- Remove Cython build requirement +- Only build python3 for Fedora + * Tue Jul 19 2016 Fedora Release Engineering - 0.12.3-4 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages