%global srcname pip %global base_version 23.0.1 %global upstream_version %{base_version}%{?prerel} %global python_wheel_name %{srcname}-%{upstream_version}-py3-none-any.whl %global bashcompdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null) %define __python /usr/bin/python2 Name: python2-%{srcname} Version: %{base_version}%{?prerel:~%{prerel}} Release: 1%{?dist} Summary: A tool for installing and managing Python packages License: MIT AND Python-2.0.1 AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND LGPL-2.1-only AND MPL-2.0 AND (Apache-2.0 OR BSD-2-Clause) URL: https://pip.pypa.io/ Source0: https://github.com/pypa/pip/archive/%{upstream_version}/%{srcname}-%{upstream_version}.tar.gz BuildArch: noarch Patch: remove-existing-dist-only-if-path-conflicts.patch Patch: dummy-certifi.patch Patch: nowarn-pip._internal.main.patch Patch: no-version-warning.patch Patch: https://github.com/pypa/pip/pull/11883.patch Patch: https://github.com/pypa/pip/pull/11904.patch Source10: pip-allow-different-versions.patch BuildRequires: python2-devel BuildRequires: python2-rpm-generators BuildRequires: python2-setuptools BuildRequires: bash-completion BuildRequires: python2-wheel BuildRequires: ca-certificates Requires: ca-certificates Recommends: python2-setuptools Provides: pip = %{version}-%{release} Conflicts: python2-pip < %{version}-%{release} Requires: python2-libs >= 2.7 Recommends: (libcrypt.so.1()(64bit) if python%{1}(x86-64)) Recommends: (libcrypt.so.1 if python%{1}(x86-32)) Provides: bundled(python%{1}dist(cachecontrol)) = 0.12.11 Provides: bundled(python%{1}dist(certifi)) = 2022.12.7 Provides: bundled(python%{1}dist(chardet)) = 5.1 Provides: bundled(python%{1}dist(colorama)) = 0.4.6 Provides: bundled(python%{1}dist(distlib)) = 0.3.6 Provides: bundled(python%{1}dist(distro)) = 1.8 Provides: bundled(python%{1}dist(idna)) = 3.4 Provides: bundled(python%{1}dist(msgpack)) = 1.0.4 Provides: bundled(python%{1}dist(packaging)) = 21.3 Provides: bundled(python%{1}dist(platformdirs)) = 2.6.2 Provides: bundled(python%{1}dist(pygments)) = 2.13 Provides: bundled(python%{1}dist(pyparsing)) = 3.0.9 Provides: bundled(python%{1}dist(pyproject-hooks)) = 1 Provides: bundled(python%{1}dist(requests)) = 2.28.2 Provides: bundled(python%{1}dist(resolvelib)) = 0.8.1 Provides: bundled(python%{1}dist(rich)) = 12.6 Provides: bundled(python%{1}dist(setuptools)) = 44 Provides: bundled(python%{1}dist(six)) = 1.16 Provides: bundled(python%{1}dist(tenacity)) = 8.1 Provides: bundled(python%{1}dist(tomli)) = 2.0.1 Provides: bundled(python%{1}dist(typing-extensions)) = 4.4 Provides: bundled(python%{1}dist(urllib3)) = 1.26.14 Provides: bundled(python%{1}dist(webencodings)) = 0.5.1 %description pip is a package management system used to install and manage software packages written in Python. Many packages can be found in the Python Package Index (PyPI). pip is a recursive acronym that can stand for either "Pip Installs Packages" or "Pip Installs Python". %prep %autosetup -p1 -n %{srcname}-%{upstream_version} # this goes together with patch4 rm src/pip/_vendor/certifi/*.pem # Do not use furo as HTML theme in docs # furo is not available in Fedora sed -i '/html_theme = "furo"/d' docs/html/conf.py # towncrier extension for Sphinx is not yet available in Fedora sed -i '/"sphinxcontrib.towncrier",/d' docs/html/conf.py # tests expect wheels in here ln -s %{python_wheel_dir} tests/data/common_wheels # Remove windows executable binaries rm -v src/pip/_vendor/distlib/*.exe sed -i '/\.exe/d' setup.py %build %py2_build_wheel %install %{python2} dist/%{python_wheel_name}/pip install \ --root %{buildroot} \ --no-deps \ --disable-pip-version-check \ --progress-bar off \ --verbose \ --ignore-installed \ --no-warn-script-location \ --no-index \ --no-cache-dir \ --find-links dist \ 'pip==%{upstream_version}' for PIP in %{buildroot}%{_bindir}/pip*; do patch -p1 --no-backup-if-mismatch $PIP < %{SOURCE10} done mkdir -p %{buildroot}%{bashcompdir} PYTHONPATH=%{buildroot}%{python3_sitelib} \ %{buildroot}%{_bindir}/pip completion --bash \ > %{buildroot}%{bashcompdir}/pip3 sed -i -e "s/^\\(complete.*\\) pip\$/\\1 pip pip{,-}{3,%{python3_version}}/" \ -e s/_pip_completion/_pip3_completion/ \ %{buildroot}%{bashcompdir}/pip3 ln -s ./pip2 %{buildroot}%{_bindir}/pip-2 ln -s ./pip-2 %{buildroot}%{_bindir}/pip-2 # Make sure the INSTALLER is not pip and remove RECORD # %%pyproject macros do this for all packages echo rpm > %{buildroot}%{python3_sitelib}/pip-%{upstream_version}.dist-info/INSTALLER rm %{buildroot}%{python3_sitelib}/pip-%{upstream_version}.dist-info/RECORD mkdir -p %{buildroot}%{python_wheel_dir} install -p dist/%{python_wheel_name} -t %{buildroot}%{python_wheel_dir} %files %doc README.rst %license %{python3_sitelib}/pip-%{upstream_version}.dist-info/LICENSE.txt %{_bindir}/pip %{_bindir}/pip2 %{_bindir}/pip-2 %{_bindir}/pip2.7 %{_bindir}/pip-2.7 %{python2_sitelib}/pip* %dir %{bashcompdir} %{bashcompdir}/pip2 %license LICENSE.txt # we own the dir for simplicity %dir %{python_wheel_dir}/ %{python_wheel_dir}/%{python_wheel_name} %changelog