Compare commits
3 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a4abcfc4f | ||
|
|
7826d2e8db | ||
|
|
ef794e86a2 |
3 changed files with 224 additions and 1 deletions
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
Name: python-%{srcname}
|
Name: python-%{srcname}
|
||||||
Version: %{base_version}%{?prerel:~%{prerel}}
|
Version: %{base_version}%{?prerel:~%{prerel}}
|
||||||
Release: 2%{?dist}
|
Release: 4%{?dist}
|
||||||
Summary: A tool for installing and managing Python packages
|
Summary: A tool for installing and managing Python packages
|
||||||
|
|
||||||
# We bundle a lot of libraries with pip, which itself is under MIT license.
|
# We bundle a lot of libraries with pip, which itself is under MIT license.
|
||||||
|
|
@ -86,6 +86,13 @@ Patch5: nowarn-pip._internal.main.patch
|
||||||
# Upstream issue: https://github.com/pypa/packaging/issues/368
|
# Upstream issue: https://github.com/pypa/packaging/issues/368
|
||||||
Patch6: no-version-warning.patch
|
Patch6: no-version-warning.patch
|
||||||
|
|
||||||
|
# Switch install scheme backend to sysconfig on Python 3.11+
|
||||||
|
# Released in pip 21.3, with the conditional set to Python 3.10+
|
||||||
|
# Since we manipulate sysconfig install schemes in Python 3.11,
|
||||||
|
# we better have this on all Fedoras that have Python 3.11
|
||||||
|
# Rebased from https://github.com/pypa/pip/pull/10358
|
||||||
|
Patch10358: use-sysconfig.patch
|
||||||
|
|
||||||
# Downstream only patch
|
# Downstream only patch
|
||||||
# Users might have local installations of pip from using
|
# Users might have local installations of pip from using
|
||||||
# `pip install --user --upgrade pip` on older/newer versions.
|
# `pip install --user --upgrade pip` on older/newer versions.
|
||||||
|
|
@ -256,6 +263,9 @@ ln -s %{python_wheeldir} tests/data/common_wheels
|
||||||
# Remove shebang from files in bundled chardet
|
# Remove shebang from files in bundled chardet
|
||||||
grep -lr "^#\!/usr/bin/env python" src/pip/_vendor/chardet/ | xargs sed -i "1d"
|
grep -lr "^#\!/usr/bin/env python" src/pip/_vendor/chardet/ | xargs sed -i "1d"
|
||||||
|
|
||||||
|
# Remove windows executable binaries
|
||||||
|
rm -v src/pip/_vendor/distlib/*.exe
|
||||||
|
sed -i '/\.exe/d' setup.py
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%py3_build_wheel
|
%py3_build_wheel
|
||||||
|
|
@ -391,6 +401,13 @@ pytest_k='not completion and
|
||||||
%{python_wheeldir}/%{python_wheelname}
|
%{python_wheeldir}/%{python_wheelname}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Oct 13 2021 Miro Hrončok <mhroncok@redhat.com> - 21.2.3-4
|
||||||
|
- Switch install scheme backend to sysconfig on Python 3.11+
|
||||||
|
|
||||||
|
* Wed Oct 06 2021 Charalampos Stratakis <cstratak@redhat.com> - 21.2.3-3
|
||||||
|
- Remove bundled windows executables
|
||||||
|
- Resolves: rhbz#2005453
|
||||||
|
|
||||||
* Mon Aug 16 2021 Miro Hrončok <mhroncok@redhat.com> - 21.2.3-2
|
* Mon Aug 16 2021 Miro Hrončok <mhroncok@redhat.com> - 21.2.3-2
|
||||||
- Fix broken uninstallation by a bogus downstream patch
|
- Fix broken uninstallation by a bogus downstream patch
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,9 @@
|
||||||
- smoke310:
|
- smoke310:
|
||||||
dir: python/smoke
|
dir: python/smoke
|
||||||
run: VERSION=3.10 ./venv.sh
|
run: VERSION=3.10 ./venv.sh
|
||||||
|
- smoke311:
|
||||||
|
dir: python/smoke
|
||||||
|
run: VERSION=3.11 ./venv.sh
|
||||||
- smoke27:
|
- smoke27:
|
||||||
dir: python/smoke
|
dir: python/smoke
|
||||||
run: VERSION=2.7 METHOD=virtualenv ./venv.sh
|
run: VERSION=2.7 METHOD=virtualenv ./venv.sh
|
||||||
|
|
@ -49,6 +52,9 @@
|
||||||
- smoke310_virtualenv:
|
- smoke310_virtualenv:
|
||||||
dir: python/smoke
|
dir: python/smoke
|
||||||
run: VERSION=3.10 METHOD=virtualenv ./venv.sh
|
run: VERSION=3.10 METHOD=virtualenv ./venv.sh
|
||||||
|
- smoke311_virtualenv:
|
||||||
|
dir: python/smoke
|
||||||
|
run: VERSION=3.11 METHOD=virtualenv ./venv.sh
|
||||||
- pipenv:
|
- pipenv:
|
||||||
run: pipenv --three && pipenv install six
|
run: pipenv --three && pipenv install six
|
||||||
- pyproject_pytest:
|
- pyproject_pytest:
|
||||||
|
|
@ -73,6 +79,7 @@
|
||||||
- python3.8
|
- python3.8
|
||||||
- python3.9
|
- python3.9
|
||||||
- python3.10
|
- python3.10
|
||||||
|
- python3.11
|
||||||
- python2-devel
|
- python2-devel
|
||||||
- python3-devel
|
- python3-devel
|
||||||
- python3-tox
|
- python3-tox
|
||||||
|
|
|
||||||
199
use-sysconfig.patch
Normal file
199
use-sysconfig.patch
Normal file
|
|
@ -0,0 +1,199 @@
|
||||||
|
From 628d0ecfa8339119b3ccf6c6ae8e1b69e1f0f264 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tzu-ping Chung <uranusjr@gmail.com>
|
||||||
|
Date: Fri, 13 Aug 2021 18:08:57 +0800
|
||||||
|
Subject: [PATCH] Switch install scheme backend to sysconfig
|
||||||
|
|
||||||
|
This is only done for Python 3.11+ so we don't disrupt too many existing
|
||||||
|
pip installations.
|
||||||
|
---
|
||||||
|
setup.cfg | 1 +
|
||||||
|
src/pip/_internal/locations/__init__.py | 40 +++++++++++++++++++------
|
||||||
|
tests/conftest.py | 4 +++
|
||||||
|
tests/unit/test_locations.py | 4 ++-
|
||||||
|
4 files changed, 39 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.cfg b/setup.cfg
|
||||||
|
index d5dfb58..be58a12 100644
|
||||||
|
--- a/setup.cfg
|
||||||
|
+++ b/setup.cfg
|
||||||
|
@@ -57,6 +57,7 @@ follow_imports = skip
|
||||||
|
addopts = --ignore src/pip/_vendor --ignore tests/tests_cache -r aR --color=yes
|
||||||
|
markers =
|
||||||
|
network: tests that need network
|
||||||
|
+ incompatible_with_sysconfig
|
||||||
|
incompatible_with_test_venv
|
||||||
|
incompatible_with_venv
|
||||||
|
no_auto_tempdir_manager
|
||||||
|
diff --git a/src/pip/_internal/locations/__init__.py b/src/pip/_internal/locations/__init__.py
|
||||||
|
index 0d49cf2..5192ef5 100644
|
||||||
|
--- a/src/pip/_internal/locations/__init__.py
|
||||||
|
+++ b/src/pip/_internal/locations/__init__.py
|
||||||
|
@@ -43,6 +43,8 @@ if os.environ.get("_PIP_LOCATIONS_NO_WARN_ON_MISMATCH"):
|
||||||
|
else:
|
||||||
|
_MISMATCH_LEVEL = logging.WARNING
|
||||||
|
|
||||||
|
+_USE_SYSCONFIG = sys.version_info >= (3, 11)
|
||||||
|
+
|
||||||
|
|
||||||
|
def _looks_like_red_hat_patched_platlib_purelib(scheme: Dict[str, str]) -> bool:
|
||||||
|
platlib = scheme["platlib"]
|
||||||
|
@@ -156,7 +158,7 @@ def get_scheme(
|
||||||
|
isolated: bool = False,
|
||||||
|
prefix: Optional[str] = None,
|
||||||
|
) -> Scheme:
|
||||||
|
- old = _distutils.get_scheme(
|
||||||
|
+ new = _sysconfig.get_scheme(
|
||||||
|
dist_name,
|
||||||
|
user=user,
|
||||||
|
home=home,
|
||||||
|
@@ -164,7 +166,10 @@ def get_scheme(
|
||||||
|
isolated=isolated,
|
||||||
|
prefix=prefix,
|
||||||
|
)
|
||||||
|
- new = _sysconfig.get_scheme(
|
||||||
|
+ if _USE_SYSCONFIG:
|
||||||
|
+ return new
|
||||||
|
+
|
||||||
|
+ old = _distutils.get_scheme(
|
||||||
|
dist_name,
|
||||||
|
user=user,
|
||||||
|
home=home,
|
||||||
|
@@ -276,8 +281,11 @@ def get_scheme(
|
||||||
|
|
||||||
|
|
||||||
|
def get_bin_prefix() -> str:
|
||||||
|
- old = _distutils.get_bin_prefix()
|
||||||
|
new = _sysconfig.get_bin_prefix()
|
||||||
|
+ if _USE_SYSCONFIG:
|
||||||
|
+ return new
|
||||||
|
+
|
||||||
|
+ old = _distutils.get_bin_prefix()
|
||||||
|
if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="bin_prefix"):
|
||||||
|
_log_context()
|
||||||
|
return old
|
||||||
|
@@ -306,8 +314,11 @@ def _looks_like_deb_system_dist_packages(value: str) -> bool:
|
||||||
|
|
||||||
|
def get_purelib() -> str:
|
||||||
|
"""Return the default pure-Python lib location."""
|
||||||
|
- old = _distutils.get_purelib()
|
||||||
|
new = _sysconfig.get_purelib()
|
||||||
|
+ if _USE_SYSCONFIG:
|
||||||
|
+ return new
|
||||||
|
+
|
||||||
|
+ old = _distutils.get_purelib()
|
||||||
|
if _looks_like_deb_system_dist_packages(old):
|
||||||
|
return old
|
||||||
|
if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="purelib"):
|
||||||
|
@@ -317,8 +328,11 @@ def get_purelib() -> str:
|
||||||
|
|
||||||
|
def get_platlib() -> str:
|
||||||
|
"""Return the default platform-shared lib location."""
|
||||||
|
- old = _distutils.get_platlib()
|
||||||
|
new = _sysconfig.get_platlib()
|
||||||
|
+ if _USE_SYSCONFIG:
|
||||||
|
+ return new
|
||||||
|
+
|
||||||
|
+ old = _distutils.get_platlib()
|
||||||
|
if _looks_like_deb_system_dist_packages(old):
|
||||||
|
return old
|
||||||
|
if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="platlib"):
|
||||||
|
@@ -326,10 +340,20 @@ def get_platlib() -> str:
|
||||||
|
return old
|
||||||
|
|
||||||
|
|
||||||
|
+def _deduplicated(v1: str, v2: str) -> List[str]:
|
||||||
|
+ """Deduplicate values from a list."""
|
||||||
|
+ if v1 == v2:
|
||||||
|
+ return [v1]
|
||||||
|
+ return [v1, v2]
|
||||||
|
+
|
||||||
|
+
|
||||||
|
def get_prefixed_libs(prefix: str) -> List[str]:
|
||||||
|
"""Return the lib locations under ``prefix``."""
|
||||||
|
- old_pure, old_plat = _distutils.get_prefixed_libs(prefix)
|
||||||
|
new_pure, new_plat = _sysconfig.get_prefixed_libs(prefix)
|
||||||
|
+ if _USE_SYSCONFIG:
|
||||||
|
+ return _deduplicated(new_pure, new_plat)
|
||||||
|
+
|
||||||
|
+ old_pure, old_plat = _distutils.get_prefixed_libs(prefix)
|
||||||
|
|
||||||
|
warned = [
|
||||||
|
_warn_if_mismatch(
|
||||||
|
@@ -346,6 +370,4 @@ def get_prefixed_libs(prefix: str) -> List[str]:
|
||||||
|
if any(warned):
|
||||||
|
_log_context(prefix=prefix)
|
||||||
|
|
||||||
|
- if old_pure == old_plat:
|
||||||
|
- return [old_pure]
|
||||||
|
- return [old_pure, old_plat]
|
||||||
|
+ return _deduplicated(old_pure, old_plat)
|
||||||
|
diff --git a/tests/conftest.py b/tests/conftest.py
|
||||||
|
index a53e0c4..e1483ba 100644
|
||||||
|
--- a/tests/conftest.py
|
||||||
|
+++ b/tests/conftest.py
|
||||||
|
@@ -15,6 +15,7 @@ import pytest
|
||||||
|
from setuptools.wheel import Wheel
|
||||||
|
|
||||||
|
from pip._internal.cli.main import main as pip_entry_point
|
||||||
|
+from pip._internal.locations import _USE_SYSCONFIG
|
||||||
|
from pip._internal.utils.temp_dir import global_tempdir_manager
|
||||||
|
from tests.lib import DATA_DIR, SRC_DIR, PipTestEnvironment, TestData
|
||||||
|
from tests.lib.certs import make_tls_cert, serialize_cert, serialize_key
|
||||||
|
@@ -77,6 +78,9 @@ def pytest_collection_modifyitems(config, items):
|
||||||
|
):
|
||||||
|
item.add_marker(pytest.mark.skip("Incompatible with venv"))
|
||||||
|
|
||||||
|
+ if item.get_closest_marker("incompatible_with_sysconfig") and _USE_SYSCONFIG:
|
||||||
|
+ item.add_marker(pytest.mark.skip("Incompatible with sysconfig"))
|
||||||
|
+
|
||||||
|
module_path = os.path.relpath(
|
||||||
|
item.module.__file__,
|
||||||
|
os.path.commonprefix([__file__, item.module.__file__]),
|
||||||
|
diff --git a/tests/unit/test_locations.py b/tests/unit/test_locations.py
|
||||||
|
index 067f4e8..ecd3709 100644
|
||||||
|
--- a/tests/unit/test_locations.py
|
||||||
|
+++ b/tests/unit/test_locations.py
|
||||||
|
@@ -96,6 +96,7 @@ class TestDistutilsScheme:
|
||||||
|
expected = os.path.join(root, path[1:])
|
||||||
|
assert os.path.abspath(root_scheme[key]) == expected
|
||||||
|
|
||||||
|
+ @pytest.mark.incompatible_with_sysconfig
|
||||||
|
@pytest.mark.incompatible_with_venv
|
||||||
|
def test_distutils_config_file_read(self, tmpdir, monkeypatch):
|
||||||
|
# This deals with nt/posix path differences
|
||||||
|
@@ -115,10 +116,11 @@ class TestDistutilsScheme:
|
||||||
|
scheme = _get_scheme_dict('example')
|
||||||
|
assert scheme['scripts'] == install_scripts
|
||||||
|
|
||||||
|
+ @pytest.mark.incompatible_with_sysconfig
|
||||||
|
@pytest.mark.incompatible_with_venv
|
||||||
|
# when we request install-lib, we should install everything (.py &
|
||||||
|
# .so) into that path; i.e. ensure platlib & purelib are set to
|
||||||
|
- # this path
|
||||||
|
+ # this path. sysconfig does not support this.
|
||||||
|
def test_install_lib_takes_precedence(self, tmpdir, monkeypatch):
|
||||||
|
# This deals with nt/posix path differences
|
||||||
|
install_lib = os.path.normcase(os.path.abspath(
|
||||||
|
|
||||||
|
From d1d9bc5849c200e11456342017f8832631f85bf1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tzu-ping Chung <uranusjr@gmail.com>
|
||||||
|
Date: Sat, 21 Aug 2021 00:47:57 +0800
|
||||||
|
Subject: [PATCH] Add Python 3.10 workaround
|
||||||
|
|
||||||
|
---
|
||||||
|
tests/unit/test_wheel.py | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/tests/unit/test_wheel.py b/tests/unit/test_wheel.py
|
||||||
|
index 247e8d6643..e21c0ec2e6 100644
|
||||||
|
--- a/tests/unit/test_wheel.py
|
||||||
|
+++ b/tests/unit/test_wheel.py
|
||||||
|
@@ -422,7 +422,7 @@ def test_install_prefix(self, data, tmpdir):
|
||||||
|
self.name,
|
||||||
|
user=False,
|
||||||
|
home=None,
|
||||||
|
- root=tmpdir,
|
||||||
|
+ root=str(tmpdir), # Casting needed for CPython 3.10+. See GH-10358.
|
||||||
|
isolated=False,
|
||||||
|
prefix=prefix,
|
||||||
|
)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue