Skip to content

[MNT]: ARM builds for musllinux #28543

Open
matplotlib/matplotlib-release
#13

Description

@korverdev

Summary

For those of us using ARM, having ARM builds published to PyPI would significantly speed up initial installs of this library. When technologies such as Docker are being used, these builds are done quite often and additional dependencies may be required to build this dependency.

Proposed fix

No response

Activity

  1. ksunden commented on Jul 12, 2024

    @ksunden
    Member

    We do have ARM builds uploaded to pypi already (at least for manylinux (glibc) and MacOS)

    https://pypi.org/project/matplotlib/3.9.1/#files

    Is there something we are missing?

    We do not currently build windows ARM wheels, and I did not see Linux wheels using musl, are either of those cases what you are referring to?

  2. tacaswell commented on Jul 12, 2024

    @tacaswell
    Member

    I think this is an illustration of one the of the major issues with pip/wheel (https://pypackaging-native.github.io/meta-topics/pypi_social_model/) as it pushes the user expectation of building ever more wheels on to the projects.

    We can do what ever cibuildwheel makes easy.

    I think in most cases either the packing of the underlying OS or conda is a better choice.

  3. QuLogic commented on Jul 12, 2024

    @QuLogic
    Member

    GitHub Actions have been slow to add Windows on ARM runners, so though we ask cibuildwheel for auto64, we don't get ARM builds there. However, we could explicitly start asking for ARM64 builds, which would be cross-compiled, and untested.

  4. korverdev commented on Jul 12, 2024

    @korverdev
    Author

    Apologies. I'll admit I'm not very familiar with how Pip works under the hood. Just saw builds happening that don't on x86 and jumped to some evidently incorrect conclusions. I'm working off Alpine Linux which uses Musl. I really appreciate y'all sharing your knowledge on all this and steering me in the right direction. This has been very educational.

    It appears that cibuildwheel offers a musllinux_aarch64 target which would be what I want, but that seems to have been intentionally disabled. I assume that's probably for a good reason, but couldn't find why this was setup this way. Definitely don't want to drop additional work on your plate, especially if this only benefits a very small subset of users of this package. I'd be happy to take a stab at getting this working if the lack of support for musllinux is just down to lack of demand or resources to invest in getting it working.

  5. changed the title [-][MNT]: ARM builds[/-] [+][MNT]: ARM builds for musllinux[/+] on Jul 12, 2024
  6. korverdev commented on Jul 19, 2024

    @korverdev
    Author

    Did some looking into what this would take. It seems like the musllinux ARM build just works, but it does double build times on this already lengthy CI step since we'd be doubling the number of builds. Opened a PR to simply re-enable this build, but I assume this was disabled because of how lengthy this makes builds. If this is a concern, I can look into splitting these builds out across more runners to mitigate this.

  7. ksunden commented on Jan 22, 2025

    @ksunden
    Member

    A note on this, Github recently enabled native ARM runners that we have started using for CIBW, and it is significantly faster than even the x86-64 builds now, to my understanding.

    It may be worth revisiting this discussion. (To be clear, this is not a guarantee we would accept it now where we wouldn't before, but the availability and speed of native ARM builds was one of the primary sticking points to my recollection.)

  8. ianthomas23 commented on Jan 23, 2025

    @ianthomas23
    Member

    FWIW both contourpy and kiwisolver publish musllinux aarch64 wheels.

  9. khmyznikov commented on Jan 29, 2025

    @khmyznikov

    Any plans for Windows Arm64? actions/python-versions#291

  10. QuLogic commented on Jan 30, 2025

    @QuLogic
    Member

    That's support in the images; there's still no Windows on ARM runners available.
    #28554

  11. strophy commented on Sep 28, 2026

    @strophy

    I see in the cibuildwheel job and on PyPI that musllinux aarch64 wheels are still deliberately excluded using skip_config:

    build_selector: 
      build_config: cp314-* cp314t-*
      skip_config: *-musllinux_aarch64
      requires_python: >=3.12
      enable: []
    ...
    

    Could we consider reviewing this decision? Native Linux arm runners are available now, and Alpine on a Raspberry Pi or similar device is a pretty common deployment scenario. Native pre-builds would save us hours of time and needing to build wheels in our own emulators.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions