-
-
Notifications
You must be signed in to change notification settings - Fork 32.2k
gh-75229: make ensurepip honour value of --prefix option #135488
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
mcepl
wants to merge
3
commits into
python:main
Choose a base branch
from
openSUSE-Python:bpo-31046-ensurepip-prefix
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
When cross-compiling, the local Python interpreter that is used to run `ensurepip` may not have the same value of `sys.prefix` as the value of the 'prefix' variable that is set in the Makefile. With the following values used to install Python locally for a later copy to the files hierarchy owned by the 'termux' application on an Android device: DESTDIR=/tmp/android prefix=/data/data/com.termux/files/usr/local 'make install' causes ensurepip to install pip in $(DESTDIR)/usr/local instead of the expected $(DESTDIR)/$(prefix) where is installed the standard library. The attached patch fixes the problem. The patch was implemented assuming that pip uses distutils for the installation (note that setup.py also uses the --prefix option in the Makefile), but I know nothing about pip so forgive me if the patch is wrong and please just assume it is just a way to demonstrate the problem. Fixes: python#75229 Fixes: https://bugs.python.org/issue31046 Co-authored-by: Pradyun Gedam <pradyunsg@gmail.com> Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com> Co-authored-by: Zackery Spytz <zspytz@gmail.com> References: python#17634 Signed-off-by: Matěj Cepl <mcepl@cepl.eu>
When using `python -m ensurepip` with the `--root` option for staged installations, the generated pip script contained an incorrect shebang that pointed into the staging directory. This made the installation unusable once the staging directory was removed. This commit fixes the issue by using the internal pip `--executable` option to force the shebang to point to the correct, final interpreter path. It also corrects related pathing issues: - Removes the check that incorrectly disallowed using --root and --prefix together. - Defaults the installation prefix to `/` when --root is used alone, ensuring installation occurs at the base of the staging directory. References: python#17634 (comment) Signed-off-by: Matěj Cepl <mcepl@cepl.eu>
7b297a2
to
4b24401
Compare
Has this PR addressed the various concerns raised in #17634 or is it simply a copy of that PR, reopened by a new author? I'm concerned by the comment in the OP here:
I'm not sure who is expected to take responsibility for the correctness of this PR in the light of this statement? |
4b24401
to
5c4b65b
Compare
On Fri Jun 13, 2025 at 11:29 PM CEST, Paul Moore wrote:
Has this PR addressed the various concerns raised in #17634 or is it simply a copy of that PR, reopened by a new author?
I believe I have addressed those concerns in the second commit (the first comments is this PR squashed).
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When cross-compiling, the local Python interpreter that is used to run
ensurepip
may not have the same value ofsys.prefix
as the value of the 'prefix' variable that is set in the Makefile.With the following values used to install Python locally for a later copy to the files hierarchy owned by the 'termux' application on an Android device:
'make install' causes ensurepip to install pip in
$(DESTDIR)/usr/local
instead of the expected$(DESTDIR)/$(prefix)
where is installed the standard library.The attached patch fixes the problem. The patch was implemented assuming that pip uses
distutils
for the installation (note that setup.py also uses the --prefix option in the Makefile), but I know nothing about pip so forgive me if the patch is wrong and please just assume it is just a way to demonstrate the problem.Fixes: #75229
Co-authored-by: Pradyun Gedam pradyunsg@gmail.com
Co-authored-by: Erlend E. Aasland erlend.aasland@protonmail.com
Co-authored-by: Zackery Spytz zspytz@gmail.com
References: #17634
Signed-off-by: Matěj Cepl mcepl@cepl.eu