%global pkgname Theano %global srcname theano #%%global rctag a1 Name: python-theano Version: 1.0.0 Release: 1%{?rctag:.%{rctag}}%{?dist} Summary: Mathematical expressions involving multidimensional arrays License: BSD URL: http://deeplearning.net/software/theano/ Source0: https://github.com/Theano/Theano/archive/rel-%{version}%{?rctag:%{rctag}}/%{pkgname}-%{version}%{?rctag:%{rctag}}.tar.gz BuildArch: noarch BuildRequires: atlas-devel BuildRequires: epydoc BuildRequires: gcc-c++ BuildRequires: gcc-gfortran BuildRequires: git-core BuildRequires: python2-Cython python3-Cython BuildRequires: python2-devel python3-devel BuildRequires: python2-nose python3-nose BuildRequires: python2-parameterized python3-parameterized BuildRequires: python2-numpy python3-numpy BuildRequires: python2-pydot python3-pydot BuildRequires: python2-scipy python3-scipy BuildRequires: python2-setuptools python3-setuptools BuildRequires: python2-six python3-six BuildRequires: python3-sphinx BuildRequires: tex(latex) BuildRequires: tex(anyfontsize.sty) BuildRequires: tex-dvipng %description Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. Theano features: - tight integration with NumPy: Use numpy.ndarray in Theano-compiled functions. - transparent use of a GPU: Perform data-intensive calculations up to 140x faster than with CPU.(float32 only) - efficient symbolic differentiation: Theano does your derivatives for function with one or many inputs. - speed and stability optimizations: Get the right answer for log(1+x) even when x is really tiny. - dynamic C code generation: Evaluate expressions faster. - extensive unit-testing and self-verification: Detect and diagnose many types of mistake. %package -n python2-%{srcname} Summary: Mathematical expressions involving multidimensional arrays Requires: atlas-devel Requires: gcc-c++ Requires: gcc-gfortran Requires: python2-numpy Requires: python2-scipy Requires: python2-six Recommends: python2-pydot %{?python_provide:%python_provide python2-%{srcname}} %description -n python2-%{srcname} Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. Theano features: - tight integration with NumPy: Use numpy.ndarray in Theano-compiled functions. - transparent use of a GPU: Perform data-intensive calculations up to 140x faster than with CPU.(float32 only) - efficient symbolic differentiation: Theano does your derivatives for function with one or many inputs. - speed and stability optimizations: Get the right answer for log(1+x) even when x is really tiny. - dynamic C code generation: Evaluate expressions faster. - extensive unit-testing and self-verification: Detect and diagnose many types of mistake. %package -n python3-%{srcname} Summary: Mathematical expressions involving multidimensional arrays Requires: atlas-devel Requires: gcc-c++ Requires: gcc-gfortran Requires: python3-numpy Requires: python3-scipy Requires: python3-six Recommends: python3-pydot %{?python_provide:%python_provide python3-%{srcname}} %description -n python3-%{srcname} Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. Theano features: - tight integration with NumPy: Use numpy.ndarray in Theano-compiled functions. - transparent use of a GPU: Perform data-intensive calculations up to 140x faster than with CPU.(float32 only) - efficient symbolic differentiation: Theano does your derivatives for function with one or many inputs. - speed and stability optimizations: Get the right answer for log(1+x) even when x is really tiny. - dynamic C code generation: Evaluate expressions faster. - extensive unit-testing and self-verification: Detect and diagnose many types of mistake. %package doc Summary: Theano documentation %description doc User documentation for Theano. %prep %autosetup -n %{pkgname}-rel-%{version}%{?rctag:%{rctag}} -p1 # Remove bundled python-six rm -f theano/compat/six.py # We don't need to use /usr/bin/env for fil in $(grep -FRl /bin/env .); do sed -ri.orig 's,( )?(/usr)?/bin/env[[:blank:]]*python.*,%{_bindir}/python2,' $fil touch -r $fil.orig $fil rm $fil.orig done # Be explicit about the python version to invoke for fil in $(grep -Rl '^#!%{_bindir}/python$' .); do sed -i.orig 's,^#!%{_bindir}/python$,&2,' $fil touch -r $fil.orig $fil rm $fil.orig done # Prepare for python 3 build cp -a . %{py3dir} mv %{py3dir} python3 # Change dependencies for python3 for fil in $(grep -Rl '#!%{_bindir}/python2' python3); do sed -i.orig 's,#!%{_bindir}/python2,#!%{_bindir}/python3,' $fil touch -r $fil.orig $fil rm $fil.orig done %build # Regenerate the Cython files, and fix the numpy interfaces cython theano/scan_module/scan_perform.pyx pushd python3 cython3 theano/scan_module/scan_perform.pyx popd sed -e 's/\(__pyx_v_self\)->descr/PyArray_DESCR(\1)/' \ -e 's/\(__pyx_v_arr\)->base = \(.*\);/PyArray_SetBaseObject(\1, \2);/' \ -e 's/\(__pyx_v_arr\)->base/PyArray_BASE(\1)/' \ -i theano/scan_module/scan_perform.c \ python3/theano/scan_module/scan_perform.c # Python 2 build %py2_build # Python 3 build pushd python3 %py3_build popd # Build the documentation export PYTHONPATH=$PWD python3 doc/scripts/docgen.py --nopdf # Remove build artifacts rm -fr html/.buildinfo html/.doctrees %install # Install python 2 build %py2_install # Install python 3 build pushd python3 %py3_install popd # Restore executable permission on the scripts chmod a+x $(find %{buildroot} -name \*.py -o -name \*.sh | xargs grep -l '^#!') %check PYTHONPATH=$PWD bin/theano-nose %files -n python2-%{srcname} %doc DESCRIPTION.txt HISTORY.txt NEWS.txt README.txt %license doc/LICENSE.txt %{python2_sitelib}/* %files -n python3-%{srcname} %doc DESCRIPTION.txt HISTORY.txt NEWS.txt README.txt %license doc/LICENSE.txt %{_bindir}/theano-* %{python3_sitelib}/* %files doc %doc html %changelog * Fri Nov 17 2017 Igor Gnatenko - 1.0.0-1 - Update to 1.0.0 * Thu Jul 27 2017 Fedora Release Engineering - 0.9.0-1.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild * Wed Mar 22 2017 Jerry James - 0.9.0-1 - New upstream release * Sat Feb 11 2017 Fedora Release Engineering - 0.8.2-1.3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild * Mon Dec 19 2016 Miro HronĨok - 0.8.2-1.2 - Rebuild for Python 3.6 * Tue Jul 19 2016 Fedora Release Engineering - 0.8.2-1.1 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages * Thu Apr 21 2016 Jerry James - 0.8.2-1 - New upstream release * Fri Apr 15 2016 Jerry James - 0.8.1-2 - Remove python2 dependency from the python3 subpackage (bz 1324232) - Recommend pydot instead of requiring it * Sat Apr 2 2016 Jerry James - 0.8.1-1 - New upstream release - Fix the pydot dependencies * Wed Mar 23 2016 Jerry James - 0.8.0-1 - New upstream release * Thu Feb 04 2016 Fedora Release Engineering - 0.7.1-0.2.a1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Mon Feb 1 2016 Jerry James - 0.7.1-0.1.a1 - Comply with latest python packaging guidelines * Thu Nov 12 2015 Igor Gnatenko - 0.7.1-0.1.a1 - Update to 0.7.1a1 * Tue Nov 10 2015 Fedora Release Engineering - 0.7.0-2.2 - Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 * Wed Nov 4 2015 Toshio Kuratomi - 0.7.0-2.1 - Fix python3 package requiring python2. * Thu Jun 18 2015 Fedora Release Engineering - 0.7.0-1.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Wed Apr 1 2015 Jerry James - 0.7.0-1 - New upstream release - Drop upstreamed -arm patch - Regenerate cython files to fix build failure * Sat Feb 21 2015 Jerry James - 0.6.0-5 - Add -arm patch to fix build failure on arm builders due to inverted test * Sat Feb 21 2015 Jerry James - 0.6.0-4 - Drop workaround for fixed bug (bz 1075826) - Use license macro * Sat Jun 07 2014 Fedora Release Engineering - 0.6.0-3.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild * Wed May 14 2014 Jerry James - 0.6.0-3 - Rebuild for https://fedoraproject.org/wiki/Changes/Python_3.4 * Thu Mar 13 2014 Jerry James - 0.6.0-2 - Add python3 subpackage - Add another icon to the -missing tarball - Update source icons - Unbundle python-six - Add workaround for bz 1075826 * Sat Dec 7 2013 Jerry James - 0.6.0-1 - New upstream release - Drop upstreamed -import patch * Mon Oct 21 2013 Jerry James - 0.6.0-0.1.rc3 - Add the -import patch to fix an exception - Add more files to the base package docs * Tue Aug 27 2013 Jerry James - 0.6.0-0.rc3 - Initial RPM