Files
packages/lang/python/python-pip/patches/002-pip-runner-pyc-fix.patch
Alexandru Ardelean 5b731fd697 python-pip: bump to 26.2.1
Refresh sha256 from the PyPI sdist and refresh 003 for the shifted line.

Retarget 002-pip-runner-pyc-fix.patch instead of dropping it: in 26.2.1
get_runnable_pip() moved from build_env.py (now a package) to
_internal/utils/misc.py. The function is otherwise unchanged and still
returns __pip-runner__.py, so the .pyc fallback is still required. We ship
pip byte-compiled only (the .py sources live in the -src package), so
without it build isolation cannot locate the runner and every PEP 517
install fails on target. This is a packaging workaround, not an upstream
bug, so upstream has no reason to carry it.

Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
2026-08-11 13:12:39 +03:00

38 lines
1.6 KiB
Diff

From 85f271cdf5fa0853d221c704dbb4e7490ab117ec Mon Sep 17 00:00:00 2001
From: Alexandru Ardelean <alex@shruggie.ro>
Date: Tue, 11 Aug 2026 11:00:00 +0300
Subject: [PATCH] build isolation: fall back to __pip-runner__.pyc
get_runnable_pip() returns the path of __pip-runner__.py so pip can run
itself in a subprocess to populate the PEP 517 build environment. We ship
the pip package byte-compiled only (the .py sources live in the separate
-src package), so the .py file is absent on target and build isolation
fails. Fall back to the .pyc when the source is not present.
Not an upstream bug: upstream always ships the .py, so it has no reason to
handle this. In pip 26.2.x get_runnable_pip() moved from build_env.py to
_internal/utils/misc.py (build_env.py became a package), which is why the
old patch stopped applying; the function itself is unchanged and still
hardcodes __pip-runner__.py, so this workaround is still required.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
---
src/pip/_internal/utils/misc.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
--- a/src/pip/_internal/utils/misc.py
+++ b/src/pip/_internal/utils/misc.py
@@ -105,7 +105,11 @@ def get_runnable_pip() -> str:
# case, we can use that directly.
return str(source)
- return os.fsdecode(source / "__pip-runner__.py")
+ filename = "__pip-runner__.pyc"
+ py = source / "__pip-runner__.py"
+ if py.is_file():
+ filename = "__pip-runner__.py"
+ return os.fsdecode(source / filename)
def normalize_version_info(py_version_info: tuple[int, ...]) -> tuple[int, int, int]: