%if 0%{?fedora} %global with_python3 1 ## Make python?_shortver macros %{!?python2_shortver: %global python2_shortver %(%{__python2} -c 'import sys; print(str(sys.version_info.major) + "." + str(sys.version_info.minor))')} %{!?python3_shortver: %global python3_shortver %(%{__python3} -c 'import sys; print(str(sys.version_info.major) + "." + str(sys.version_info.minor))')} %endif %if 0%{?rhel} && 0%{?rhel} <= 6 %{!?__python2: %global __python2 /usr/bin/python2} %{!?python2_sitelib: %global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %{!?python2_sitearch: %global python2_sitearch %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %global python2_version 2.6 %global with_python3 0 %endif %if 0%{?rhel} && 0%{?rhel} > 6 %global with_python3 0 %endif %global with_python35 1 Name: future Summary: Easy, clean, reliable Python 2/3 compatibility Version: 0.16.0 Release: 5%{?dist} License: MIT Group: Applications/Engineering URL: http://python-future.org/ Source0: https://github.com/PythonCharmers/python-future/archive/v%{version}.tar.gz#/python-future-%{version}.tar.gz BuildArch: noarch ##https://github.com/PythonCharmers/python-future/issues/165 Patch0: %{name}-skip_tests_with_connection_errors.patch %if 0%{?rhel} && 0%{?rhel} <= 6 BuildRequires: python-argparse, python-unittest2, python-importlib Requires: python-importlib Requires: python-argparse %endif BuildRequires: python2-devel BuildRequires: python-setuptools BuildRequires: numpy BuildRequires: python-requests BuildRequires: pytest %description %{name} is the missing compatibility layer between Python 2 and Python 3. It allows you to use a single, clean Python 3.x-compatible codebase to support both Python 2 and Python 3 with minimal overhead. It provides ``future`` and ``past`` packages with backports and forward ports of features from Python 3 and 2. It also comes with ``futurize`` and ``pasteurize``, customized 2to3-based scripts that helps you to convert either Py2 or Py3 code easily to support both Python 2 and 3 in a single clean Py3-style codebase, module by module. %package -n python2-%{name} Summary: Easy, clean, reliable Python 2/3 compatibility %{?python_provide:%python_provide python2-%{name}} Provides: future = 0:%{version}-%{release} %description -n python2-%{name} Python2 %{name} is the missing compatibility layer between Python 2 and Python 3. It allows you to use a single, clean Python 3.x-compatible codebase to support both Python 2 and Python 3 with minimal overhead. It provides ``future`` and ``past`` packages with backports and forward ports of features from Python 3 and 2. It also comes with ``futurize`` and ``pasteurize``, customized 2to3-based scripts that helps you to convert either Py2 or Py3 code easily to support both Python 2 and 3 in a single clean Py3-style codebase, module by module. %if 0%{?with_python3} %package -n python3-%{name} Summary: Easy, clean, reliable Python 2/3 compatibility %{?python_provide:%python_provide python3-%{name}} BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-numpy BuildRequires: python3-requests BuildRequires: python3-pytest %description -n python3-%{name} Python3-%{name} is the missing compatibility layer between Python 2 and Python 3. It allows you to use a single, clean Python 3.x-compatible codebase to support both Python 2 and Python 3 with minimal overhead. It provides ``future`` and ``past`` packages with backports and forward ports of features from Python 3 and 2. It also comes with ``futurize`` and ``pasteurize``, customized 2to3-based scripts that helps you to convert either Py2 or Py3 code easily to support both Python 2 and 3 in a single clean Py3-style codebase, module by module. %endif # with_python3 %prep %setup -qc mv python-future-%{version} python2 pushd python2 find -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python2}|' %patch0 -p0 popd %if 0%{?with_python3} cp -a python2 python3 find python3 -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python3}|' %endif # with_python3 %build pushd python2 CFLAGS="%{optflags}" %{__python2} setup.py build --executable="%{__python2} -s" popd %if 0%{?with_python3} pushd python3 CFLAGS="%{optflags}" %{__python3} setup.py build --executable="%{__python3} -s" popd %endif # with_python3 %install %if 0%{?with_python3} pushd python3 CFLAGS="%{optflags}" %{__python3} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT mv $RPM_BUILD_ROOT%{_bindir}/futurize $RPM_BUILD_ROOT%{_bindir}/python%{python3_version}-futurize mv $RPM_BUILD_ROOT%{_bindir}/pasteurize $RPM_BUILD_ROOT%{_bindir}/python%{python3_version}-pasteurize sed -i -e '/^#!\//, 1d' $RPM_BUILD_ROOT%{python3_sitelib}/future/backports/test/pystone.py for i in futurize-3 futurize-%{?python3_shortver}; do touch $i install -p $i $RPM_BUILD_ROOT%{_bindir} ln -sf %{_bindir}/python%{python3_version}-futurize $RPM_BUILD_ROOT%{_bindir}/$i done for i in pasteurize-3 pasteurize-%{?python3_shortver}; do touch $i install -p $i $RPM_BUILD_ROOT%{_bindir} ln -sf %{_bindir}/python%{python3_version}-pasteurize $RPM_BUILD_ROOT%{_bindir}/$i done popd %endif pushd python2 CFLAGS="%{optflags}" %{__python2} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT cp -p $RPM_BUILD_ROOT%{_bindir}/futurize $RPM_BUILD_ROOT%{_bindir}/python%{python2_version}-futurize cp -p $RPM_BUILD_ROOT%{_bindir}/pasteurize $RPM_BUILD_ROOT%{_bindir}/python%{python2_version}-pasteurize for i in futurize futurize-2 futurize-%{python2_version}; do touch $i install -p $i $RPM_BUILD_ROOT%{_bindir} ln -sf %{_bindir}/python%{python2_version}-futurize $RPM_BUILD_ROOT%{_bindir}/$i done for i in pasteurize pasteurize-2 pasteurize-%{python2_version}; do touch $i install -p $i $RPM_BUILD_ROOT%{_bindir} ln -sf %{_bindir}/python%{python2_version}-pasteurize $RPM_BUILD_ROOT%{_bindir}/$i done sed -i -e '/^#!\//, 1d' $RPM_BUILD_ROOT%{python2_sitelib}/future/backports/test/pystone.py popd ##This packages ships PEM certificates in future/backports/test directory ##It's for testing purpose, i guess. Ignore them. %check pushd python2 PYTHONPATH=$PWD/build/lib py.test -v popd %if 0%{?with_python3} && !%{?with_python35} pushd python3 PYTHONPATH=$PWD/build/lib py.test-%{python3_version} -v popd %endif # with_python3 # with_python35 %files -n python2-%{name} %{!?_licensedir:%global license %doc} %doc python2/README.rst %license python2/LICENSE.txt %{_bindir}/futurize %{_bindir}/futurize-2* %{_bindir}/pasteurize %{_bindir}/pasteurize-2* %{_bindir}/python%{python2_version}-futurize %{_bindir}/python%{python2_version}-pasteurize %{python2_sitelib}/future/ %{python2_sitelib}/past/ %{python2_sitelib}/libfuturize/ %{python2_sitelib}/libpasteurize/ %{python2_sitelib}/tkinter/ %{python2_sitelib}/_dummy_thread/ %{python2_sitelib}/_markupbase/ %{python2_sitelib}/_thread/ %{python2_sitelib}/builtins/ %{python2_sitelib}/copyreg/ %{python2_sitelib}/html/ %{python2_sitelib}/http/ %{python2_sitelib}/queue/ %{python2_sitelib}/reprlib/ %{python2_sitelib}/socketserver/ %{python2_sitelib}/winreg/ %{python2_sitelib}/xmlrpc/ %{python2_sitelib}/*.egg-info %if 0%{?with_python3} %files -n python3-%{name} %{!?_licensedir:%global license %doc} %license python3/LICENSE.txt %doc python3/README.rst %{_bindir}/futurize-3* %{_bindir}/pasteurize-3* %{_bindir}/python%{python3_version}-futurize %{_bindir}/python%{python3_version}-pasteurize %{python3_sitelib}/future/ %{python3_sitelib}/past/ %{python3_sitelib}/libfuturize/ %{python3_sitelib}/libpasteurize/ %{python3_sitelib}/*.egg-info %endif %changelog * Wed Jul 26 2017 Fedora Release Engineering - 0.16.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild * Fri Feb 10 2017 Fedora Release Engineering - 0.16.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild * Mon Dec 19 2016 Miro HronĨok - 0.16.0-3 - Rebuild for Python 3.6 * Tue Dec 13 2016 Antonio Trande - 0.16.0-2 - BR Python2 dependencies unversioned on epel6 * Tue Dec 13 2016 Antonio Trande - 0.16.0-1 - Update to 0.16.0 * Wed Aug 17 2016 Antonio Trande - 0.15.2-10 - Rebuild for Python 3.5.2 * Tue Jul 19 2016 Fedora Release Engineering - 0.15.2-9 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages * Wed Feb 03 2016 Fedora Release Engineering - 0.15.2-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Fri Jan 29 2016 Antonio Trande - 0.15.2-7 - Renamed Python2 package * Thu Dec 10 2015 Antonio Trande - 0.15.2-6 - SPEC file adapted to recent guidelines for Python * Fri Nov 13 2015 Antonio Trande 0.15.2-5 - Rebuild * Fri Nov 13 2015 Antonio Trande 0.15.2-4 - Python3 tests temporarily disabled with Python35 * Tue Nov 10 2015 Fedora Release Engineering - 0.15.2-3 - Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 * Mon Sep 14 2015 Antonio Trande 0.15.2-2 - Patch0 updated * Fri Sep 11 2015 Antonio Trande 0.15.2-1 - Update to 0.15.2 * Wed Sep 02 2015 Antonio Trande 0.15.0-4 - Added patch to exclude failed tests (patch0) * Wed Aug 26 2015 Antonio Trande 0.15.0-3 - Added python-provides macro * Thu Jul 30 2015 Antonio Trande 0.15.0-2 - Fixed Python3 packaging on Fedora - Removed configparser backport (patch1) * Tue Jul 28 2015 Antonio Trande 0.15.0-1 - Initial build