Skip to content

How does uv determine the host CPU capabilities on armv7l? #18509

@MichaIng

Description

@MichaIng

Question

I try to run installation tests with uv for armv7l on GitHub ARM runners. For this, a Debian armhf userland is booted as systemd-nspawn container, and the uname output is altered to return armv7l instead of aarch64 (the GitHub ARM runner architecture).

  1. uv python install 3.14 downloads cpython-3.14.3-linux-armv7-gnueabi instead of cpython-3.14.3-linux-armv7-gnueabihf, despite hardfloat userland and CPU.
  2. uv venv keeps pulling cpython-3.14.3-linux-armv7-gnueabi even if cpython-3.14.3-linux-armv7-gnueabihf was installed explicitly. Which fails with:
    error: Python interpreter not found at `~/.local/share/uv/python/cpython-3.14.3-linux-armv7-gnueabi/bin/python3.14`
    
    Can be avoided by enforcing the gnueabihf interpreter with UV_PYTHON, which then needs to be unset afterwards, else uv pip install won't use the venv interpreter.
  3. uv pip install then works using the venv.

This is independent of the Debian version, and I could not replicate it on actual armv7l hardware. However, would be great if there was a way to have uv functional in armv7l containers on aarch64 hosts as well.

Might also affect setups without container, like Raspberry Pi OS 32-bit on 64-bit RPi models. The Raspberry Pi 4 by default uses the 64-bit kernel even with 32-bit userland, hence not so uncommon there.

Platform

Debian armhf on aarch64 host

Version

uv 0.10.10

Metadata

Metadata

Assignees

No one assigned

    Labels

    great writeupA wonderful example of a quality contribution 💜questionAsking for clarification or support

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions