-
-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Skip $PATH entries we cannot check rather than dying with PermissionError #2782
Merged
Conversation
This file contains 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
hroncok
force-pushed
the
do-not-die-nonbrowseable-path
branch
from
October 16, 2024 22:46
c053e03
to
4b6acb3
Compare
…rror On Fedora CI, I used runuser to get rid of root privileges before testing virtualenv. The invocation I used did not clear the root's $PATH and as a result, one of the entries in $PATH was /root/.local/bin. But /root/ does not allow other users to browse (execute, read). That lead to an unhanded PermissionError. When this happens, the $PATH entry is now skipped as if it did not exist. As there might be other reasons we cannot check if the $PATH entry exists, I decided to suppress all OSError types. For clarity, here is the Traceback I was getting: # runuser testuser -c 'virtualenv --with-traceback --python pypy3.10 venv' Traceback (most recent call last): File "/usr/bin/virtualenv", line 8, in <module> sys.exit(run_with_catch()) ~~~~~~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/virtualenv/__main__.py", line 56, in run_with_catch run(args, options, env) ~~~^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/virtualenv/__main__.py", line 18, in run session = cli_run(args, options, env) File "/usr/lib/python3.13/site-packages/virtualenv/run/__init__.py", line 31, in cli_run of_session = session_via_cli(args, options, setup_logging, env) File "/usr/lib/python3.13/site-packages/virtualenv/run/__init__.py", line 49, in session_via_cli parser, elements = build_parser(args, options, setup_logging, env) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/virtualenv/run/__init__.py", line 77, in build_parser parser._interpreter = interpreter = discover.interpreter # noqa: SLF001 ^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/virtualenv/discovery/discover.py", line 41, in interpreter self._interpreter = self.run() ~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/virtualenv/discovery/builtin.py", line 58, in run result = get_interpreter(python_spec, self.try_first_with, self.app_data, self._env) File "/usr/lib/python3.13/site-packages/virtualenv/discovery/builtin.py", line 75, in get_interpreter for interpreter, impl_must_match in propose_interpreters(spec, try_first_with, app_data, env): ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/virtualenv/discovery/builtin.py", line 147, in propose_interpreters for pos, path in enumerate(get_paths(env)): ~~~~~~~~~^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/virtualenv/discovery/builtin.py", line 169, in get_paths if p.exists(): ~~~~~~~~^^ File "/usr/lib64/python3.13/pathlib/_abc.py", line 450, in exists self.stat(follow_symlinks=follow_symlinks) ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.13/pathlib/_local.py", line 515, in stat return os.stat(self, follow_symlinks=follow_symlinks) ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] Permission denied: '/root/.local/bin'
hroncok
force-pushed
the
do-not-die-nonbrowseable-path
branch
from
October 16, 2024 22:47
54eba67
to
7a77931
Compare
(I don't think the CI failures are related.) |
Can you put in another PR to fix that failure to unblock merging? |
I have no idea what's going on there. |
Thanks. |
2 tasks
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.
On Fedora CI, I used runuser to get rid of root privileges before testing virtualenv.
The invocation I used did not clear the root's $PATH and as a result, one of the entries in $PATH was /root/.local/bin.
But /root/ does not allow other users to browse (execute, read).
That lead to an unhanded PermissionError.
When this happens, the $PATH entry is now skipped as if it did not exist.
As there might be other reasons we cannot check if the $PATH entry exists, I decided to suppress all OSError types.
For clarity, here is the Traceback I was getting:
Thanks for contributing, make sure you address all the checklists (for details on how see development documentation)
tox -e fix
)docs/changelog
folder