-
Notifications
You must be signed in to change notification settings - Fork 877
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
uv python install 3.12
is not working on armv7 libc is identify as gnu
instead of gnueabihf
#6873
Comments
Or at least it would be nice to be able to define / force the right value by command line interface? |
@konstin -- Do you know if this is expected to work yet? |
iirc we have to detect whether we're on a hardfloat abi or not and use |
If you like I can prepare a PR, but I'm not sure which is the best approach to detect if we are are using hardfloat abi or not. Executing the code enabling the ❯ RUST_LOG=trace uv python install 3.12 --verbose
DEBUG uv 0.4.2
TRACE Checking lock for `/root/.local/share/uv/python` at `/root/.local/share/uv/python/.lock`
DEBUG Acquired lock for `/root/.local/share/uv/python`
Searching for Python versions matching: Python 3.12
TRACE ld path: /lib/ld-linux-armhf.so.3
TRACE stdout output from `ld`: ""
TRACE stderr output from `ld`: "Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]\nYou have invoked `ld.so', the helper program for shared library executables.\nThis program usually lives in the file `/lib/ld.so', and special directives\nin executable files using ELF shared libraries tell the system's program\nloader to load the helper program from this file. This helper program loads\nthe shared libraries needed by the program executable, prepares the program\nto run, and runs it. You may invoke this helper program directly from the\ncommand line to load and run an ELF executable file; this is like executing\nthat file itself, but always uses this helper program from the file you\nspecified, instead of the helper program file specified in the executable\nfile you run. This is mostly of use for maintainers to test new versions\nof this helper program; chances are you did not intend to run this program.\n\n --list list all dependencies and how they are resolved\n --verify verify that given object really is a dynamically linked\n\t\t\tobject we can handle\n --inhibit-cache Do not use /etc/ld.so.cache\n --library-path PATH use given PATH instead of content of the environment\n\t\t\tvariable LD_LIBRARY_PATH\n --inhibit-rpath LIST ignore RUNPATH and RPATH information in object names\n\t\t\tin LIST\n --audit LIST use objects named in LIST as auditors\n --preload LIST preload objects named in LIST\n"
TRACE Tried to find musl version by running `"/lib/ld-linux-armhf.so.3"`, but failed: Could not find musl version in output of: `/lib/ld-linux-armhf.so.3`
DEBUG Released lock at `/root/.local/share/uv/python/.lock`
error: No download found for request: cpython-3.12-linux-armv7-gnu I see that, in debian, in the
So it seems to me that this pattern is shared among linux distributions. Otherwise, we can simply implement the same logic used by |
I have the same trouble on a armv7 beaglebone black. Latest |
I’ve thought through a few different options for detecting whether to use I have some Raspberry Pis lying around, but they need to be provisioned first. Could I ask for your help testing #7725, @orgua @zarch? I’d be happy to provide a pre-built version of |
(i tried testing this but my raspi is too new and |
Thanks. I'm in the process of reviving some of my old pi's. I'll update the PR when I've something. |
@kakkoyun Sorry for the delay but I have to free up some space to be able to compile The current branch is not working for me. I tried: uv on detect_hardfloat is 📦 v0.4.16 via 🐍 via 🦀 v1.81.0 took 3m19s
❯ target/debug/uv python install 3.12
Searching for Python versions matching: Python 3.12
error: Failed to parse Python installation key `cpython-3.12.6-linux-armv7-gnueabi`: invalid libc: Unknown libc envir
onment: gnueabi I'm on: uv on detect_hardfloat is 📦 v0.4.16 via 🐍 via 🦀 v1.81.0 took 10s
❯ git show
commit fde37914b7c01df2d97c747c9a6a28f1b3bd6dc1 (HEAD -> detect_hardfloat, origin/detect_hardfloat)
Author: Kemal Akkoyun <kakkoyun@gmail.com>
Date: Fri Sep 27 15:02:32 2024 +0200
commit fde37914b7c01df2d97c747c9a6a28f1b3bd6dc1 (HEAD -> detect_hardfloat, origin/detect_hardfloat)
Author: Kemal Akkoyun <kakkoyun@gmail.com>
Date: Fri Sep 27 15:02:32 2024 +0200
[...] Here my uv on detect_hardfloat is 📦 v0.4.16 via 🐍 via 🦀 v1.81.0 took 6s
❯ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 108.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3
processor : 1
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 108.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3
processor : 2
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 108.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3
processor : 3
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 108.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3
Hardware : BCM2711
Revision : d03115
Serial : 100000008cd9439f
Model : Raspberry Pi 4 Model B Rev 1.5 And here the command execution with the full log: uv on detect_hardfloat is 📦 v0.4.16 via 🐍 via 🦀 v1.81.0
❯ RUST_LOG=trace cargo run python install 3.12 --verbose
Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.92s
Running `target/debug/uv python install 3.12 --verbose`
DEBUG uv 0.4.16
TRACE Checking lock for `/home/zarch/.local/share/uv/python` at `/home/zarch/.local/share/uv/python/.lock`
DEBUG Acquired lock for `/home/zarch/.local/share/uv/python`
WARN Ignoring malformed managed Python entry:
Failed to parse Python installation key `cpython-3.12.6-linux-armv7-gnueabi`: invalid libc: Unknown libc environment: gnueabi
Searching for Python versions matching: Python 3.12
TRACE ld path: /lib/ld-linux-armhf.so.3
TRACE stdout output from `ld`: ""
TRACE stderr output from `ld`: "Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]\nYou have invoked `ld.so', the helper program for shared library executables.\nThis program usually lives in the file `/lib/ld.so', and special directives\nin executable files using ELF shared libraries tell the system's program\nloader to load the helper program from this file. This helper program loads\nthe shared libraries needed by the program executable, prepares the program\nto run, and runs it. You may invoke this helper program directly from the\ncommand line to load and run an ELF executable file; this is like executing\nthat file itself, but always uses this helper program from the file you\nspecified, instead of the helper program file specified in the executable\nfile you run. This is mostly of use for maintainers to test new versions\nof this helper program; chances are you did not intend to run this program.\n\n --list list all dependencies and how they are resolved\n --verify verify that given object really is a dynamically linked\n\t\t\tobject we can handle\n --inhibit-cache Do not use /etc/ld.so.cache\n --library-path PATH use given PATH instead of content of the environment\n\t\t\tvariable LD_LIBRARY_PATH\n --inhibit-rpath LIST ignore RUNPATH and RPATH information in object names\n\t\t\tin LIST\n --audit LIST use objects named in LIST as auditors\n --preload LIST preload objects named in LIST\n"
TRACE Tried to find musl version by running `"/lib/ld-linux-armhf.so.3"`, but failed: Could not find musl version in output of: `/lib/ld-linux-armhf.so.3`
DEBUG Using request timeout of 30s
DEBUG Released lock at `/home/zarch/.local/share/uv/python/.lock`
error: Failed to parse Python installation key `cpython-3.12.6-linux-armv7-gnueabi`: invalid libc: Unknown libc environment: gnueabi |
@zarch Thanks a lot for testing it. These logs are helpful. I will give it another shot. |
This is not recommended, but if it is blocking you a it is possible to install a Python version manually. It is a bit cumbersome but this worked at least for the RPi 4 I'm using:
.
└ cpython-3.12.7-linux-armv7l-gnu
├── bin
├── include
├── lib
└── share |
You can also request a full download key, e.g., edit: Actually this fails to parse correctly because the error reported above. i'll fix that. #7975 |
I've just tested the #8498 applied on #7725 and rebase it to the current main branch (commit: cd408cbc5), and it works on my pc. How would you like to proceed? uv on detect_hardfloat [!⇕] is 📦 v0.4.28 via 🐍 via 🦀 v1.81.0 took 7s
❯ cargo run python install 3.13
Compiling uv-python v0.0.1 (/home/zarch/source/uv/crates/uv-python)
Compiling uv-types v0.0.1 (/home/zarch/source/uv/crates/uv-types)
Compiling uv-virtualenv v0.0.4 (/home/zarch/source/uv/crates/uv-virtualenv)
Compiling uv-distribution v0.0.1 (/home/zarch/source/uv/crates/uv-distribution)
Compiling uv-resolver v0.0.1 (/home/zarch/source/uv/crates/uv-resolver)
Compiling uv-installer v0.0.1 (/home/zarch/source/uv/crates/uv-installer)
Compiling uv-build-frontend v0.0.1 (/home/zarch/source/uv/crates/uv-build-frontend)
Compiling uv-settings v0.0.1 (/home/zarch/source/uv/crates/uv-settings)
Compiling uv-requirements v0.1.0 (/home/zarch/source/uv/crates/uv-requirements)
Compiling uv-dispatch v0.0.1 (/home/zarch/source/uv/crates/uv-dispatch)
Compiling uv-scripts v0.0.1 (/home/zarch/source/uv/crates/uv-scripts)
Compiling uv-cli v0.0.1 (/home/zarch/source/uv/crates/uv-cli)
Compiling uv-tool v0.0.1 (/home/zarch/source/uv/crates/uv-tool)
Compiling uv v0.4.28 (/home/zarch/source/uv/crates/uv)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 01s
Running `target/debug/uv python install 3.13`
Searching for Python versions matching: Python 3.13
Installed Python 3.13.0 in 9.96s
+ cpython-3.13.0-linux-armv7-gnueabihf
uv on detect_hardfloat [!⇕] is 📦 v0.4.28 via 🐍 via 🦀 v1.81.0 took 3m11s
❯ /home/zarch/.local/share/uv/python/cpython-3.13.0-linux-armv7-gnueabihf/bin/python3
Python 3.13.0 (main, Oct 16 2024, 02:57:06) [GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1
2 |
Sorry I got a bit confused that your branch was on top of the other pull request. I'll clean it up and merge, thanks! |
I tried uv
0.3.5
to install a specific version of python on my raspberry-pi:When I try to install python I got:
Looking at the code it seems that all the version available are taken from uv-python/download-metadata.json, where at the moment we have:
Using other tool such as
pystand
they work as expected:Looking at the code from my understanding
uv
is trying to infer this information fromldd
whilepystand
look at the platform in a simpler way:Perhaps
uv
should use/integrate a similar approach?The text was updated successfully, but these errors were encountered: