diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 72d39d5..0000000 --- a/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -/*.tar.gz -/*.zip -/pip-*/ -/pip/ -/results_python-pip/ -*.rpm -*.whl diff --git a/changelog b/changelog deleted file mode 100644 index f16cb91..0000000 --- a/changelog +++ /dev/null @@ -1,496 +0,0 @@ -* Mon Jan 22 2024 Miro Hrončok - 23.3.1-5 -- Switched to autogenerated BuildRequires for test dependencies, - which removed some that were no longer necessary - -* Mon Jan 22 2024 Fedora Release Engineering - 23.3.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 12 2024 Maxwell G - 23.3.1-3 -- Remove unused python3-mock dependency - -* Wed Jan 03 2024 Maxwell G - 23.3.1-2 -- Remove weak dependency on python3-setuptools - -* Thu Nov 16 2023 Petr Viktorin - 23.3.1-1 -- Update to 23.3.1 -Resolves: rhbz#2244306 - -* Fri Aug 04 2023 Miro Hrončok - 23.2.1-1 -- Update to 23.2.1 -Resolves: rhbz#2223082 - -* Fri Aug 04 2023 Miro Hrončok - 23.1.2-7 -- Actually run the tests and build the docs when building this package - -* Wed Jul 26 2023 Miro Hrončok - 23.1.2-6 -- Drop no-longer-needed custom changes to /usr/bin/pip* -- Stop Recommending libcrypt.so.1 on Python 3.12+ -Resolves: rhbz#2150373 - -* Tue Jul 25 2023 Python Maint - 23.1.2-5 -- Rebuilt for Python 3.12 - -* Fri Jul 21 2023 Fedora Release Engineering - 23.1.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Thu Jul 20 2023 Python Maint - 23.1.2-3 -- Rebuilt for Python 3.12 - -* Tue Jun 13 2023 Python Maint - 23.1.2-2 -- Bootstrap for Python 3.12 - -* Fri May 19 2023 Miro Hrončok - 23.1.2-1 -- Update to 23.1.2 -Resolves: rhbz#2186979 - -* Mon Mar 27 2023 Karolina Surma - 23.0.1-2 -- Fix compatibility with Sphinx 6+ -Resolves: rhbz#2180479 - -* Mon Feb 20 2023 Tomáš Hrnčiar - 23.0.1-1 -- Update to 23.0.1 -Resolves: rhbz#2165760 - -* Fri Jan 20 2023 Fedora Release Engineering - 22.3.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Mon Nov 14 2022 Karolina Surma - 22.3.1-1 -- Update to 22.3.1 -Resolves: rhbz#2135044 - -* Mon Sep 05 2022 Python Maint - 22.2.2-2 -- Fix crash when an empty dist-info/egg-info is present -Resolves: rhbz#2115001 -- No longer use the rpm_install prefix to determine RPM-installed packages -Related: rhbz#2026979 - -* Wed Aug 03 2022 Charalampos Stratakis - 22.2.2-1 -- Update to 22.2.2 -Resolves: rhbz#2109468 - -* Fri Jul 22 2022 Charalampos Stratakis - 22.2-1 -- Update to 22.2 -Resolves: rhbz#2109468 - -* Fri Jul 22 2022 Fedora Release Engineering - 22.0.4-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Wed Jun 15 2022 Python Maint - 22.0.4-4 -- Rebuilt for Python 3.11 - -* Mon Jun 13 2022 Python Maint - 22.0.4-3 -- Bootstrap for Python 3.11 - -* Tue Apr 26 2022 Tomáš Hrnčiar - 22.0.4-2 -- Fallback to pep517 if setup.py is present and setuptools cannot be imported -- Fixes: rhbz#2020635 - -* Mon Mar 21 2022 Karolina Surma - 22.0.4-1 -- Update to 22.0.4 -Resolves: rhbz#2061262 - -* Wed Feb 16 2022 Lumír Balhar - 22.0.3-1 -- Update to 22.0.3 -Resolves: rhbz#2048243 - -* Fri Jan 21 2022 Fedora Release Engineering - 21.3.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Mon Oct 25 2021 Miro Hrončok - 21.3.1-1 -- Update to 21.3.1 -- Resolves: rhbz#2016682 - -* Wed Oct 13 2021 Miro Hrončok - 21.3-1 -- Update to 21.3 -- Resolves: rhbz#2013026 -- Fix incomplete pip-updates in virtual environments - -* Wed Oct 06 2021 Charalampos Stratakis - 21.2.3-4 -- Remove bundled windows executables -- Resolves: rhbz#2005453 - -* Thu Sep 23 2021 Miro Hrončok - 21.2.3-3 -- Detect paths not to uninstall from via sysconfig's rpm_prefix install scheme - -* Mon Aug 16 2021 Miro Hrončok - 21.2.3-2 -- Fix broken uninstallation by a bogus downstream patch - -* Mon Aug 09 2021 Miro Hrončok - 21.2.3-1 -- Update to 21.2.3 -- Resolves: rhbz#1985635 - -* Fri Jul 23 2021 Fedora Release Engineering - 21.1.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Jun 29 2021 Lumír Balhar - 21.1.3-1 -- Update to 21.1.3 -Resolves: rhbz#1976449 - -* Mon Jun 07 2021 Karolina Surma - 21.1.2-1 -- Update to 21.1.2 -Resolves: rhbz#1963433 - -* Fri Jun 04 2021 Python Maint - 21.1.1-3 -- Rebuilt for Python 3.10 - -* Tue Jun 01 2021 Python Maint - 21.1.1-2 -- Bootstrap for Python 3.10 - -* Mon May 10 2021 Karolina Surma - 21.1.1-1 -- Update to 21.1.1 - -* Sat Mar 13 2021 Miro Hrončok - 21.0.1-2 -- python-pip-wheel: Remove bundled provides and libcrypt recommends for Python 2 - (The wheel is Python 3 only for a while) - -* Wed Feb 17 2021 Lumír Balhar - 21.0.1-1 -- Update to 21.0.1 -Resolves: rhbz#1922592 - -* Tue Jan 26 2021 Lumír Balhar - 21.0-1 -- Update to 21.0 (#1919530) - -* Thu Dec 17 2020 Petr Viktorin - 20.3.3-1 -- Update to 20.3.3 - -* Mon Nov 30 2020 Miro Hrončok - 20.3-1 -- Update to 20.3 -- Add support for PEP 600: Future manylinux Platform Tags -- New resolver -- Fixes: rhbz#1893470 - -* Mon Oct 19 2020 Lumír Balhar - 20.2.4-1 -- Update to 20.2.4 (#1889112) - -* Wed Aug 05 2020 Tomas Orsava - 20.2.2-1 -- Update to 20.2.2 (#1838553) - -* Wed Jul 29 2020 Fedora Release Engineering - 20.1.1-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Fri Jul 10 2020 Lumír Balhar - 20.1.1-6 -- Do not emit a warning about root privileges when --root is used - -* Wed Jul 08 2020 Miro Hrončok - 20.1.1-5 -- Update bundled provides to match 20.1.1 - -* Tue Jun 16 2020 Lumír Balhar - 20.1.1-4 -- Deselect tests incompatible with the latest virtualenv - -* Sun May 24 2020 Miro Hrončok - 20.1.1-3 -- Rebuilt for Python 3.9 - -* Thu May 21 2020 Miro Hrončok - 20.1.1-2 -- Bootstrap for Python 3.9 - -* Wed May 20 2020 Tomas Hrnciar - 20.1.1-1 -- Update to 20.1.1 - -* Wed Apr 29 2020 Tomas Hrnciar - 20.1-1 -- Update to 20.1 - -* Mon Apr 27 2020 Tomas Hrnciar - 20.1~b1-1 -- Update to 20.1~b1 - -* Wed Apr 15 2020 Miro Hrončok - 20.0.2-4 -- Only recommend setuptools, don't require them - -* Fri Apr 10 2020 Miro Hrončok - 20.0.2-3 -- Allow setting $TMPDIR to $PWD/... during pip wheel (#1806625) - -* Tue Mar 10 2020 Miro Hrončok - 20.0.2-2 -- Don't warn the user about pip._internal.main() entrypoint to fix ensurepip - -* Mon Mar 02 2020 Miro Hrončok - 20.0.2-1 -- Update to 20.0.2 (#1793456) - -* Thu Jan 30 2020 Fedora Release Engineering - 19.3.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Mon Nov 04 2019 Tomas Orsava - 19.3.1-1 -- Update to 19.3.1 (#1761508) -- Drop upstreamed patch that fixed expected output in test to not break with alpha/beta/rc Python versions - -* Wed Oct 30 2019 Miro Hrončok - 19.2.3-2 -- Make /usr/bin/pip(3) work with user-installed pip 19.3+ (#1767212) - -* Mon Sep 02 2019 Miro Hrončok - 19.2.3-1 -- Update to 19.2.3 (#1742230) -- Drop patch that should strip path prefixes from RECORD files, the paths are relative - -* Wed Aug 21 2019 Petr Viktorin - 19.1.1-8 -- Remove python2-pip -- Make pip bootstrap itself, rather than with an extra bootstrap RPM build - -* Sat Aug 17 2019 Miro Hrončok - 19.1.1-7 -- Rebuilt for Python 3.8 - -* Wed Aug 14 2019 Miro Hrončok - 19.1.1-6 -- Bootstrap for Python 3.8 - -* Wed Aug 14 2019 Miro Hrončok - 19.1.1-5 -- Bootstrap for Python 3.8 - -* Fri Jul 26 2019 Fedora Release Engineering - 19.1.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Mon Jul 15 2019 Petr Viktorin - 19.1.1-3 -- Recommend libcrypt.so.1 for manylinux1 compatibility -- Make /usr/bin/pip Python 3 - -* Mon Jun 10 2019 Miro Hrončok - 19.1.1-2 -- Fix root warning when pip is invoked via python -m pip -- Remove a redundant second WARNING prefix form the abovementioned warning - -* Wed May 15 2019 Miro Hrončok - 19.1.1-1 -- Update to 19.1.1 (#1706995) - -* Thu Apr 25 2019 Miro Hrončok - 19.1-1 -- Update to 19.1 (#1702525) - -* Wed Mar 06 2019 Miro Hrončok - 19.0.3-1 -- Update to 19.0.3 (#1679277) - -* Wed Feb 13 2019 Miro Hrončok - 19.0.2-1 -- Update to 19.0.2 (#1668492) - -* Sat Feb 02 2019 Fedora Release Engineering - 18.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Mon Dec 03 2018 Miro Hrončok - 18.1-2 -- Use the system level root certificate instead of the one bundled in certifi - -* Thu Nov 22 2018 Miro Hrončok - 18.1-1 -- Update to 18.1 (#1652089) - -* Tue Sep 18 2018 Victor Stinner - 18.0-4 -- Prevent removing of the system packages installed under /usr/lib - when pip install -U is executed. Original patch by Michal Cyprian. - Resolves: rhbz#1550368. - -* Wed Aug 08 2018 Miro Hrončok - 18.0-3 -- Create python-pip-wheel package with the wheel - -* Tue Jul 31 2018 Miro Hrončok - 18.0-2 -- Remove redundant "Unicode" from License - -* Mon Jul 23 2018 Marcel Plch - 18.0-7 -- Update to 18.0 - -* Sat Jul 14 2018 Fedora Release Engineering - 9.0.3-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Mon Jun 18 2018 Miro Hrončok - 9.0.3-5 -- Rebuilt for Python 3.7 - -* Wed Jun 13 2018 Miro Hrončok - 9.0.3-4 -- Bootstrap for Python 3.7 - -* Wed Jun 13 2018 Miro Hrončok - 9.0.3-3 -- Bootstrap for Python 3.7 - -* Fri May 04 2018 Miro Hrončok - 9.0.3-2 -- Allow to import pip10's main from pip9's /usr/bin/pip -- Do not show the "new version of pip" warning outside of venv -Resolves: rhbz#1569488 -Resolves: rhbz#1571650 -Resolves: rhbz#1573755 - -* Thu Mar 29 2018 Charalampos Stratakis - 9.0.3-1 -- Update to 9.0.3 - -* Wed Feb 21 2018 Lumír Balhar - 9.0.1-16 -- Include built HTML documentation (in the new -doc subpackage) and man page - -* Fri Feb 09 2018 Fedora Release Engineering - 9.0.1-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Mon Dec 04 2017 Charalampos Stratakis - 9.0.1-14 -- Reintroduce the ipaddress module in the python3 subpackage. - -* Mon Nov 20 2017 Charalampos Stratakis - 9.0.1-13 -- Add virtual provides for the bundled libraries. (rhbz#1096912) - -* Tue Aug 29 2017 Tomas Orsava - 9.0.1-12 -- Switch macros to bcond's and make Python 2 optional to facilitate building - the Python 2 and Python 3 modules - -* Thu Jul 27 2017 Fedora Release Engineering - 9.0.1-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Tue May 23 2017 Tomas Orsava - 9.0.1-10 -- Modernized package descriptions -Resolves: rhbz#1452568 - -* Tue Mar 21 2017 Tomas Orsava - 9.0.1-9 -- Fix typo in the sudo pip warning - -* Fri Mar 03 2017 Tomas Orsava - 9.0.1-8 -- Patch 1 update: No sudo pip warning in venv or virtualenv - -* Thu Feb 23 2017 Tomas Orsava - 9.0.1-7 -- Patch 1 update: Customize the warning with the proper version of the pip - command - -* Tue Feb 14 2017 Tomas Orsava - 9.0.1-6 -- Added patch 1: Emit a warning when running with root privileges - -* Sat Feb 11 2017 Fedora Release Engineering - 9.0.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Mon Jan 02 2017 Tomas Orsava - 9.0.1-4 -- Provide symlinks to executables to comply with Fedora guidelines for Python -Resolves: rhbz#1406922 - -* Fri Dec 09 2016 Charalampos Stratakis - 9.0.1-3 -- Rebuild for Python 3.6 with wheel - -* Fri Dec 09 2016 Charalampos Stratakis - 9.0.1-2 -- Rebuild for Python 3.6 without wheel - -* Fri Nov 18 2016 Orion Poplawski - 9.0.1-1 -- Update to 9.0.1 - -* Fri Nov 18 2016 Orion Poplawski - 8.1.2-5 -- Enable EPEL Python 3 builds -- Use new python macros -- Cleanup spec - -* Fri Aug 05 2016 Tomas Orsava - 8.1.2-4 -- Updated the test sources - -* Fri Aug 05 2016 Tomas Orsava - 8.1.2-3 -- Moved python-pip into the python2-pip subpackage -- Added the python_provide macro - -* Tue Jul 19 2016 Fedora Release Engineering - 8.1.2-2 -- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages - -* Tue May 17 2016 Tomas Orsava - 8.1.2-1 -- Update to 8.1.2 -- Moved to a new PyPI URL format -- Updated the prefix-stripping patch because of upstream changes in pip/wheel.py - -* Mon Feb 22 2016 Slavek Kabrda - 8.0.2-1 -- Update to 8.0.2 - -* Thu Feb 04 2016 Fedora Release Engineering - 7.1.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Wed Oct 14 2015 Robert Kuska - 7.1.0-3 -- Rebuilt for Python3.5 rebuild -- With wheel set to 1 - -* Tue Oct 13 2015 Robert Kuska - 7.1.0-2 -- Rebuilt for Python3.5 rebuild - -* Wed Jul 01 2015 Slavek Kabrda - 7.1.0-1 -- Update to 7.1.0 - -* Tue Jun 30 2015 Ville Skyttä - 7.0.3-3 -- Install bash completion -- Ship LICENSE.txt as %%license where available - -* Thu Jun 18 2015 Fedora Release Engineering - 7.0.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Thu Jun 04 2015 Matej Stuchlik - 7.0.3-1 -- Update to 7.0.3 - -* Fri Mar 06 2015 Matej Stuchlik - 6.0.8-1 -- Update to 6.0.8 - -* Thu Dec 18 2014 Slavek Kabrda - 1.5.6-5 -- Only enable tests on Fedora. - -* Mon Dec 01 2014 Matej Stuchlik - 1.5.6-4 -- Add tests -- Add patch skipping tests requiring Internet access - -* Tue Nov 18 2014 Matej Stuchlik - 1.5.6-3 -- Added patch for local dos with predictable temp dictionary names - (http://seclists.org/oss-sec/2014/q4/655) - -* Sat Jun 07 2014 Fedora Release Engineering - 1.5.6-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Sun May 25 2014 Matej Stuchlik - 1.5.6-1 -- Update to 1.5.6 - -* Fri Apr 25 2014 Matej Stuchlik - 1.5.4-4 -- Rebuild as wheel for Python 3.4 - -* Thu Apr 24 2014 Matej Stuchlik - 1.5.4-3 -- Disable build_wheel - -* Thu Apr 24 2014 Matej Stuchlik - 1.5.4-2 -- Rebuild as wheel for Python 3.4 - -* Mon Apr 07 2014 Matej Stuchlik - 1.5.4-1 -- Updated to 1.5.4 - -* Mon Oct 14 2013 Tim Flink - 1.4.1-1 -- Removed patch for CVE 2013-2099 as it has been included in the upstream 1.4.1 release -- Updated version to 1.4.1 - -* Sun Aug 04 2013 Fedora Release Engineering - 1.3.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Tue Jul 16 2013 Toshio Kuratomi - 1.3.1-4 -- Fix for CVE 2013-2099 - -* Thu May 23 2013 Tim Flink - 1.3.1-3 -- undo python2 executable rename to python-pip. fixes #958377 -- fix summary to match upstream - -* Mon May 06 2013 Kevin Kofler - 1.3.1-2 -- Fix main package Summary, it's for Python 2, not 3 (#877401) - -* Fri Apr 26 2013 Jon Ciesla - 1.3.1-1 -- Update to 1.3.1, fix for CVE-2013-1888. - -* Thu Feb 14 2013 Fedora Release Engineering - 1.2.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Tue Oct 09 2012 Tim Flink - 1.2.1-2 -- Fixing files for python3-pip - -* Thu Oct 04 2012 Tim Flink - 1.2.1-1 -- Update to upstream 1.2.1 -- Change binary from pip-python to python-pip (RHBZ#855495) -- Add alias from python-pip to pip-python, to be removed at a later date - -* Tue May 15 2012 Tim Flink - 1.1.0-1 -- Update to upstream 1.1.0 - -* Sat Jan 14 2012 Fedora Release Engineering - 1.0.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Sat Oct 22 2011 Tim Flink - 1.0.2-1 -- update to 1.0.2 and added python3 subpackage - -* Wed Jun 22 2011 Tim Flink - 0.8.3-1 -- update to 0.8.3 and project home page - -* Tue Feb 08 2011 Fedora Release Engineering - 0.8.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Mon Dec 20 2010 Luke Macken - 0.8.2-1 -- update to 0.8.2 of pip -* Mon Aug 30 2010 Peter Halliday - 0.8-1 -- update to 0.8 of pip -* Thu Jul 22 2010 David Malcolm - 0.7.2-5 -- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild - -* Wed Jul 7 2010 Peter Halliday - 0.7.2-1 -- update to 0.7.2 of pip -* Sun May 23 2010 Peter Halliday - 0.7.1-1 -- update to 0.7.1 of pip -* Fri Jan 1 2010 Peter Halliday - 0.6.1.4 -- fix dependency issue -* Fri Dec 18 2009 Peter Halliday - 0.6.1-2 -- fix spec file -* Thu Dec 17 2009 Peter Halliday - 0.6.1-1 -- upgrade to 0.6.1 of pip -* Mon Aug 31 2009 Peter Halliday - 0.4-1 -- Initial package diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..4f605e1 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +EPEL-only package diff --git a/dummy-certifi.patch b/dummy-certifi.patch deleted file mode 100644 index 371a74c..0000000 --- a/dummy-certifi.patch +++ /dev/null @@ -1,134 +0,0 @@ -From 0741e5a665308184ddbd20900f92e4417204092f Mon Sep 17 00:00:00 2001 -From: Karolina Surma -Date: Thu, 27 Jun 2024 10:38:53 +0200 -Subject: [PATCH] Dummy certifi patch - ---- - src/pip/_vendor/certifi/core.py | 110 ++------------------------------ - 1 file changed, 6 insertions(+), 104 deletions(-) - -diff --git a/src/pip/_vendor/certifi/core.py b/src/pip/_vendor/certifi/core.py -index 70e0c3b..eaf4210 100644 ---- a/src/pip/_vendor/certifi/core.py -+++ b/src/pip/_vendor/certifi/core.py -@@ -4,111 +4,13 @@ certifi.py - - This module returns the installation location of cacert.pem or its contents. - """ --import sys --import atexit - --def exit_cacert_ctx() -> None: -- _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] - -+# The RPM-packaged certifi always uses the system certificates -+def where() -> str: -+ return '/etc/pki/tls/certs/ca-bundle.crt' - --if sys.version_info >= (3, 11): - -- from importlib.resources import as_file, files -- -- _CACERT_CTX = None -- _CACERT_PATH = None -- -- def where() -> str: -- # This is slightly terrible, but we want to delay extracting the file -- # in cases where we're inside of a zipimport situation until someone -- # actually calls where(), but we don't want to re-extract the file -- # on every call of where(), so we'll do it once then store it in a -- # global variable. -- global _CACERT_CTX -- global _CACERT_PATH -- if _CACERT_PATH is None: -- # This is slightly janky, the importlib.resources API wants you to -- # manage the cleanup of this file, so it doesn't actually return a -- # path, it returns a context manager that will give you the path -- # when you enter it and will do any cleanup when you leave it. In -- # the common case of not needing a temporary file, it will just -- # return the file system location and the __exit__() is a no-op. -- # -- # We also have to hold onto the actual context manager, because -- # it will do the cleanup whenever it gets garbage collected, so -- # we will also store that at the global level as well. -- _CACERT_CTX = as_file(files("pip._vendor.certifi").joinpath("cacert.pem")) -- _CACERT_PATH = str(_CACERT_CTX.__enter__()) -- atexit.register(exit_cacert_ctx) -- -- return _CACERT_PATH -- -- def contents() -> str: -- return files("pip._vendor.certifi").joinpath("cacert.pem").read_text(encoding="ascii") -- --elif sys.version_info >= (3, 7): -- -- from importlib.resources import path as get_path, read_text -- -- _CACERT_CTX = None -- _CACERT_PATH = None -- -- def where() -> str: -- # This is slightly terrible, but we want to delay extracting the -- # file in cases where we're inside of a zipimport situation until -- # someone actually calls where(), but we don't want to re-extract -- # the file on every call of where(), so we'll do it once then store -- # it in a global variable. -- global _CACERT_CTX -- global _CACERT_PATH -- if _CACERT_PATH is None: -- # This is slightly janky, the importlib.resources API wants you -- # to manage the cleanup of this file, so it doesn't actually -- # return a path, it returns a context manager that will give -- # you the path when you enter it and will do any cleanup when -- # you leave it. In the common case of not needing a temporary -- # file, it will just return the file system location and the -- # __exit__() is a no-op. -- # -- # We also have to hold onto the actual context manager, because -- # it will do the cleanup whenever it gets garbage collected, so -- # we will also store that at the global level as well. -- _CACERT_CTX = get_path("pip._vendor.certifi", "cacert.pem") -- _CACERT_PATH = str(_CACERT_CTX.__enter__()) -- atexit.register(exit_cacert_ctx) -- -- return _CACERT_PATH -- -- def contents() -> str: -- return read_text("pip._vendor.certifi", "cacert.pem", encoding="ascii") -- --else: -- import os -- import types -- from typing import Union -- -- Package = Union[types.ModuleType, str] -- Resource = Union[str, "os.PathLike"] -- -- # This fallback will work for Python versions prior to 3.7 that lack the -- # importlib.resources module but relies on the existing `where` function -- # so won't address issues with environments like PyOxidizer that don't set -- # __file__ on modules. -- def read_text( -- package: Package, -- resource: Resource, -- encoding: str = 'utf-8', -- errors: str = 'strict' -- ) -> str: -- with open(where(), encoding=encoding) as data: -- return data.read() -- -- # If we don't have importlib.resources, then we will just do the old logic -- # of assuming we're on the filesystem and munge the path directly. -- def where() -> str: -- f = os.path.dirname(__file__) -- -- return os.path.join(f, "cacert.pem") -- -- def contents() -> str: -- return read_text("pip._vendor.certifi", "cacert.pem", encoding="ascii") -+def contents() -> str: -+ with open(where(), encoding='utf=8') as data: -+ return data.read() --- -2.45.1 - diff --git a/nowarn-pip._internal.main.patch b/nowarn-pip._internal.main.patch deleted file mode 100644 index c8c98ed..0000000 --- a/nowarn-pip._internal.main.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 9d1e0a0e91cad143702b3a2d8c54bd765a5d9eb2 Mon Sep 17 00:00:00 2001 -From: Karolina Surma -Date: Thu, 27 Jun 2024 10:48:03 +0200 -Subject: [PATCH] Don't warn the user about pip._internal.main() entrypoint - -In Fedora, we use that in ensurepip and users cannot do anything about it, -this warning is juts moot. Also, the warning breaks CPython test suite. - -Co-Authored-By: =?UTF-8?q?Miro=20Hron=C4=8Dok?= ---- - src/pip/_internal/__init__.py | 2 +- - src/pip/_internal/utils/entrypoints.py | 19 ++++++++++--------- - tests/functional/test_cli.py | 3 ++- - 3 files changed, 13 insertions(+), 11 deletions(-) - -diff --git a/src/pip/_internal/__init__.py b/src/pip/_internal/__init__.py -index 1a5b7f8..682b9e4 100755 ---- a/src/pip/_internal/__init__.py -+++ b/src/pip/_internal/__init__.py -@@ -15,4 +15,4 @@ def main(args: Optional[List[str]] = None) -> int: - """ - from pip._internal.utils.entrypoints import _wrapper - -- return _wrapper(args) -+ return _wrapper(args, _nowarn=True) -diff --git a/src/pip/_internal/utils/entrypoints.py b/src/pip/_internal/utils/entrypoints.py -index 1501369..70034eb 100644 ---- a/src/pip/_internal/utils/entrypoints.py -+++ b/src/pip/_internal/utils/entrypoints.py -@@ -20,7 +20,7 @@ if WINDOWS: - ] - - --def _wrapper(args: Optional[List[str]] = None) -> int: -+def _wrapper(args: Optional[List[str]] = None, _nowarn: bool = False) -> int: - """Central wrapper for all old entrypoints. - - Historically pip has had several entrypoints defined. Because of issues -@@ -32,14 +32,15 @@ def _wrapper(args: Optional[List[str]] = None) -> int: - directing them to an appropriate place for help, we now define all of - our old entrypoints as wrappers for the current one. - """ -- sys.stderr.write( -- "WARNING: pip is being invoked by an old script wrapper. This will " -- "fail in a future version of pip.\n" -- "Please see https://github.com/pypa/pip/issues/5599 for advice on " -- "fixing the underlying issue.\n" -- "To avoid this problem you can invoke Python with '-m pip' instead of " -- "running pip directly.\n" -- ) -+ if not _nowarn: -+ sys.stderr.write( -+ "WARNING: pip is being invoked by an old script wrapper. This will " -+ "fail in a future version of pip.\n" -+ "Please see https://github.com/pypa/pip/issues/5599 for advice on " -+ "fixing the underlying issue.\n" -+ "To avoid this problem you can invoke Python with '-m pip' instead of " -+ "running pip directly.\n" -+ ) - return main(args) - - -diff --git a/tests/functional/test_cli.py b/tests/functional/test_cli.py -index e1ccf04..30b8f74 100644 ---- a/tests/functional/test_cli.py -+++ b/tests/functional/test_cli.py -@@ -49,7 +49,8 @@ def test_entrypoints_work(entrypoint: str, script: PipTestEnvironment) -> None: - result = script.pip("-V") - result2 = script.run("fake_pip", "-V", allow_stderr_warning=True) - assert result.stdout == result2.stdout -- assert "old script wrapper" in result2.stderr -+ if entrypoint[0] != "fake_pip = pip._internal:main": -+ assert "old script wrapper" in result2.stderr - - - @pytest.mark.parametrize( --- -2.45.1 - diff --git a/python3.13-pip.rpmlintrc b/python3.13-pip.rpmlintrc deleted file mode 100644 index d32664b..0000000 --- a/python3.13-pip.rpmlintrc +++ /dev/null @@ -1,9 +0,0 @@ -# This is just temporary, when upstream merges PRs it can be removed -# https://github.com/psf/requests/pull/5410 -addFilter(r'(non-executable-script|wrong-script-interpreter) .+/pip/_vendor/requests/certs.py\b') - -# This file is actually a script but in the vendored context of pip, it is never executed -addFilter(r'non-executable-script .+/pip/_vendor/distro/distro.py\b') - -# We ship README with the main package but not with the wheel -addFilter(r'python-pip-wheel.noarch: W: no-documentation') diff --git a/python3.13-pip.spec b/python3.13-pip.spec deleted file mode 100644 index 5b00ce5..0000000 --- a/python3.13-pip.spec +++ /dev/null @@ -1,316 +0,0 @@ -%global python3_pkgversion 3.13 - -# The original RHEL N+1 content set is defined by (build)dependencies -# of the packages in Fedora ELN. Hence we disable tests here -# to prevent pulling many unwanted packages in. -%bcond tests %{defined fedora} -# Whether to build the manual pages (useful for bootstrapping Sphinx) -%bcond man 1 - -%global srcname pip -%global base_version 25.1.1 -%global upstream_version %{base_version}%{?prerel} -%global python_wheel_name %{srcname}-%{upstream_version}-py3-none-any.whl - -Name: python%{python3_pkgversion}-%{srcname} -Version: %{base_version}%{?prerel:~%{prerel}} -Release: %autorelease -Summary: A tool for installing and managing Python packages - -# We bundle a lot of libraries with pip, which itself is under MIT license. -# Here is the list of the libraries with corresponding licenses: - -# certifi: MPL-2.0 -# CacheControl: Apache-2.0 -# dependency-groups: MIT -# distlib: Python-2.0.1 -# distro: Apache-2.0 -# idna: BSD-3-Clause -# msgpack: Apache-2.0 -# packaging: Apache-2.0 OR BSD-2-Clause -# platformdirs: MIT -# pygments: BSD-2-Clause -# pyproject-hooks: MIT -# requests: Apache-2.0 -# resolvelib: ISC -# rich: MIT -# setuptools: MIT -# truststore: MIT -# tomli: MIT -# tomli-w: MIT -# typing-extensions: Python-2.0.1 -# urllib3: MIT - -License: MIT AND Python-2.0.1 AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC 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 - -# The following sources are wheels used only for tests. -# They are not bundled in the built package and do not contribute to the overall license. -# They are pre-built but only contain text files, rebuilding them in %%build has very little benefit. - -# setuptools.whl -# We cannot use RPM-packaged python-setuptools-wheel because upstream pins to <80. -# See https://github.com/pypa/pip/pull/13357 for rationale. -Source1: https://files.pythonhosted.org/packages/0d/6d/b4752b044bf94cb802d88a888dc7d288baaf77d7910b7dedda74b5ceea0c/setuptools-79.0.1-py3-none-any.whl - -# wheel.whl -# We cannot use RPM-packaged python-wheel-wheel because we intent to drop that package in wheel 0.46+. -# That version of wheel has runtime dependencies and is generally useless as a standalone wheel. -# See https://github.com/pypa/pip/pull/13382 as an attempt to drop the requirement from pip tests. -Source2: https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl - -# coverage.whl -# There is no RPM-packaged python-coverage-wheel, the package is archful. -# Upstream uses this to measure coverage, which we don't. -# This is a dummy placeholder package that only contains empty coverage.process_startup(). -# That way, we don't need to patch the usage out of conftest.py. -Source3: coverage-0-py3-none-any.whl - -BuildArch: noarch - -%if %{with tests} -BuildRequires: /usr/bin/git -BuildRequires: /usr/bin/hg -BuildRequires: /usr/bin/bzr -BuildRequires: /usr/bin/svn -BuildRequires: python%{python3_pkgversion}-pytest-xdist -%endif - -%if %{with man} -# docs/requirements.txt contains many sphinx extensions -# however, we only build the manual pages thanks to -# https://github.com/pypa/pip/pull/13168 -# We also always use the "main" Sphinx, not python%%{python3_pkgversion}-sphinx -BuildRequires: python3-sphinx -%endif - -# Prevent removing of the system packages installed under /usr/lib -# when pip install -U is executed. -# https://bugzilla.redhat.com/show_bug.cgi?id=1550368#c24 -# Could be replaced with https://www.python.org/dev/peps/pep-0668/ -Patch: remove-existing-dist-only-if-path-conflicts.patch - -# Use the system level root certificate instead of the one bundled in certifi -# https://bugzilla.redhat.com/show_bug.cgi?id=1655253 -# The same patch is a part of the RPM-packaged python-certifi -Patch: dummy-certifi.patch - -# Don't warn the user about pip._internal.main() entrypoint -# In Fedora, we use that in ensurepip and users cannot do anything about it, -# this warning is juts moot. Also, the warning breaks CPython test suite. -Patch: nowarn-pip._internal.main.patch - -# Adjust path_to_url et al. to produce the same results on Python 3.14+ -# https://github.com/pypa/pip/pull/13423 -Patch: python3.14-file-urls.patch - -# Remove -s from Python shebang - ensure that packages installed with pip -# to user locations are seen by pip itself -%undefine _py3_shebang_s - - -BuildRequires: python%{python3_pkgversion}-devel -# python3 bootstrap: this is rebuilt before the final build of python3, which -# adds the dependency on python3-rpm-generators, so we require it manually -# Note that the package prefix is always python3-, even if we build for 3.X -# The minimal version is for bundled provides verification script -BuildRequires: python3-rpm-generators >= 11-8 -BuildRequires: pyproject-rpm-macros -BuildRequires: python%{python3_pkgversion}-setuptools -BuildRequires: bash-completion -BuildRequires: ca-certificates -Requires: ca-certificates - -# Virtual provides for the packages bundled by pip. -# You can generate it with: -# %%{_rpmconfigdir}/pythonbundles.py --namespace 'python%%{1}dist' src/pip/_vendor/vendor.txt -%global bundled() %{expand: -Provides: bundled(python%{1}dist(cachecontrol)) = 0.14.2 -Provides: bundled(python%{1}dist(certifi)) = 2025.1.31 -Provides: bundled(python%{1}dist(dependency-groups)) = 1.3.1 -Provides: bundled(python%{1}dist(distlib)) = 0.3.9 -Provides: bundled(python%{1}dist(distro)) = 1.9 -Provides: bundled(python%{1}dist(idna)) = 3.10 -Provides: bundled(python%{1}dist(msgpack)) = 1.1 -Provides: bundled(python%{1}dist(packaging)) = 25 -Provides: bundled(python%{1}dist(platformdirs)) = 4.3.7 -Provides: bundled(python%{1}dist(pygments)) = 2.19.1 -Provides: bundled(python%{1}dist(pyproject-hooks)) = 1.2 -Provides: bundled(python%{1}dist(requests)) = 2.32.3 -Provides: bundled(python%{1}dist(resolvelib)) = 1.1 -Provides: bundled(python%{1}dist(rich)) = 14 -Provides: bundled(python%{1}dist(setuptools)) = 70.3 -Provides: bundled(python%{1}dist(tomli)) = 2.2.1 -Provides: bundled(python%{1}dist(tomli-w)) = 1.2 -Provides: bundled(python%{1}dist(truststore)) = 0.10.1 -Provides: bundled(python%{1}dist(typing-extensions)) = 4.13.2 -Provides: bundled(python%{1}dist(urllib3)) = 1.26.20 -} - -# Virtual provides for the packages bundled by pip: -%{bundled %{python3_pkgversion}} - -%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". - - -%package -n %{python_wheel_pkg_prefix}-%{srcname}-wheel -Summary: The pip wheel -Requires: ca-certificates - -# Virtual provides for the packages bundled by pip: -%{bundled %{python3_pkgversion}} - -%description -n %{python_wheel_pkg_prefix}-%{srcname}-wheel -A Python wheel of pip to use with venv. - -%prep -%autosetup -p1 -n %{srcname}-%{upstream_version} - -# this goes together with patch4 -rm src/pip/_vendor/certifi/*.pem - -# Remove windows executable binaries -rm -v src/pip/_vendor/distlib/*.exe -sed -i '/\.exe/d' pyproject.toml - -# Remove unused test requirements -sed -Ei '/(pytest-(cov|xdist|rerunfailures)|proxy\.py)/d' tests/requirements.txt - -%if %{with tests} -# tests expect wheels in here -mkdir tests/data/common_wheels -cp -a %{SOURCE1} %{SOURCE2} %{SOURCE3} tests/data/common_wheels -%endif - - -%if %{with tests} -%generate_buildrequires -# we only use this to generate test requires -# the "pyproject" part is explicitly disabled as it generates a requirement on pip -%pyproject_buildrequires -N tests/requirements.txt -%endif - - -%build -export PYTHONPATH=./src/ -%pyproject_wheel - -%if %{with man} -sphinx-build -t man -b man -d docs/build/doctrees/man -c docs/html docs/man docs/build/man -%endif - - -%install -export PYTHONPATH=./src/ -%pyproject_install -%pyproject_save_files -l pip - -# We'll install pip as pip3.X -# Later we'll provide symbolic links, manpage links and bashcompletion fixes for alternative names -%if "%{python3_pkgversion}" == "3" -%global alternate_names pip-%{python3_version} pip-3 pip3 pip -%else -%global alternate_names pip-%{python3_version} -%endif - -# Provide symlinks to executables -mv %{buildroot}%{_bindir}/pip %{buildroot}%{_bindir}/pip%{python3_version} -rm %{buildroot}%{_bindir}/pip3 -for pip in %{alternate_names}; do -ln -s ./pip%{python3_version} %{buildroot}%{_bindir}/$pip -done - -%if %{with man} -pushd docs/build/man -install -d %{buildroot}%{_mandir}/man1 -for MAN in *1; do -install -pm0644 $MAN %{buildroot}%{_mandir}/man1/${MAN/pip/pip%{python3_version}} -for pip in %{alternate_names}; do -echo ".so ${MAN/pip/pip%{python3_version}}" > %{buildroot}%{_mandir}/man1/${MAN/pip/$pip} -done -done -popd -%endif - -mkdir -p %{buildroot}%{bash_completions_dir} -PYTHONPATH=%{buildroot}%{python3_sitelib} \ - %{buildroot}%{_bindir}/pip%{python3_version} completion --bash \ - > %{buildroot}%{bash_completions_dir}/pip%{python3_version} - -# Make bash completion apply to all alternate names symlinks we install -sed -i -e "s/^\\(complete.*\\) pip%{python3_version}\$/\\1 pip%{python3_version} %{alternate_names}/" \ - -e s/_pip_completion/_pip%{python3_version_nodots}_completion/ \ - %{buildroot}%{bash_completions_dir}/pip%{python3_version} - -mkdir -p %{buildroot}%{python_wheel_dir} -install -p %{_pyproject_wheeldir}/%{python_wheel_name} -t %{buildroot}%{python_wheel_dir} - - -%check -# Verify bundled provides are up to date -%{_rpmconfigdir}/pythonbundles.py src/pip/_vendor/vendor.txt --compare-with '%{bundled 3}' - -# Verify no unwanted files are present in the package -grep "exe$" %{pyproject_files} && exit 1 || true -grep "pem$" %{pyproject_files} && exit 1 || true - -# Verify we can at least run basic commands without crashing -%{py3_test_envvars} %{buildroot}%{_bindir}/pip%{python3_version} --help -%{py3_test_envvars} %{buildroot}%{_bindir}/pip%{python3_version} list -%{py3_test_envvars} %{buildroot}%{_bindir}/pip%{python3_version} show pip - -%if %{with tests} -# Upstream tests -# bash completion tests only work from installed package -pytest_k='not completion' -# this clashes with our PYTHONPATH -pytest_k="$pytest_k and not environments_with_no_pip" -# this seems to require internet (despite no network marker) -# added in https://github.com/pypa/pip/pull/13378 TODO drop this in the next release -pytest_k="$pytest_k and not test_prompt_for_keyring_if_needed and not test_double_install_fail and not test_install_sdist_links and not test_lock_vcs and not test_lock_archive and not test_backend_sees_config_via_sdist" -# this cannot import breezy, TODO investigate -pytest_k="$pytest_k and not (functional and bazaar)" -# failures to investigate -pytest_k="$pytest_k and not test_all_fields and not test_report_mixed_not_found and not test_basic_show" # "Editable project location" missing -pytest_k="$pytest_k and not test_basic_install_from_wheel" -pytest_k="$pytest_k and not test_check_unsupported" - -%pytest -n auto -m 'not network' -k "$(echo $pytest_k)" \ - --ignore tests/functional/test_proxy.py # no proxy.py in Fedora -%endif - - -%files -n python%{python3_pkgversion}-%{srcname} -f %{pyproject_files} -%doc README.rst -%if %{with man} -%if "%{python3_pkgversion}" == "3" -%{_mandir}/man1/pip{,3,-3}.1.* -%{_mandir}/man1/pip{,3,-3}-[^3]*.1.* -%endif -%{_mandir}/man1/pip{,-}%{python3_version}.1.* -%{_mandir}/man1/pip{,-}%{python3_version}-*.1.* -%endif -%if "%{python3_pkgversion}" == "3" -%{_bindir}/pip -%{_bindir}/pip3 -%{_bindir}/pip-3 -%endif -%{_bindir}/pip%{python3_version} -%{_bindir}/pip-%{python3_version} -%dir %{bash_completions_dir} -%{bash_completions_dir}/pip%{python3_version} - - -%files -n %{python_wheel_pkg_prefix}-%{srcname}-wheel -%license LICENSE.txt -# we own the dir for simplicity -%dir %{python_wheel_dir}/ -%{python_wheel_dir}/%{python_wheel_name} - -%changelog -%autochangelog diff --git a/python3.14-file-urls.patch b/python3.14-file-urls.patch deleted file mode 100644 index 77e89de..0000000 --- a/python3.14-file-urls.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 03b4b94a0338d80d1f45697a5ea083a5e5c937db Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= -Date: Thu, 12 Jun 2025 23:36:24 +0200 -Subject: [PATCH] Adjust path_to_url et al. to produce the same results on - Python 3.14+ - -See https://github.com/python/cpython/issues/125974 -and https://github.com/pypa/pip/pull/13138#issuecomment-2567715303 ---- - src/pip/_internal/models/link.py | 6 +++++- - src/pip/_internal/utils/urls.py | 2 +- - tests/unit/test_urls.py | 2 +- - 3 files changed, 7 insertions(+), 3 deletions(-) - -diff --git a/src/pip/_internal/models/link.py b/src/pip/_internal/models/link.py -index f0560f6..38423d1 100644 ---- a/src/pip/_internal/models/link.py -+++ b/src/pip/_internal/models/link.py -@@ -4,6 +4,7 @@ import logging - import os - import posixpath - import re -+import sys - import urllib.parse - from dataclasses import dataclass - from typing import ( -@@ -134,7 +135,10 @@ def _clean_file_url_path(part: str) -> str: - # should not be quoted. On Linux where drive letters do not - # exist, the colon should be quoted. We rely on urllib.request - # to do the right thing here. -- return urllib.request.pathname2url(urllib.request.url2pathname(part)) -+ ret = urllib.request.pathname2url(urllib.request.url2pathname(part)) -+ if sys.version_info >= (3, 14): -+ ret = ret.removeprefix("//") -+ return ret - - - # percent-encoded: / -diff --git a/src/pip/_internal/utils/urls.py b/src/pip/_internal/utils/urls.py -index 9f34f88..e951a5e 100644 ---- a/src/pip/_internal/utils/urls.py -+++ b/src/pip/_internal/utils/urls.py -@@ -12,7 +12,7 @@ def path_to_url(path: str) -> str: - quoted path parts. - """ - path = os.path.normpath(os.path.abspath(path)) -- url = urllib.parse.urljoin("file:", urllib.request.pathname2url(path)) -+ url = urllib.parse.urljoin("file://", urllib.request.pathname2url(path)) - return url - - -diff --git a/tests/unit/test_urls.py b/tests/unit/test_urls.py -index 0c14525..2a56e45 100644 ---- a/tests/unit/test_urls.py -+++ b/tests/unit/test_urls.py -@@ -11,7 +11,7 @@ from pip._internal.utils.urls import path_to_url, url_to_path - def test_path_to_url_unix() -> None: - assert path_to_url("/tmp/file") == "file:///tmp/file" - path = os.path.join(os.getcwd(), "file") -- assert path_to_url("file") == "file://" + urllib.request.pathname2url(path) -+ assert path_to_url("file") == "file://" + path - - - @pytest.mark.skipif("sys.platform != 'win32'") --- -2.49.0 - diff --git a/remove-existing-dist-only-if-path-conflicts.patch b/remove-existing-dist-only-if-path-conflicts.patch deleted file mode 100644 index 20e5f28..0000000 --- a/remove-existing-dist-only-if-path-conflicts.patch +++ /dev/null @@ -1,113 +0,0 @@ -From 9020f56e88a7dbaef688c147c281909f95b4e1d1 Mon Sep 17 00:00:00 2001 -From: Karolina Surma -Date: Wed, 16 Feb 2022 08:36:21 +0100 -Subject: [PATCH] Prevent removing of the system packages installed under - /usr/lib when pip install --upgrade is executed. - -Resolves: rhbz#1550368 - -Co-Authored-By: Michal Cyprian -Co-Authored-By: Victor Stinner -Co-Authored-By: Petr Viktorin -Co-Authored-By: Lumir Balhar -Co-Authored-By: Miro Hrončok -Co-Authored-By: Karolina Surma - ---- - src/pip/_internal/metadata/base.py | 12 +++++++++++- - src/pip/_internal/req/req_install.py | 2 +- - src/pip/_internal/resolution/legacy/resolver.py | 4 +++- - src/pip/_internal/resolution/resolvelib/factory.py | 12 ++++++++++++ - 4 files changed, 27 insertions(+), 3 deletions(-) - -diff --git a/src/pip/_internal/metadata/base.py b/src/pip/_internal/metadata/base.py -index 9eabcdb..9816691 100644 ---- a/src/pip/_internal/metadata/base.py -+++ b/src/pip/_internal/metadata/base.py -@@ -28,7 +28,7 @@ from pip._vendor.packaging.utils import NormalizedName, canonicalize_name - from pip._vendor.packaging.version import Version - - from pip._internal.exceptions import NoneMetadataError --from pip._internal.locations import site_packages, user_site -+from pip._internal.locations import get_scheme, site_packages, user_site - from pip._internal.models.direct_url import ( - DIRECT_URL_METADATA_NAME, - DirectUrl, -@@ -578,6 +578,16 @@ class BaseDistribution(Protocol): - for extra in self._iter_egg_info_extras(): - metadata["Provides-Extra"] = extra - -+ @property -+ def in_install_path(self) -> bool: -+ """ -+ Return True if given Distribution is installed in -+ path matching distutils_scheme layout. -+ """ -+ norm_path = normalize_path(self.installed_location) -+ return norm_path.startswith(normalize_path( -+ get_scheme("").purelib.split('python')[0])) -+ - - class BaseEnvironment: - """An environment containing distributions to introspect.""" -diff --git a/src/pip/_internal/req/req_install.py b/src/pip/_internal/req/req_install.py -index 2132785..0340890 100644 ---- a/src/pip/_internal/req/req_install.py -+++ b/src/pip/_internal/req/req_install.py -@@ -449,7 +449,7 @@ class InstallRequirement: - f"lack sys.path precedence to {existing_dist.raw_name} " - f"in {existing_dist.location}" - ) -- else: -+ elif existing_dist.in_install_path: - self.should_reinstall = True - else: - if self.editable: -diff --git a/src/pip/_internal/resolution/legacy/resolver.py b/src/pip/_internal/resolution/legacy/resolver.py -index 1dd0d70..414bdbe 100644 ---- a/src/pip/_internal/resolution/legacy/resolver.py -+++ b/src/pip/_internal/resolution/legacy/resolver.py -@@ -319,7 +319,9 @@ class Resolver(BaseResolver): - # Don't uninstall the conflict if doing a user install and the - # conflict is not a user install. - assert req.satisfied_by is not None -- if not self.use_user_site or req.satisfied_by.in_usersite: -+ if ((not self.use_user_site -+ or req.satisfied_by.in_usersite) -+ and req.satisfied_by.in_install_path): - req.should_reinstall = True - req.satisfied_by = None - -diff --git a/src/pip/_internal/resolution/resolvelib/factory.py b/src/pip/_internal/resolution/resolvelib/factory.py -index 1f31d83..3804774 100644 ---- a/src/pip/_internal/resolution/resolvelib/factory.py -+++ b/src/pip/_internal/resolution/resolvelib/factory.py -@@ -1,6 +1,8 @@ - import contextlib - import functools - import logging -+import sys -+import sysconfig - from typing import ( - TYPE_CHECKING, - Callable, -@@ -617,6 +619,16 @@ class Factory: - if dist is None: # Not installed, no uninstallation required. - return None - -+ # Prevent uninstalling packages from /usr -+ try: -+ if dist.installed_location in ( -+ sysconfig.get_path('purelib', scheme='posix_prefix', vars={'base': sys.base_prefix}), -+ sysconfig.get_path('platlib', scheme='posix_prefix', vars={'platbase': sys.base_prefix}), -+ ): -+ return None -+ except KeyError: # this Python doesn't have 'rpm_prefix' scheme yet -+ pass -+ - # We're installing into global site. The current installation must - # be uninstalled, no matter it's in global or user site, because the - # user site installation has precedence over global. --- -2.45.1 - diff --git a/sources b/sources deleted file mode 100644 index 4c3846d..0000000 --- a/sources +++ /dev/null @@ -1,4 +0,0 @@ -SHA512 (pip-25.1.1.tar.gz) = ce61c9861265139b3c5ea9be9dc246097cd75c21687cf8301f80a377d02420c4524f0d6307d2ca0232ff8715b1105343bcfdb9cac6b69503780ab2c4645558dc -SHA512 (setuptools-79.0.1-py3-none-any.whl) = fef6cfc6f95a5bb7320f1680e1c665cb8d9a4e4227cde4d8aab8a50bed4bcf04320085b9d7d5343359f887008db5c5a861e57f3d08b7b0b2311a28adaeee6b4a -SHA512 (wheel-0.45.1-py3-none-any.whl) = 86c16248ec804ee0ac95d43b03d47351dceb534d0cdc4025ca1eb073e39e539de44c870b9261f0373144e1537f0e42675a759a318a8d5d346bbd9efcb704061d -SHA512 (coverage-0-py3-none-any.whl) = e734192565347010efe68f8ba600254259c9b647f3c553fd4e5d87b1d7f955cb15d6f7d807716f4a6415d239beed945fbec7210feaf502e9cc849c332845926e diff --git a/tests/pip_install_upgrade/runtest.sh b/tests/pip_install_upgrade/runtest.sh deleted file mode 100755 index 4c520f5..0000000 --- a/tests/pip_install_upgrade/runtest.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -eux -# This script requires root privileges and you should never run it on your own machine -test $EUID -eq 0 - -PYTHON_VERSION=$(/usr/bin/python3 -c 'import sys; print("{}.{}".format(*sys.version_info))') -RPM_SITELIB="/usr/lib/python${PYTHON_VERSION}/site-packages" -LOCAL_SITELIB="/usr/local/lib/python${PYTHON_VERSION}/site-packages" -USER_SITELIB="/home/fedora-test-user/.local/lib/python${PYTHON_VERSION}/site-packages" - -# First, let's install older Pello with pip as if it was installed by RPM -# This is an approximation, but it usually works -RPM_BUILD_ROOT=/ /usr/bin/pip install 'Pello==1.0.1' - -# Now, we'll upgrade it with regular pip -/usr/bin/pip install --upgrade 'Pello==1.0.2' - -# pip should see it -/usr/bin/pip freeze | grep '^Pello==1\.0\.2$' - -# Both installations should still exist -test -d "${RPM_SITELIB}/pello-1.0.1.dist-info" -test -d "${LOCAL_SITELIB}/Pello-1.0.2.dist-info" - -# Let's ditch the local one -/usr/bin/pip uninstall --yes Pello - -# It should only remove one of them -test -d "${RPM_SITELIB}/pello-1.0.1.dist-info" -! test -d "${LOCAL_SITELIB}/Pello-1.0.2.dist-info" - -# And pip should still see the RPM-installed one -/usr/bin/pip freeze | grep '^Pello==1\.0\.1$' - -# Again, but as regular user -useradd fedora-test-user -su fedora-test-user -c '/usr/bin/pip install "Pello==1.0.2"' -test -d "${USER_SITELIB}/Pello-1.0.2.dist-info" -su fedora-test-user -c '/usr/bin/pip freeze' | grep '^Pello==1\.0\.2$' -su fedora-test-user -c '/usr/bin/pip uninstall --yes Pello' -su fedora-test-user -c '/usr/bin/pip freeze' | grep '^Pello==1\.0\.1$' diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index b2347e3..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,93 +0,0 @@ ---- -- hosts: localhost - tags: - - classic - pre_tasks: - - import_role: - name: standard-test-source - vars: - fetch_only: True - - roles: - - role: standard-test-basic - tags: - - classic - repositories: - - repo: "https://src.fedoraproject.org/tests/python.git" - dest: "python" - - repo: "https://src.fedoraproject.org/rpms/pyproject-rpm-macros.git" - dest: "pyproject-rpm-macros" - tests: - - smoke36: - dir: python/smoke - run: VERSION=3.6 TOX=false ./venv.sh - - smoke39: - dir: python/smoke - run: VERSION=3.9 ./venv.sh - - smoke310: - dir: python/smoke - run: VERSION=3.10 ./venv.sh - - smoke311: - dir: python/smoke - run: VERSION=3.11 ./venv.sh - - smoke312: - dir: python/smoke - run: VERSION=3.12 ./venv.sh - - smoke313: - dir: python/smoke - run: VERSION=3.13 ./venv.sh - - smoke314: - dir: python/smoke - run: VERSION=3.14 ./venv.sh - - smoke39_virtualenv: - dir: python/smoke - run: VERSION=3.9 METHOD=virtualenv ./venv.sh - - smoke310_virtualenv: - dir: python/smoke - run: VERSION=3.10 METHOD=virtualenv ./venv.sh - - smoke311_virtualenv: - dir: python/smoke - run: VERSION=3.11 METHOD=virtualenv ./venv.sh - - smoke312_virtualenv: - dir: python/smoke - run: VERSION=3.12 METHOD=virtualenv ./venv.sh - - smoke313_virtualenv: - dir: python/smoke - run: VERSION=3.13 METHOD=virtualenv ./venv.sh - - smoke314_virtualenv: - dir: python/smoke - run: VERSION=3.14 METHOD=virtualenv ./venv.sh - - mock_bootstrap_build: - dir: . - run: pyproject-rpm-macros/tests/mocktest.sh python-pip --without tests --without man - - pyproject_pytest: - dir: pyproject-rpm-macros/tests - run: ./mocktest.sh python-pytest - - pyproject_entrypoints: - dir: pyproject-rpm-macros/tests - run: ./mocktest.sh python-entrypoints - - pyproject_pluggy: - dir: pyproject-rpm-macros/tests - run: ./mocktest.sh python-pluggy - - pyproject_clikit: - dir: pyproject-rpm-macros/tests - run: ./mocktest.sh python-clikit - - pip_install_upgrade - required_packages: - - gcc - - virtualenv - - python3.6 - - python3.9 - - python3.10-devel - - python3.11-devel - - python3.12-devel - - python3.13-devel - - python3.14-devel - - python3-devel - - python3-tox - - mock - - rpmdevtools - - rpm-build - - grep - - util-linux - - shadow-utils