[python-setuptools] Add a switch to build setuptools as wheel

Tomas Radej tradej at fedoraproject.org
Wed Apr 23 12:34:53 UTC 2014


commit ce1bf68c4a699a6bc98f9587bc7a30b7e938968e
Author: Matej Stuchlik <mstuchli at redhat.com>
Date:   Mon Apr 21 17:23:27 2014 +0200

    Add a switch to build setuptools as wheel

 python-setuptools.spec |   54 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 52 insertions(+), 2 deletions(-)
---
diff --git a/python-setuptools.spec b/python-setuptools.spec
index 221c55f..69a2c32 100644
--- a/python-setuptools.spec
+++ b/python-setuptools.spec
@@ -1,14 +1,26 @@
 %if 0%{?fedora}
 %global with_python3 1
+
+# This controls whether setuptools is build as a wheel or not,
+# simplifying Python 3.4 bootstraping process
+%global build_wheel 0
 %else
 %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())")}
 %endif
 
 %global srcname setuptools
+%if 0%{?build_wheel}
+%global python2_wheelname %{srcname}-%{version}-py2.py3-none-any.whl
+%global python2_record %{python2_sitelib}/%{srcname}-%{version}.dist-info/RECORD
+%if 0%{?with_python3}
+%global python3_wheelname %python2_wheelname
+%global python3_record %{python3_sitelib}/%{srcname}-%{version}.dist-info/RECORD
+%endif
+%endif
 
 Name:           python-setuptools
 Version:        2.0
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Easily build and distribute Python packages
 
 Group:          Applications/System
@@ -25,8 +37,16 @@ BuildArch:      noarch
 Requires: python-backports-ssl_match_hostname
 BuildRequires: python-backports-ssl_match_hostname
 BuildRequires:  python2-devel
+%if 0%{?build_wheel}
+BuildRequires:  python-pip
+BuildRequires:  python-wheel
+%endif
 %if 0%{?with_python3}
 BuildRequires:  python3-devel
+%if 0%{?build_wheel}
+BuildRequires:  python3-pip
+BuildRequires:  python3-wheel
+%endif
 %endif # if with_python3
 # For unittests
 BuildRequires: subversion
@@ -92,12 +112,19 @@ for file in setuptools/command/easy_install.py ; do
 done
 
 %build
-
+%if 0%{?build_wheel}
+%{__python} setup.py bdist_wheel
+%else
 CFLAGS="$RPM_OPT_FLAGS" %{__python} setup.py build
+%endif
 
 %if 0%{?with_python3}
 pushd %{py3dir}
+%if 0%{?build_wheel}
+%{__python3} setup.py bdist_wheel
+%else
 CFLAGS="$RPM_OPT_FLAGS" %{__python3} setup.py build
+%endif
 popd
 %endif # with_python3
 
@@ -110,9 +137,22 @@ rm -rf %{buildroot}
 # Change to defaulting to python3 version in F22
 %if 0%{?with_python3}
 pushd %{py3dir}
+%if 0%{?build_wheel}
+pip3 install -I dist/%{python3_wheelname} --root %{buildroot} --strip-file-prefix %{buildroot}
+
+# TODO: we have to remove this by hand now, but it'd be nice if we wouldn't have to
+# (pip install wheel doesn't overwrite)
+rm %{buildroot}%{_bindir}/easy_install
+
+sed -i '/\/usr\/bin\/easy_install,/d' %{buildroot}%{python3_record}
+%else
 %{__python3} setup.py install --skip-build --root %{buildroot}
+%endif
 
 rm -rf %{buildroot}%{python3_sitelib}/setuptools/tests
+%if 0%{?build_wheel}
+sed -i '/^setuptools\/tests\//d' %{buildroot}%{python3_record}
+%endif
 
 install -p -m 0644 %{SOURCE1} %{SOURCE2} %{py3dir}
 find %{buildroot}%{python3_sitelib} -name '*.exe' | xargs rm -f
@@ -120,9 +160,16 @@ chmod +x %{buildroot}%{python3_sitelib}/setuptools/command/easy_install.py
 popd
 %endif # with_python3
 
+%if 0%{?build_wheel}
+pip2 install -I dist/%{python2_wheelname} --root %{buildroot} --strip-file-prefix %{buildroot}
+%else
 %{__python} setup.py install --skip-build --root %{buildroot}
+%endif
 
 rm -rf %{buildroot}%{python_sitelib}/setuptools/tests
+%if 0%{?build_wheel}
+sed -i '/^setuptools\/tests\//d' %{buildroot}%{python2_record}
+%endif
 
 install -p -m 0644 %{SOURCE1} %{SOURCE2} .
 find %{buildroot}%{python_sitelib} -name '*.exe' | xargs rm -f
@@ -157,6 +204,9 @@ rm -rf %{buildroot}
 %endif # with_python3
 
 %changelog
+* Wed Apr 23 2014 Matej Stuchlik <mstuchli at redhat.com> - 2.0-2
+- Add a switch to build setuptools as wheel
+
 * Mon Dec  9 2013 Toshio Kuratomi <toshio at fedoraproject.org> - 2.0-1
 - Update to new upstream release with a few things removed from the API:
   Changelog: https://pypi.python.org/pypi/setuptools#id139


More information about the scm-commits mailing list