diff --git a/SPECS/python-setuptools.spec b/SPECS/python-setuptools.spec index 202ffcd..d5eb135 100644 --- a/SPECS/python-setuptools.spec +++ b/SPECS/python-setuptools.spec @@ -3,334 +3,347 @@ # WARNING When bootstrapping, disable tests as well, # because tests need pip. %bcond_with bootstrap -%bcond_without tests - -%bcond_with py2_wheel - -%if 0%{?rhel} && 0%{?rhel} <= 7 -%global _without_python3 1 -# define some macros for RHEL 6 -%global __python2 %__python -%global python2_sitelib %python_sitelib -%endif - -# Note(hguemar): overrides must be placed *before* those -# Otherwise it doesn't work -%bcond_without python2 -%bcond_without python3 +%bcond_with tests +# Similar to what we have in pythonX.Y.spec files. +# If enabled, provides unversioned executables and other stuff. +# Disable it if you build this package in an alternative stack. +%bcond_without main_python %if %{without bootstrap} -%global python_wheelname %{srcname}-%{version}-py2.py3-none-any.whl -%if %{with python2} -%global python2_wheelname %python_wheelname -%global python2_record %{python2_sitelib}/%{srcname}-%{version}.dist-info/RECORD -%global python2_wheeldir %{_datadir}/python2-wheels -%endif # with python2 -%if %{with python3} -%global python3_wheelname %python_wheelname +%global python_wheelname %{srcname}-%{version}-py3-none-any.whl %global python3_record %{python3_sitelib}/%{srcname}-%{version}.dist-info/RECORD -%global python3_wheeldir %{_datadir}/python3-wheels -%endif # with python3 -%endif # without bootstrap +%endif +%global python_wheeldir %{_datadir}/python-wheels Name: python-setuptools -Version: 39.2.0 -Release: 6%{?dist} +# When updating, update the bundled libraries versions bellow! +Version: 50.3.2 +Release: 1%{?dist} Summary: Easily build and distribute Python packages - -Group: Applications/System -License: MIT +# setuptools is MIT +# appdirs is MIT +# packaging is BSD or ASL 2.0 +# pyparsing is MIT +# the setuptools logo has unknown license and possible TM problems, +# but the sdist **does not** contain it, +# see https://github.com/pypa/setuptools/issues/2227 +License: MIT and (BSD or ASL 2.0) URL: https://pypi.python.org/pypi/%{srcname} -Source0: https://files.pythonhosted.org/packages/source/s/%{srcname}/%{srcname}-%{version}.zip - -# In Fedora, sudo setup.py install installs to /usr/local/lib/pythonX.Y/site-packages -# But pythonX doesn't own that dir, that would be against FHS -# We need to create it if it doesn't exist -# https://bugzilla.redhat.com/show_bug.cgi?id=1576924 -Patch0: create-site-packages.patch +Source0: %{pypi_source %{srcname} %{version} zip} BuildArch: noarch BuildRequires: gcc -%if %{with python2} -BuildRequires: python2-devel -%if %{with py2_wheel} -BuildRequires: python2-pip -BuildRequires: python2-wheel -%endif # with py2_wheel -%endif # with python2 - -%if %{with python3} -BuildRequires: python3-devel + +BuildRequires: python%{python3_pkgversion}-devel %if %{with tests} -BuildRequires: python3-pip -BuildRequires: python3-pytest -BuildRequires: python3-mock +BuildRequires: python%{python3_pkgversion}-pip +BuildRequires: python%{python3_pkgversion}-pytest +BuildRequires: python%{python3_pkgversion}-mock +BuildRequires: python%{python3_pkgversion}-pytest-fixture-config +BuildRequires: python%{python3_pkgversion}-pytest-virtualenv +BuildRequires: python%{python3_pkgversion}-jaraco-envs %endif # with tests %if %{without bootstrap} -BuildRequires: python3-pip -BuildRequires: python3-wheel +BuildRequires: python%{python3_pkgversion}-pip +BuildRequires: python%{python3_pkgversion}-wheel +# python3 bootstrap: this is built before the final build of python3, which +# adds the dependency on python3-rpm-generators, so we require it manually +# The minimal version is for bundled provides verification script +BuildRequires: python3-rpm-generators %endif # without bootstrap -%endif # with python3 - -# We're now back to setuptools as the package. -# Keep the python-distribute name active for a few releases. Eventually we'll -# want to get rid of the Provides and just keep the Obsoletes -Provides: python-distribute = %{version}-%{release} -Obsoletes: python-distribute < 0.6.36-2 - -%global _description \ -Setuptools is a collection of enhancements to the Python distutils that allow \ -you to more easily build and distribute Python packages, especially ones that \ -have dependencies on other packages. \ -\ -This package also contains the runtime components of setuptools, necessary to \ -execute the software that requires pkg_resources.py. - -%description %_description - -%if %{with python3} -%package -n platform-python-setuptools -Summary: Easily build and distribute Python 3 packages -Group: Applications/System -Conflicts: python3-setuptools < 39.2.0-4%{?dist} - -%description -n platform-python-setuptools %_description -%endif # with python3 +%description +Setuptools is a collection of enhancements to the Python distutils that allow +you to more easily build and distribute Python packages, especially ones that +have dependencies on other packages. +This package also contains the runtime components of setuptools, necessary to +execute the software that requires pkg_resources. -%if %{with python2} -%package -n python2-setuptools -Summary: Easily build and distribute Python packages -%{?python_provide:%python_provide python2-setuptools} +# Virtual provides for the packages bundled by setuptools. +# You can generate it with: +# %%{_rpmconfigdir}/pythonbundles.py --namespace 'python%%{python3_pkgversion}dist' pkg_resources/_vendor/vendored.txt +%global bundled %{expand: +Provides: bundled(python%{python3_pkgversion}dist(appdirs)) = 1.4.3 +Provides: bundled(python%{python3_pkgversion}dist(packaging)) = 20.4 +Provides: bundled(python%{python3_pkgversion}dist(pyparsing)) = 2.2.1 +} -%description -n python2-setuptools %_description - -%endif # with python2 +%package -n python%{python3_pkgversion}-setuptools +Summary: Easily build and distribute Python 3 packages +%{bundled} +%if %{with bootstrap} +Provides: python3dist(setuptools) = %{version} +Provides: python%{python3_version}dist(setuptools) = %{version} +%endif +Obsoletes: platform-python-setuptools < %{version} +Provides: platform-python-setuptools = %{version}-%{release} -%if %{with python3} -%package -n python3-setuptools -Summary: Easily build and distribute Python 3 packages -Group: Applications/System -Requires: platform-python-setuptools = %{version}-%{release} -%{?python_provide:%python_provide python3-setuptools} -%description -n python3-setuptools %_description +%description -n python%{python3_pkgversion}-setuptools +Setuptools is a collection of enhancements to the Python 3 distutils that allow +you to more easily build and distribute Python 3 packages, especially ones that +have dependencies on other packages. -%endif # with python3 +This package also contains the runtime components of setuptools, necessary to +execute the software that requires pkg_resources. %if %{without bootstrap} -%if %{with py2_wheel} -%if %{with python2} -%package -n python2-setuptools-wheel +%package wheel Summary: The setuptools wheel +%{bundled} -%description -n python2-setuptools-wheel +%description wheel A Python wheel of setuptools to use with venv. -%endif #with python2 -%endif #with py2_wheel - -%if %{with python3} -%package -n python3-setuptools-wheel -Summary: The setuptools wheel +%endif -%description -n python3-setuptools-wheel -A Python wheel of setuptools to use with venv. -%endif #with python3 -%endif #with bootstrap %prep %autosetup -p1 -n %{srcname}-%{version} - -# We can't remove .egg-info (but it doesn't matter, since it'll be rebuilt): -# The problem is that to properly execute setuptools' setup.py, -# it is needed for setuptools to be loaded as a Distribution -# (with egg-info or .dist-info dir), it's not sufficient -# to just have them on PYTHONPATH -# Running "setup.py install" without having setuptools installed -# as a distribution gives warnings such as -# ... distutils/dist.py:267: UserWarning: Unknown distribution option: 'entry_points' -# and doesn't create "easy_install" and .egg-info directory -# Note: this is only a problem if bootstrapping wheel or building on RHEL, -# otherwise setuptools are installed as dependency into buildroot +rm -r %{srcname}.egg-info # Strip shbang -find setuptools -name \*.py | xargs sed -i -e '1 {/^#!\//d}' +find setuptools pkg_resources -name \*.py | xargs sed -i -e '1 {/^#!\//d}' # Remove bundled exes rm -f setuptools/*.exe # These tests require internet connection -rm setuptools/tests/test_integration.py +rm setuptools/tests/test_integration.py +# We don't do linting or coverage here +sed -i pytest.ini -e 's/ --flake8//' \ + -e 's/ --cov//' %build +# Warning, different bootstrap meaning here, has nothing to do with our bcond +# This bootstraps .egg-info directory needed to build setuptools +%{__python3} bootstrap.py -%if %{with python2} -%if %{with py2_wheel} && %{without bootstrap} -export RHEL_ALLOW_PYTHON2_FOR_BUILD=1 -%py2_build_wheel -%else -export RHEL_ALLOW_PYTHON2_FOR_BUILD=1 -%py2_build -%endif # without bootstrap + py2_wheel -%endif # with python2 - -%if %{with python3} %if %{without bootstrap} %py3_build_wheel %else + %py3_build -%endif # without bootstrap -%endif # with python3 +%endif %install -# Must do the python3 install first because the scripts in /usr/bin are -# overwritten with every setup.py install (and we want the python2 version to -# be the default for now). -%if %{with python3} %if %{without bootstrap} -%py3_install_wheel %{python3_wheelname} - -# Remove /usr/bin/easy_install from the record as later on we delete the file -sed -i '/\/usr\/bin\/easy_install,/d' %{buildroot}%{python3_record} +%py3_install_wheel %{python_wheelname} %else %py3_install %endif -# 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 +# This is not installed (in 45.2.0 anyway), but better be safe than sorry +rm -rf %{buildroot}%{python3_sitelib}/{setuptools,pkg_resources}/tests -rm -rf %{buildroot}%{python3_sitelib}/setuptools/tests %if %{without bootstrap} sed -i '/^setuptools\/tests\//d' %{buildroot}%{python3_record} %endif find %{buildroot}%{python3_sitelib} -name '*.exe' | xargs rm -f -%endif # with python3 - - -%if %{with python2} -export RHEL_ALLOW_PYTHON2_FOR_BUILD=1 -%if %{with py2_wheel} -%py2_install_wheel %{python2_wheelname} -%else -%py2_install -%endif #with py2_wheel - -rm -rf %{buildroot}%{python2_sitelib}/setuptools/tests -%if %{with py2_wheel} -sed -i '/^setuptools\/tests\//d' %{buildroot}%{python2_record} -%endif # with py2_wheel - -find %{buildroot}%{python2_sitelib} -name '*.exe' | xargs rm -f -%endif # with python2 # Don't ship these -rm -r docs/{Makefile,conf.py,_*} +rm -r docs/{conf.py,_*} %if %{without bootstrap} -%if %{with py2_wheel} -%if %{with python2} -mkdir -p %{buildroot}%{python2_wheeldir} -install -p dist/%{python2_wheelname} -t %{buildroot}%{python2_wheeldir} -%endif #with python2 -%endif #with py2_wheel - -%if %{with python3} -mkdir -p %{buildroot}%{python3_wheeldir} -install -p dist/%{python3_wheelname} -t %{buildroot}%{python3_wheeldir} -%endif #with python3 -%endif #with bootstrap +mkdir -p %{buildroot}%{python_wheeldir} +install -p dist/%{python_wheelname} -t %{buildroot}%{python_wheeldir} +%endif +%if %{without main_python} +rm %{buildroot}%{_bindir}/easy_install +%endif %if %{with tests} %check -%if %{with python3} -# --ignore=setuptools/tests/test_virtualenv.py: because virtualenv executable -# is configured only for Python 2 version of virtualenv—this needs to be fixed -# in the `python-pytest-virtualenv` package -PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=$(pwd) py.test-%{python3_version} --ignore=setuptools/tests/test_virtualenv.py -%endif # with python3 -%endif # with tests +# Verify bundled provides are up to date +%{_rpmconfigdir}/pythonbundles.py pkg_resources/_vendor/vendored.txt --compare-with '%{bundled}' +# Upstream tests +# --ignore=pavement.py: +# pavement.py is only used by upstream to do releases and vendoring, we don't ship it +PYTHONPATH=$(pwd) %pytest --ignore=pavement.py +%endif # with tests -%if %{with python2} -%files -n python2-setuptools -%license LICENSE -%doc docs/* CHANGES.rst README.rst -%{python2_sitelib}/* -%{_bindir}/easy_install -%{_bindir}/easy_install-2.* -%endif # with python2 - -%if %{with python3} -%files -n python3-setuptools -%license LICENSE -%doc docs/* CHANGES.rst README.rst -# The easy_install-3 binary is created using alternatives -# defined in the python36 package -%{_bindir}/easy_install-3.* -%files -n platform-python-setuptools +%files -n python%{python3_pkgversion}-setuptools %license LICENSE %doc docs/* CHANGES.rst README.rst %{python3_sitelib}/easy_install.py %{python3_sitelib}/pkg_resources/ %{python3_sitelib}/setuptools*/ +%{python3_sitelib}/_distutils_hack/ +%{python3_sitelib}/distutils-precedence.pth %{python3_sitelib}/__pycache__/* -%endif # with python3 +%if %{with main_python} +%{_bindir}/easy_install +%endif +%{_bindir}/easy_install-3.* %if %{without bootstrap} -%if %{with py2_wheel} -%if %{with python2} -%files -n python2-setuptools-wheel -%license LICENSE -# we own the dir for simplicity -%dir %{python2_wheeldir}/ -%{python2_wheeldir}/%{python2_wheelname} -%endif #with python2 -%endif #with py2_wheel - -%if %{with python3} -%files -n python3-setuptools-wheel +%files wheel %license LICENSE # we own the dir for simplicity -%dir %{python3_wheeldir}/ -%{python3_wheeldir}/%{python3_wheelname} -%endif #with python3 -%endif #with bootstrap +%dir %{python_wheeldir}/ +%{python_wheeldir}/%{python_wheelname} +%endif %changelog -* Wed Mar 25 2020 Charalampos Stratakis - 39.2.0-6 -- Create /usr/local/lib/pythonX.Y when needed -Resolves: rhbz#1808301 +* Thu Nov 05 2020 Joel Capitao - 50.3.2-1 +- Update to 50.3.2 -* Wed Apr 17 2019 Petr Viktorin - 39.2.0-5 -- Add subpackages with wheels -Resolves: rhbz#1718032 +* Thu Oct 29 2020 Joel Capitao - 50.3.0-1 +- Update to 50.3.0 -* Mon Oct 22 2018 Lumír Balhar - 39.2.0-4 -- New subpackage platform-python-setuptools without files from /usr/bin/* -- python3-setuptools contains only files from /usr/bin/* and depends - on platform-python-setuptools -- Resolves: rhbz#1641973 +* Fri Sep 04 2020 Tomas Hrnciar - 50.1.0-1 +- Update to 50.1.0 (#1873889) -* Mon Jun 25 2018 Petr Viktorin - 39.2.0-3 -- Allow Python 2 for build - see https://hurl.corp.redhat.com/rhel8-py2 +* Fri Aug 21 2020 Petr Viktorin - 49.6.0-1 +- Update to 49.6.0 (#1862791) -* Fri Jun 22 2018 Petr Viktorin - 39.2.0-2 -- Do not use wheel on Python 2 +* Wed Jul 29 2020 Miro Hrončok - 49.1.3-1 +- Update to 49.1.3 (#1853597) +- https://setuptools.readthedocs.io/en/latest/history.html#v49-1-3 -* Tue Jun 19 2018 Charalampos Stratakis - 39.2.0-1 -- update to 39.2.0 Fixes bug #1572889 +* Wed Jul 29 2020 Fedora Release Engineering - 47.3.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jun 26 2020 Miro Hrončok - 47.3.1-1 +- Update to 47.3.1 (#1847049) +- https://setuptools.readthedocs.io/en/latest/history.html#v47-3-1 + +* Mon Jun 01 2020 Charalampos Stratakis - 47.1.1-1 +- Update to 47.1.1 (#1841123) +- https://setuptools.readthedocs.io/en/latest/history.html#v47-1-1 + +* Sun May 24 2020 Miro Hrončok - 46.4.0-4 +- Rebuilt for Python 3.9 + +* Thu May 21 2020 Miro Hrončok - 46.4.0-3 +- Bootstrap for Python 3.9 + +* Thu May 21 2020 Miro Hrončok - 46.4.0-2 +- Bootstrap for Python 3.9 + +* Mon May 18 2020 Tomas Hrnciar - 46.4.0-1 +- Update to 46.4.0 (#1835411) +- https://setuptools.readthedocs.io/en/latest/history.html#v46-4-0 + +* Tue May 12 2020 Tomas Hrnciar - 46.2.0-1 +- Update to 46.2.0 (#1833826) +- https://setuptools.readthedocs.io/en/latest/history.html#v46-2-0 + +* Thu Mar 26 2020 Miro Hrončok - 46.1.3-1 +- Upgrade to 46.1.3 (#1817189) +- https://setuptools.readthedocs.io/en/latest/history.html#v46-1-3 + +* Tue Mar 10 2020 Miro Hrončok - 46.0.0-1 +- Upgrade to 46.0.0 (#1811340) +- https://setuptools.readthedocs.io/en/latest/history.html#v46-0-0 + +* Tue Feb 11 2020 Miro Hrončok - 45.2.0-1 +- Upgrade to 45.2.0 (#1775943) +- https://setuptools.readthedocs.io/en/latest/history.html#v45-2-0 +- No longer supports Python 2 + +* Thu Jan 30 2020 Fedora Release Engineering - 41.6.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Nov 04 2019 Tomas Orsava - 41.6.0-1 +- Upgrade to 41.6.0 (#1758945). +- https://setuptools.readthedocs.io/en/latest/history.html#v41-6-0 +- Disabled a failing upstream test: https://github.com/pypa/setuptools/issues/1896 + +* Tue Sep 03 2019 Randy Barlow - 41.2.0-1 +- Upgrade to 41.2.0 (#1742718). +- https://setuptools.readthedocs.io/en/latest/history.html#v41-2-0 + +* Mon Aug 26 2019 Miro Hrončok - 41.0.1-9 +- Move python2-setuptools to a separate package + +* Sun Aug 18 2019 Miro Hrončok - 41.0.1-8 +- Rebuilt for Python 3.8 -* Thu Jun 07 2018 Petr Viktorin - 39.0.1-2 -- Remove test requirements on python2 packages and some exotic packages -- Skip tests on Python 2 +* Wed Aug 14 2019 Miro Hrončok - 41.0.1-7 +- Bootstrap for Python 3.8 + +* Wed Aug 14 2019 Miro Hrončok - 41.0.1-6 +- Provide pythonXdist(setuptools) when bootstrapping + +* Wed Aug 14 2019 Miro Hrončok - 41.0.1-5 +- Bootstrap for Python 3.8 + +* Fri Jul 26 2019 Fedora Release Engineering - 41.0.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Jul 16 2019 Miro Hrončok - 41.0.1-3 +- Make /usr/bin/easy_install Python 3 +- Drop obsoleted Obsoletes + +* Fri Jun 21 2019 Petr Viktorin - 41.0.1-2 +- Remove optional test dependencies for Python 2 +- Skip test_virtualenv on Python 2 + +* Thu Apr 25 2019 Miro Hrončok - 41.0.1-1 +- Update to 41.0.1 (#1695846) +- https://github.com/pypa/setuptools/blob/v41.0.1/CHANGES.rst + +* Tue Feb 05 2019 Miro Hrončok - 40.8.0-1 +- Update to 40.8.0 (#1672756) +- https://github.com/pypa/setuptools/blob/v40.8.0/CHANGES.rst + +* Sun Feb 03 2019 Miro Hrončok - 40.7.3-1 +- Hotfix update to 40.7.3 (#1672084) +- https://github.com/pypa/setuptools/blob/v40.7.3/CHANGES.rst + +* Sat Feb 02 2019 Miro Hrončok - 40.7.2-1 +- Hotfix update to 40.7.2 (#1671608) +- https://github.com/pypa/setuptools/blob/v40.7.2/CHANGES.rst + +* Sat Feb 02 2019 Fedora Release Engineering - 40.7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jan 29 2019 Miro Hrončok - 40.7.1-1 +- Hotfix update to 40.7.1 (#1670243) +- https://github.com/pypa/setuptools/blob/v40.7.1/CHANGES.rst + +* Mon Jan 28 2019 Miro Hrončok - 40.7.0-1 +- Update to 40.7.0 (#1669876) +- https://github.com/pypa/setuptools/blob/v40.7.0/CHANGES.rst + +* Mon Sep 24 2018 Miro Hrončok - 40.4.3-1 +- Update to 40.4.3 to fix dire DeprecationWarnings (#1627071) +- List vendored libraries +- https://github.com/pypa/setuptools/blob/v40.4.3/CHANGES.rst + +* Wed Sep 19 2018 Randy Barlow - 40.4.1-1 +- Update to 40.4.1 (#1599307). +- https://github.com/pypa/setuptools/blob/v40.4.1/CHANGES.rst + +* Wed Aug 15 2018 Petr Viktorin - 39.2.0-7 +- Add a subpackage with wheels +- Remove the python3 bcond +- Remove macros for RHEL 6 + +* Thu Jul 19 2018 Miro Hrončok - 39.2.0-6 +- Create /usr/local/lib/pythonX.Y when needed (#1576924) + +* Sat Jul 14 2018 Fedora Release Engineering - 39.2.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jun 18 2018 Miro Hrončok - 39.2.0-4 +- Rebuilt for Python 3.7 + +* Wed Jun 13 2018 Miro Hrončok - 39.2.0-3 +- Bootstrap for Python 3.7 + +* Wed Jun 13 2018 Miro Hrončok - 39.2.0-2 +- Bootstrap for Python 3.7 + +* Wed May 23 2018 Charalampos Stratakis - 39.2.0-1 +- update to 39.2.0 Fixes bug #1572889 * Tue Mar 20 2018 Charalampos Stratakis - 39.0.1-1 - update to 39.0.1 Fixes bug #1531527 @@ -856,7 +869,7 @@ Resolves: rhbz#1718032 * Thu Feb 04 2010 Toshio Kuratomi - 0.6.10-3 - First build with python3 support enabled. - + * Fri Jan 29 2010 Toshio Kuratomi - 0.6.10-2 - Really disable the python3 portion