diff --git a/python-pip.spec b/python-pip.spec index b665e3e..2a5fb5b 100644 --- a/python-pip.spec +++ b/python-pip.spec @@ -13,16 +13,16 @@ %endif %global srcname pip -%global base_version 20.3.3 +%global base_version 21.0 %global upstream_version %{base_version}%{?prerel} -%global python_wheelname %{srcname}-%{upstream_version}-py2.py3-none-any.whl +%global python_wheelname %{srcname}-%{upstream_version}-py3-none-any.whl %global python_wheeldir %{_datadir}/python-wheels %global bashcompdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null) Name: python-%{srcname} Version: %{base_version}%{?prerel:~%{prerel}} -Release: 3%{?dist} +Release: 1%{?dist} Summary: A tool for installing and managing Python packages # We bundle a lot of libraries with pip, which itself is under MIT license. @@ -130,22 +130,21 @@ Packages" or "Pip Installs Python". %global bundled() %{expand: Provides: bundled(python%{1}dist(appdirs)) = 1.4.4 Provides: bundled(python%{1}dist(cachecontrol)) = 0.12.6 -Provides: bundled(python%{1}dist(certifi)) = 2020.11.8 -Provides: bundled(python%{1}dist(chardet)) = 3.0.4 +Provides: bundled(python%{1}dist(certifi)) = 2020.12.5 +Provides: bundled(python%{1}dist(chardet)) = 4 Provides: bundled(python%{1}dist(colorama)) = 0.4.4 Provides: bundled(python%{1}dist(contextlib2)) = 0.6^post1 Provides: bundled(python%{1}dist(distlib)) = 0.3.1 Provides: bundled(python%{1}dist(distro)) = 1.5 Provides: bundled(python%{1}dist(html5lib)) = 1.1 Provides: bundled(python%{1}dist(idna)) = 2.10 -Provides: bundled(python%{1}dist(ipaddress)) = 1.0.23 -Provides: bundled(python%{1}dist(msgpack)) = 1 +Provides: bundled(python%{1}dist(msgpack)) = 1.0.2 Provides: bundled(python%{1}dist(packaging)) = 20.8 Provides: bundled(python%{1}dist(pep517)) = 0.9.1 Provides: bundled(python%{1}dist(progress)) = 1.5 Provides: bundled(python%{1}dist(pyparsing)) = 2.4.7 -Provides: bundled(python%{1}dist(requests)) = 2.25 -Provides: bundled(python%{1}dist(resolvelib)) = 0.5.3 +Provides: bundled(python%{1}dist(requests)) = 2.25.1 +Provides: bundled(python%{1}dist(resolvelib)) = 0.5.4 Provides: bundled(python%{1}dist(retrying)) = 1.3.3 Provides: bundled(python%{1}dist(setuptools)) = 44 Provides: bundled(python%{1}dist(six)) = 1.15 @@ -256,13 +255,14 @@ rm src/pip/_vendor/certifi/*.pem # 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_wheeldir} tests/data/common_wheels -# Upstream uses a Python 2/3 compatibility library for csv with Python 3 semantics in tests -# We only target Python 3 and csv23 is not (yet) packaged -# As of 20.1b1, this workaround was sufficient to get around the missing dependency -sed -i -e 's/csv23/csv/g' tests/lib/wheel.py +# Remove shebang from files in bundled chardet +grep -lr "^#\!/usr/bin/env python" src/pip/_vendor/chardet/ | xargs sed -i "1d" %build @@ -398,6 +398,9 @@ pytest_k='not completion and %{python_wheeldir}/%{python_wheelname} %changelog +* 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 diff --git a/remove-existing-dist-only-if-path-conflicts.patch b/remove-existing-dist-only-if-path-conflicts.patch index 328d2d5..01c46ad 100644 --- a/remove-existing-dist-only-if-path-conflicts.patch +++ b/remove-existing-dist-only-if-path-conflicts.patch @@ -1,7 +1,7 @@ -From 854fd7296bb9306d46ba3cc8bb7c6f18a7960ed6 Mon Sep 17 00:00:00 2001 -From: Tomas Hrnciar -Date: Sun, 26 Apr 2020 21:19:03 +0200 -Subject: [PATCH] Prevent removing of the system packages installed under +From 0c41df7c4161de2453d5161382a3bbfc7178bec6 Mon Sep 17 00:00:00 2001 +From: Lumir Balhar +Date: Tue, 26 Jan 2021 09:05:07 +0100 +Subject: [PATCH] Prevent removing of the system packages installed under /usr/lib when pip install -U is executed. @@ -12,11 +12,17 @@ Co-Authored-By: Michal Cyprian Co-Authored-By: Victor Stinner Co-Authored-By: Petr Viktorin --- + src/pip/_internal/req/req_install.py | 3 ++- + src/pip/_internal/resolution/legacy/resolver.py | 5 ++++- + src/pip/_internal/resolution/resolvelib/factory.py | 10 ++++++++++ + src/pip/_internal/utils/misc.py | 11 +++++++++++ + 4 files changed, 27 insertions(+), 2 deletions(-) + diff --git a/src/pip/_internal/req/req_install.py b/src/pip/_internal/req/req_install.py -index 4759f4a..2e76e35 100644 +index 6d0aa30..0a5f8ed 100644 --- a/src/pip/_internal/req/req_install.py +++ b/src/pip/_internal/req/req_install.py -@@ -41,6 +41,7 @@ from pip._internal.utils.misc import ( +@@ -39,6 +39,7 @@ from pip._internal.utils.misc import ( ask_path_exists, backup_dir, display_path, @@ -24,7 +30,7 @@ index 4759f4a..2e76e35 100644 dist_in_site_packages, dist_in_usersite, get_distribution, -@@ -447,7 +448,7 @@ class InstallRequirement(object): +@@ -445,7 +446,7 @@ class InstallRequirement: "lack sys.path precedence to {} in {}".format( existing_dist.project_name, existing_dist.location) ) @@ -34,7 +40,7 @@ index 4759f4a..2e76e35 100644 else: if self.editable: diff --git a/src/pip/_internal/resolution/legacy/resolver.py b/src/pip/_internal/resolution/legacy/resolver.py -index c9b4c66..ff361d8 100644 +index 665dba1..a219e63 100644 --- a/src/pip/_internal/resolution/legacy/resolver.py +++ b/src/pip/_internal/resolution/legacy/resolver.py @@ -34,6 +34,7 @@ from pip._internal.resolution.base import BaseResolver @@ -56,20 +62,53 @@ index c9b4c66..ff361d8 100644 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 bfaa052..68915aa 100644 +--- a/src/pip/_internal/resolution/resolvelib/factory.py ++++ b/src/pip/_internal/resolution/resolvelib/factory.py +@@ -1,4 +1,5 @@ + import logging ++import sys + + from pip._vendor.packaging.utils import canonicalize_name + +@@ -18,7 +19,9 @@ from pip._internal.utils.misc import ( + dist_in_site_packages, + dist_in_usersite, + get_installed_distributions, ++ dist_location, + ) ++from pip._internal.locations import distutils_scheme + from pip._internal.utils.typing import MYPY_CHECK_RUNNING + from pip._internal.utils.virtualenv import running_under_virtualenv + +@@ -365,6 +368,13 @@ class Factory: + if dist is None: # Not installed, no uninstallation required. + return None + ++ # Prevent uninstalling packages from /usr ++ if dist_location(dist) in ( ++ distutils_scheme('', prefix=sys.base_prefix)['purelib'], ++ distutils_scheme('', prefix=sys.base_prefix)['platlib'], ++ ): ++ return None ++ + # 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. diff --git a/src/pip/_internal/utils/misc.py b/src/pip/_internal/utils/misc.py -index 24a7455..5fd48d3 100644 +index 6dd94e2..7925518 100644 --- a/src/pip/_internal/utils/misc.py +++ b/src/pip/_internal/utils/misc.py -@@ -31,7 +31,7 @@ from pip._vendor.six.moves.urllib.parse import unquote as urllib_unquote - +@@ -27,6 +27,7 @@ from pip._vendor.retrying import retry # type: ignore from pip import __version__ from pip._internal.exceptions import CommandError --from pip._internal.locations import get_major_minor_version, site_packages, user_site + from pip._internal.locations import get_major_minor_version, site_packages, user_site +from pip._internal.locations import distutils_scheme, get_major_minor_version, site_packages, user_site - from pip._internal.utils.compat import WINDOWS, expanduser, stdlib_pkgs, str_to_display + from pip._internal.utils.compat import WINDOWS, stdlib_pkgs from pip._internal.utils.typing import MYPY_CHECK_RUNNING, cast from pip._internal.utils.virtualenv import ( -@@ -406,6 +406,16 @@ def dist_in_site_packages(dist): +@@ -398,6 +399,16 @@ def dist_in_site_packages(dist): return dist_location(dist).startswith(normalize_path(site_packages)) @@ -86,33 +125,6 @@ index 24a7455..5fd48d3 100644 def dist_is_editable(dist): # type: (Distribution) -> bool """ ---- a/src/pip/_internal/resolution/resolvelib/factory.py -+++ b/src/pip/_internal/resolution/resolvelib/factory.py -@@ -1,3 +1,4 @@ - import logging -+import sys - - from pip._vendor.packaging.utils import canonicalize_name -@@ -17,5 +18,7 @@ - dist_in_usersite, - get_installed_distributions, -+ dist_location, - ) -+from pip._internal.locations import distutils_scheme - from pip._internal.utils.typing import MYPY_CHECK_RUNNING - from pip._internal.utils.virtualenv import running_under_virtualenv -@@ -313,4 +316,11 @@ - return None - -+ # Prevent uninstalling packages from /usr -+ if dist_location(dist) in ( -+ distutils_scheme('', prefix=sys.base_prefix)['purelib'], -+ distutils_scheme('', prefix=sys.base_prefix)['platlib'], -+ ): -+ return None -+ - # We're installing into global site. The current installation must - # be uninstalled, no matter it's in global or user site, because the -- -2.25.4 +2.29.2 diff --git a/sources b/sources index 03f8a60..e6266ef 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (pip-20.3.3.tar.gz) = 362d20e5d2665fa6211cf3836ca02a0340fb34ecde1d5902eecae744eb655d7dcfed0bd464e9db186b87b63a7aaf275e43645cf6321bdddd44b62787de84d87b +SHA512 (pip-21.0.tar.gz) = ac77a7204423f1fdc3a4d328dab1860258efccde0123cff3217f357637c4ce3d85772ab81a230122ff813be2cfa40f2862e5d499390289efe1dcde3a31a42264 diff --git a/tests/tests.yml b/tests/tests.yml index dbf1697..1383612 100644 --- a/tests/tests.yml +++ b/tests/tests.yml @@ -28,6 +28,9 @@ - smoke39: dir: python/smoke run: VERSION=3.9 ./venv.sh + - smoke310: + dir: python/smoke + run: VERSION=3.10 ./venv.sh - smoke27: dir: python/smoke run: VERSION=2.7 METHOD=virtualenv ./venv.sh @@ -49,6 +52,9 @@ - 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 - pipenv: run: pipenv --three && pipenv install six - pyproject_pytest: @@ -66,12 +72,13 @@ required_packages: - gcc - virtualenv - - python27 - - python35 - - python36 - - python37 - - python38 - - python39 + - python2.7 + - python3.5 + - python3.6 + - python3.7 + - python3.8 + - python3.9 + - python3.10 - python2-devel - python3-devel - python3-tox