-
Notifications
You must be signed in to change notification settings - Fork 760
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
Failed to detect the operating system version on Rocky Linux 9.3 #1486
Comments
I can reproduce this via the
|
Ah the problem is that
We assume it is and parse it as an ELF file. This is related to the concern @zanieb brought up in #1433 where everything will fail if parsing It looks like
I'll put up a PR that reverts #1433 and just checks the |
It turns out that /bin/ls can sometimes be plain text file. For example, in Rocky Linux 9: ``` $ cat /bin/ls #!/usr/bin/coreutils --coreutils-prog-shebang=ls ``` However, `/bin/sh` is an ELF binary: ``` $ file /bin/sh /bin/sh: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=7acbb41bf6f1b7d977f1b44675bf3ed213776835, for GNU/Linux 3.2.0, stripped ``` In a related issue (#1433), @zanieb fixed #1395 where, on NixOS, `/bin/ls` doesn't exist but `/bin/sh` does. However, the fix attempts `/bin/ls` first and only tries `/bin/sh` if `/bin/ls` doesn't exist. If `/bin/ls` exists but isn't a valid ELF file, then the entire enterprise gives up and `uv` fails to detect the version of `libc` that is installed. Instead of tweaking the logic to keep trying `/bin/ls` and then `/bin/sh` after even if parsing `/bin/ls` fails, we just switch over to reading `/bin/sh` only. It seems like a more fundamental thing to sniff and likely less error prone. We can adjust this heuristic as needed if it provdes to be problematic. I tested this fix manually on Rocky Linux 9 via Docker: ``` $ cross b -r -p uv --target x86_64-unknown-linux-musl $ cp target/x86_64-unknown-linux-musl/release/uv ~/astral/issues/uv/i1486/uv $ docker run --rm -it --mount type=bind,src=/home/andrew/astral/issues/uv/i1486,dst=/host rockylinux:9 bash [root@df2baa65d2f8 /]# /host/uv venv Using Python 3.9.18 interpreter at /usr/bin/python3.9 Creating virtualenv at: .venv [root@df2baa65d2f8 /]# ``` Fixes #1486, Ref #1433
Hi there,
Doing an
uv venv
or any of the command will lead to this error:Context:
The text was updated successfully, but these errors were encountered: