Problem Statement
This RFC addresses the need for official LLVM 19.x binaries for ARM and AArch64 Linux, as well as Windows ARM64 (WOA) platforms. Currently, users on these architectures lack access to official pre-built binaries since the release process has moved to GitHub actions workflow.
Historic Context
Over past decade, We, Linaro has produced official prebuilt LLVM binaries for Arm architecture platforms (both Linux and Windows) till LLVM 19, when official release was migrated to GitHub actions workflow.
About Linaro LLVM Binaries
Linaro LLVM binaries for ARM and AArch64 Linux platforms are produced using the official release scripts provided by the LLVM project, available at llvm/utils/release.
Linaro produces LLVM binary release for following platform triples
- armv7-linux-gnueabihf
- aarch64-linux-gnu
- aarch64-pc-windows-msvc
Build Platform Information
Linux
The builds are executed on Arm Ampere® Altra® Server 2U Mt. Jade NVMe hardware, servers running Ubuntu (LTS - 1) and utilize Docker containers to create isolated and reproducible build environments.
Windows
The Windows ARM64 LLVM binaries were being produced using a Microsoft Surface Pro X up to the 18.x release. Starting with the 19.x release, the binaries are produce on Microsoft Surface Pro 9 featuring the 11th Generation Snapdragon X Elite processor, equipped with 32 GB RAM and a 1 TB SSD. Both machines runs Windows 11 and utilizes Visual Studio 2022 alongside the latest LLVM tools available prior to building the LLVM release.
Reasons Why LLVM 19.x Arm platform binaries missing.
- The current LLVM GitHub Actions release workflows are not supported to build for ARM architectures.
- GitHub hosted Linux ARM64 runners are relatively new and have not been tested for LLVM build process. Without thorough testing release CI on GHA may be flaky or inconsistent.
- The capabilities, stability, and resource constraints of Windows ARM64 runners in GitHub Actions are not well-understood.
- Arm v7 (32bit - Arm) Architecture support is not supported by GitHub actions.
- There is delay and lack of clarity on dedicated funding to procure or maintain the necessary runners (either self-hosted or higher-tier GitHub-hosted runners) to perform these builds efficiently.
Proposed Solution
For LLVM 19.x release we (Linaro) propose to upload binaries built in our infrastructure to LLVM release page. We can work with LLVM community and release managers to resolve any concerns. I understand we already have such precedent where Windows x64 19.x release binaries were third-party binaries uploaded to LLVM release page.
Linaro LLVM 19.x binaries can be found at: Linaro Snapshots
For future we voltuneer to evaluate GitHub actions workflows and make change to the existing workflows for Arm Linux and Windows release.
We understand that current LLVM GHA funding situation may not be ideal for the workloads to run efficiently on GitHub runners and may require higher tier runners or strong self-hosted runners. We welcome funding from the community and we are also working offline with our partners to resolve this issue.