From add791f1d562981f07349cb0a1d4978012dd1a87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Mon, 2 Sep 2019 10:28:45 +0200 Subject: [PATCH] Update to 19.2.3 (#1742230) --- .gitignore | 2 + 6788.patch | 22 ++++ ...given-prefix-from-wheel-RECORD-files.patch | 110 ------------------ python-pip.spec | 25 ++-- ...existing-dist-only-if-path-conflicts.patch | 84 ++++++------- sources | 4 +- 6 files changed, 83 insertions(+), 164 deletions(-) create mode 100644 6788.patch delete mode 100644 allow-stripping-given-prefix-from-wheel-RECORD-files.patch diff --git a/.gitignore b/.gitignore index e46e276..c6378ff 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,5 @@ pip-0.7.2.tar.gz /pip-19.1-tests.tar.gz /pip-19.1.1.tar.gz /pip-19.1.1-tests.tar.gz +/pip-19.2.3.tar.gz +/pip-19.2.3-tests.tar.gz diff --git a/6788.patch b/6788.patch new file mode 100644 index 0000000..f5d06fd --- /dev/null +++ b/6788.patch @@ -0,0 +1,22 @@ +From bbbbe07aab24ebaec228624cf6d0100ebe58b00a Mon Sep 17 00:00:00 2001 +From: Hugo +Date: Thu, 25 Jul 2019 10:47:05 +0300 +Subject: [PATCH] Consistently get version string, ignoring alpha/beta + +--- + tests/functional/test_install.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/functional/test_install.py b/tests/functional/test_install.py +index 96b780f3c..9481cfd08 100644 +--- a/tests/functional/test_install.py ++++ b/tests/functional/test_install.py +@@ -1306,7 +1306,7 @@ def test_double_install_fail(script): + def _get_expected_error_text(): + return ( + "Package 'pkga' requires a different Python: {} not in '<1.0'" +- ).format(sys.version.split()[0]) ++ ).format('.'.join(map(str, sys.version_info[:3]))) + + + def test_install_incompatible_python_requires(script): diff --git a/allow-stripping-given-prefix-from-wheel-RECORD-files.patch b/allow-stripping-given-prefix-from-wheel-RECORD-files.patch deleted file mode 100644 index 8bf2735..0000000 --- a/allow-stripping-given-prefix-from-wheel-RECORD-files.patch +++ /dev/null @@ -1,110 +0,0 @@ -diff --git a/src/pip/_internal/commands/install.py b/src/pip/_internal/commands/install.py -index 1c244d23..4b07ec0f 100644 ---- a/src/pip/_internal/commands/install.py -+++ b/src/pip/_internal/commands/install.py -@@ -109,6 +109,14 @@ class InstallCommand(RequirementCommand): - default=None, - help="Installation prefix where lib, bin and other top-level " - "folders are placed") -+ cmd_opts.add_option( -+ '--strip-file-prefix', -+ dest='strip_file_prefix', -+ metavar='prefix', -+ default=None, -+ help="Strip given prefix from script paths in wheel RECORD." -+ ) -+ - - cmd_opts.add_option(cmdoptions.build_dir()) - -@@ -391,6 +399,7 @@ class InstallCommand(RequirementCommand): - pycompile=options.compile, - warn_script_location=warn_script_location, - use_user_site=options.use_user_site, -+ strip_file_prefix=options.strip_file_prefix, - ) - - lib_locations = get_lib_location_guesses( -diff --git a/src/pip/_internal/req/req_install.py b/src/pip/_internal/req/req_install.py -index a4834b00..d21530ac 100644 ---- a/src/pip/_internal/req/req_install.py -+++ b/src/pip/_internal/req/req_install.py -@@ -431,7 +431,8 @@ class InstallRequirement(object): - prefix=None, # type: Optional[str] - warn_script_location=True, # type: bool - use_user_site=False, # type: bool -- pycompile=True # type: bool -+ pycompile=True, # type: bool -+ strip_file_prefix=None # type: Optional[str] - ): - # type: (...) -> None - move_wheel_files( -@@ -443,6 +444,7 @@ class InstallRequirement(object): - pycompile=pycompile, - isolated=self.isolated, - warn_script_location=warn_script_location, -+ strip_file_prefix=strip_file_prefix, - ) - - # Things valid for sdists -@@ -894,7 +896,8 @@ class InstallRequirement(object): - prefix=None, # type: Optional[str] - warn_script_location=True, # type: bool - use_user_site=False, # type: bool -- pycompile=True # type: bool -+ pycompile=True, # type: bool -+ strip_file_prefix=None # type: Optional[str] - ): - # type: (...) -> None - global_options = global_options if global_options is not None else [] -@@ -911,6 +914,7 @@ class InstallRequirement(object): - self.source_dir, root=root, prefix=prefix, home=home, - warn_script_location=warn_script_location, - use_user_site=use_user_site, pycompile=pycompile, -+ strip_file_prefix=strip_file_prefix, - ) - self.install_succeeded = True - return -diff --git a/src/pip/_internal/wheel.py b/src/pip/_internal/wheel.py -index 67bcc7f7..6470576b 100644 ---- a/src/pip/_internal/wheel.py -+++ b/src/pip/_internal/wheel.py -@@ -265,6 +265,7 @@ def get_csv_rows_for_installed( - changed, # type: set - generated, # type: List[str] - lib_dir, # type: str -+ strip_file_prefix=None, # type: Optional[str] - ): - # type: (...) -> List[InstalledCSVRow] - """ -@@ -289,7 +290,11 @@ def get_csv_rows_for_installed( - installed_rows.append(tuple(row)) - for f in generated: - digest, length = rehash(f) -- installed_rows.append((normpath(f, lib_dir), digest, str(length))) -+ final_path = normpath(f, lib_dir) -+ if strip_file_prefix and final_path.startswith(strip_file_prefix): -+ final_path = os.path.join(os.sep, -+ os.path.relpath(final_path, strip_file_prefix)) -+ installed_rows.append((final_path, digest, str(length))) - for f in installed: - installed_rows.append((installed[f], '', '')) - return installed_rows -@@ -306,7 +311,8 @@ def move_wheel_files( - scheme=None, # type: Optional[Mapping[str, str]] - isolated=False, # type: bool - prefix=None, # type: Optional[str] -- warn_script_location=True # type: bool -+ warn_script_location=True, # type: bool -+ strip_file_prefix=None # type: Optional[str] - ): - # type: (...) -> None - """Install a wheel""" -@@ -605,6 +611,7 @@ if __name__ == '__main__': - outrows = get_csv_rows_for_installed( - reader, installed=installed, changed=changed, - generated=generated, lib_dir=lib_dir, -+ strip_file_prefix=strip_file_prefix - ) - writer = csv.writer(record_out) - # Sort to simplify testing. diff --git a/python-pip.spec b/python-pip.spec index 3269433..f20831f 100644 --- a/python-pip.spec +++ b/python-pip.spec @@ -15,8 +15,8 @@ Name: python-%{srcname} # When updating, update the bundled libraries versions bellow! # You can use vendor_meta.sh in the dist git repo -Version: 19.1.1 -Release: 8%{?dist} +Version: 19.2.3 +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. @@ -73,9 +73,8 @@ Source2: https://github.com/pypa/pypa-docs-theme/archive/%{pypa_theme_com Source3: https://github.com/python/python-docs-theme/archive/2018.2.tar.gz %endif -# Patch until the following issue gets implemented upstream: -# https://github.com/pypa/pip/issues/1351 -Patch0: allow-stripping-given-prefix-from-wheel-RECORD-files.patch +# Fix expected output in test to not break with alpha/beta/rc Python versions +Patch0: https://github.com/pypa/pip/pull/6788.patch # Downstream only patch # Emit a warning to the user if pip install is run with root privileges @@ -125,26 +124,26 @@ Packages" or "Pip Installs Python". %global bundled() %{expand: Provides: bundled(python%{1}dist(appdirs)) = 1.4.3 Provides: bundled(python%{1}dist(CacheControl)) = 0.12.5 -Provides: bundled(python%{1}dist(certifi)) = 2019.3.9 +Provides: bundled(python%{1}dist(certifi)) = 2019.6.16 Provides: bundled(python%{1}dist(chardet)) = 3.0.4 Provides: bundled(python%{1}dist(colorama)) = 0.4.1 -Provides: bundled(python%{1}dist(distlib)) = 0.2.8 +Provides: bundled(python%{1}dist(distlib)) = 0.2.9.post0 Provides: bundled(python%{1}dist(distro)) = 1.4.0 Provides: bundled(python%{1}dist(html5lib)) = 1.0.1 Provides: bundled(python%{1}dist(idna)) = 2.8 Provides: bundled(python%{1}dist(ipaddress)) = 1.0.22 Provides: bundled(python%{1}dist(lockfile)) = 0.12.2 -Provides: bundled(python%{1}dist(msgpack)) = 0.5.6 +Provides: bundled(python%{1}dist(msgpack)) = 0.6.1 Provides: bundled(python%{1}dist(packaging)) = 19.0 Provides: bundled(python%{1}dist(pep517)) = 0.5.0 Provides: bundled(python%{1}dist(progress)) = 1.5 Provides: bundled(python%{1}dist(pyparsing)) = 2.4.0 Provides: bundled(python%{1}dist(pytoml)) = 0.1.20 -Provides: bundled(python%{1}dist(requests)) = 2.21.0 +Provides: bundled(python%{1}dist(requests)) = 2.22.0 Provides: bundled(python%{1}dist(retrying)) = 1.3.3 Provides: bundled(python%{1}dist(setuptools)) = 41.0.1 Provides: bundled(python%{1}dist(six)) = 1.12.0 -Provides: bundled(python%{1}dist(urllib3)) = 1.24.1 +Provides: bundled(python%{1}dist(urllib3)) = 1.25.3 Provides: bundled(python%{1}dist(webencodings)) = 0.5.1 } @@ -349,7 +348,9 @@ ln -sf %{buildroot}%{_bindir}/pip3 _bin/pip %doc README.rst %if %{with doc} %{_mandir}/man1/pip.* +%{_mandir}/man1/pip-*.* %{_mandir}/man1/pip3.* +%{_mandir}/man1/pip3-*.* %endif %{_bindir}/pip %{_bindir}/pip3 @@ -374,6 +375,10 @@ ln -sf %{buildroot}%{_bindir}/pip3 _bin/pip %{python_wheeldir}/%{python_wheelname} %changelog +* 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 diff --git a/remove-existing-dist-only-if-path-conflicts.patch b/remove-existing-dist-only-if-path-conflicts.patch index e8fbe93..c93a887 100644 --- a/remove-existing-dist-only-if-path-conflicts.patch +++ b/remove-existing-dist-only-if-path-conflicts.patch @@ -10,42 +10,20 @@ Date: Tue Sep 18 17:13:51 2018 +0200 Co-Authored-By: Michal Cyprian -diff --git a/src/pip/_internal/req/req_install.py b/src/pip/_internal/req/req_install.py -index d21530a..0023a35 100644 ---- a/src/pip/_internal/req/req_install.py -+++ b/src/pip/_internal/req/req_install.py -@@ -29,7 +29,7 @@ from pip._internal.utils.hashes import Hashes - from pip._internal.utils.logging import indent_log - from pip._internal.utils.misc import ( - _make_build_dir, ask_path_exists, backup_dir, call_subprocess, -- display_path, dist_in_site_packages, dist_in_usersite, ensure_dir, -+ display_path, dist_in_install_path, dist_in_site_packages, dist_in_usersite, ensure_dir, - get_installed_version, redact_password_from_url, rmtree, - ) - from pip._internal.utils.packaging import get_metadata -@@ -411,7 +411,7 @@ class InstallRequirement(object): - "lack sys.path precedence to %s in %s" % - (existing_dist.project_name, existing_dist.location) - ) -- else: -+ elif dist_in_install_path(existing_dist): - self.conflicts_with = existing_dist - return True - -diff --git a/src/pip/_internal/resolve.py b/src/pip/_internal/resolve.py -index 33f572f..88b68e1 100644 ---- a/src/pip/_internal/resolve.py -+++ b/src/pip/_internal/resolve.py -@@ -20,7 +20,7 @@ from pip._internal.exceptions import ( - ) +diff --git a/src/pip/_internal/legacy_resolve.py b/src/pip/_internal/legacy_resolve.py +index 1d9229cb..3088d22d 100644 +--- a/src/pip/_internal/legacy_resolve.py ++++ b/src/pip/_internal/legacy_resolve.py +@@ -24,7 +24,7 @@ from pip._internal.exceptions import ( from pip._internal.req.constructors import install_req_from_req_string from pip._internal.utils.logging import indent_log --from pip._internal.utils.misc import dist_in_usersite, ensure_dir -+from pip._internal.utils.misc import dist_in_install_path, dist_in_usersite, ensure_dir - from pip._internal.utils.packaging import check_dist_requires_python - from pip._internal.utils.typing import MYPY_CHECK_RUNNING - -@@ -154,7 +154,9 @@ class Resolver(object): + from pip._internal.utils.misc import ( +- dist_in_usersite, ensure_dir, normalize_version_info, ++ dist_in_install_path, dist_in_usersite, ensure_dir, normalize_version_info, + ) + from pip._internal.utils.packaging import ( + check_requires_python, get_requires_python, +@@ -219,7 +219,9 @@ class Resolver(object): """ # Don't uninstall the conflict if doing a user install and the # conflict is not a user install. @@ -56,20 +34,42 @@ index 33f572f..88b68e1 100644 req.conflicts_with = req.satisfied_by req.satisfied_by = None +diff --git a/src/pip/_internal/req/req_install.py b/src/pip/_internal/req/req_install.py +index f5c93504..1096c397 100644 +--- a/src/pip/_internal/req/req_install.py ++++ b/src/pip/_internal/req/req_install.py +@@ -27,7 +27,7 @@ from pip._internal.utils.logging import indent_log + from pip._internal.utils.marker_files import PIP_DELETE_MARKER_FILENAME + from pip._internal.utils.misc import ( + _make_build_dir, ask_path_exists, backup_dir, call_subprocess, +- display_path, dist_in_site_packages, dist_in_usersite, ensure_dir, ++ display_path, dist_in_install_path, dist_in_site_packages, dist_in_usersite, ensure_dir, + get_installed_version, redact_password_from_url, rmtree, + ) + from pip._internal.utils.packaging import get_metadata +@@ -427,7 +427,7 @@ class InstallRequirement(object): + "lack sys.path precedence to %s in %s" % + (existing_dist.project_name, existing_dist.location) + ) +- else: ++ elif dist_in_install_path(existing_dist): + self.conflicts_with = existing_dist + return True + diff --git a/src/pip/_internal/utils/misc.py b/src/pip/_internal/utils/misc.py -index 84605ee..0e4ba93 100644 +index 61f74dc8..ffa8042c 100644 --- a/src/pip/_internal/utils/misc.py +++ b/src/pip/_internal/utils/misc.py @@ -30,7 +30,7 @@ from pip._vendor.six.moves.urllib.parse import unquote as urllib_unquote + + from pip import __version__ from pip._internal.exceptions import CommandError, InstallationError - from pip._internal.locations import ( - running_under_virtualenv, site_packages, user_site, virtualenv_no_global, -- write_delete_marker_file, -+ write_delete_marker_file, distutils_scheme, - ) +-from pip._internal.locations import site_packages, user_site ++from pip._internal.locations import distutils_scheme, site_packages, user_site from pip._internal.utils.compat import ( - WINDOWS, console_to_str, expanduser, stdlib_pkgs, -@@ -355,6 +355,16 @@ def dist_in_site_packages(dist): + WINDOWS, console_to_str, expanduser, stdlib_pkgs, str_to_display, + ) +@@ -454,6 +454,16 @@ def dist_in_site_packages(dist): ).startswith(normalize_path(site_packages)) diff --git a/sources b/sources index a898220..bac5521 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (pip-19.1.1.tar.gz) = b35598fc6077af44d69f32bc3bc4b28630b1761a31b6b814c59069adbea98bdd68071471bf5ebd28551aae8e970b882200938f6751135f246dc8228f799604a3 -SHA512 (pip-19.1.1-tests.tar.gz) = e67d49c87dc06ef1c45733623280571089307f2e4151c6e189d2f286c154c59d0c83e6a252ac5bd677ece0ce03294f909aa9eed128f0795f062224fcbf21c5d7 +SHA512 (pip-19.2.3.tar.gz) = 64ab4ece6da526c9d1b24e73a9c0ca0a38d0fb1525bf9981177342a8b0902ae825ec8f3dabd9ce00dcf0f010aaabf4177c9146084668ce505e0c382c322948c8 +SHA512 (pip-19.2.3-tests.tar.gz) = d4052d83e20fe276d251a80d8d33c33568570d5f26038847f0e5fba34a48ae3d5318b31439f8582d337245f38472495db221d7f4bf39eb9c98181f2f8aecad36 SHA512 (d2e63fbfc62af3b7050f619b2f5bb8658985b931.tar.gz) = fc7b11c5cbf6322469ce2eaca2a8d7eb60b17398d316f7465ab5d3d38dabd00ee22a3da7437a28f6312f0115f77f2df0d8bf0abc671e055eef06356c94283409 SHA512 (2018.2.tar.gz) = 4c09c43a70ecb3ca3bc9445b01bf209eb382e41d9c969145696dea38551992ed88fd9b725a1264380f3dbdf8acdaf5ada3ef86b44255cdfbdbe4a01a1630912d