%global upname scikit-learn
%global with_python3 1
Name: python-scikit-learn
Version: 0.14.1
Release: 5%{?dist}
Summary: Machine learning in Python
License: BSD
# No license file
# https://github.com/scikit-learn/scikit-learn/issues/2422
# webpage says: BSD (3 clause)
URL: http://scikit-learn.org/
Source0: https://pypi.python.org/packages/source/s/scikit-learn/%{upname}-%{version}.tar.gz
Patch0: sklearn-unbundle-joblib.patch
Patch1: sklearn-unbundle-six.patch
Patch2: sklearn-unbundle-cblas.patch
Patch3: sklearn-fix-test.patch
BuildRequires: python2-devel
BuildRequires: numpy scipy python-nose python-matplotlib
BuildRequires: python-joblib
BuildRequires: python-six >= 1.4.1
BuildRequires: atlas-devel blas-devel
BuildRequires: Cython python-pillow
Requires: numpy scipy python-joblib
# we don't want to provide private python extension libs
%global __provides_exclude_from ^(%{python2_sitearch}|%{python3_sitearch})/.*\\.so$
%description
Scikit-learn integrates machine learning algorithms in the tightly-knit
scientific Python world, building upon numpy, scipy, and matplotlib.
As a machine-learning module, it provides versatile tools for data mining and
analysis in any field of science and engineering. It strives to be simple and
efficient, accessible to everybody, and reusable in various contexts.
%if 0%{?with_python3}
%package -n python3-%{upname}
Summary: Machine learning in Python
BuildRequires: python3-devel python3-nose
BuildRequires: python3-numpy python3-scipy python3-matplotlib
BuildRequires: python3-joblib
BuildRequires: python3-six >= 1.4.1
BuildRequires: atlas-devel blas-devel
BuildRequires: python3-Cython python3-pillow
Requires: python3-numpy python3-scipy python3-joblib
%description -n python3-%{upname}
Scikit-learn integrates machine learning algorithms in the tightly-knit
scientific Python world, building upon numpy, scipy, and matplotlib.
As a machine-learning module, it provides versatile tools for data mining and
analysis in any field of science and engineering. It strives to be simple and
efficient, accessible to everybody, and reusable in various contexts.
%endif # with_python3
%prep
%setup -n %{upname}-%{version} -q
%patch0 -p1
%patch1 -p1
rm -rf sklearn/externals/joblib
rm -rf sklearn/externals/six
rm -rf sklearn/externals
%patch2 -p1
rm -rf sklearn/src/cblas
%patch3 -p1
rm -rf sklearn/datasets/_svmlight_format.c
rm -rf *egg-info
chmod -x examples/plot_rbm_logistic_classification.py
# Reported upstream
# https://github.com/scikit-learn/scikit-learn/issues/2423
# Removing bogus shebang
pushd sklearn/datasets
sed -i -e "1d" setup.py
popd
pushd sklearn/gaussian_process/
#sed -i -e "1d" gaussian_process.py regression_models.py __init__.py correlation_models.py
sed -i -e "1d" regression_models.py __init__.py correlation_models.py
sed -i -e "2d" gaussian_process.py
popd
find -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python2}|'
%if 0%{?with_python3}
rm -rf %{py3dir}
cp -a . %{py3dir}
find %{py3dir} -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python3}|'
pushd %{py3dir}
cython3 sklearn/datasets/_svmlight_format.pyx
popd
%endif # with_python3
cython sklearn/datasets/_svmlight_format.pyx
%build
CFLAGS="%{optflags}" %{__python2} setup.py build
%if 0%{?with_python3}
pushd %{py3dir}
CFLAGS="%{optflags}" %{__python3} setup.py build
popd
%endif # with_python3
%install
%if 0%{?with_python3}
pushd %{py3dir}
%{__python3} setup.py install --skip-build --root %{buildroot}
popd
%endif # with_python3
%{__python2} setup.py install --skip-build --root %{buildroot}
find %{buildroot} -name "*.so" | xargs chmod 755
%check
%if 0%{?with_python3}
pushd %{buildroot}/%{python3_sitearch}
nosetests-%{python3_version} sklearn
popd
%endif # with_python3
pushd %{buildroot}/%{python_sitearch}
nosetests-%{python2_version} sklearn
popd
%files
%doc examples/ AUTHORS.rst README.rst
%{python2_sitearch}/sklearn
%{python2_sitearch}/scikit_learn-*.egg-info
%if 0%{?with_python3}
%files -n python3-%{upname}
%doc examples/ AUTHORS.rst README.rst
%{python3_sitearch}/sklearn
%{python3_sitearch}/scikit_learn-*.egg-info
%endif # with_python3
%changelog
* Wed Jan 15 2014 Sergio Pascual <sergiopr@fedoraproject.org> - 0.14.1-5
- Enable checks
- Regenerate C files from patched cython code
- Use python2 style macros
* Sat Oct 26 2013 Björn Esser <bjoern.esser@gmail.com> - 0.14.1-4
- rebuilt for atlas-3.10.1-7
* Mon Sep 16 2013 Sergio Pascual <sergiopr@fedoraproject.org> - 0.14.1-3
- Unbundle six
* Wed Sep 11 2013 Sergio Pascual <sergiopr@fedoraproject.org> - 0.14.1-2
- Update cblas patch
- Update EVR to build with new numpy (1.8.0-0.3b2)
* Wed Aug 28 2013 Sergio Pascual <sergiopr@fedoraproject.org> - 0.14.1-1
- New upstream source (0.14.1)
- Add python3 support
- Unbundle joblib and cblas
* Wed Jul 10 2013 Sergio Pascual <sergiopr@fedoraproject.org> - 0.13.1-3
- Reorder buildrequires and requires
- Dropped doc, it does not build
* Tue Jun 25 2013 Sergio Pascual <sergiopr@fedoraproject.org> - 0.13.1-2
- Changed package name
- Tests do not need recompile
* Thu Apr 18 2013 Sergio Pascual <sergiopr@fedoraproject.org> - 0.13.1-1
- Initial spec file