Skip to content

Conversation

nkpar
Copy link
Contributor

@nkpar nkpar commented Oct 6, 2025

Summary

Adds comprehensive support for building ARM64 Linux (aarch64-unknown-linux-gnu) release binaries alongside existing x86_64 Linux and macOS ARM64 builds.

Changes

  • Build Script (.github/scripts/release/build-linux-release.sh)

    • Added support for TARGET environment variable to enable cross-compilation
    • Adjusts artifact paths based on target architecture
  • Reusable RC Build Workflow (.github/workflows/release-reusable-rc-build.yml)

    • Updated build-rc job to handle both x86_64 and ARM64 Linux targets
    • Added ARM64 cross-compilation setup (gcc-aarch64-linux-gnu, g++-aarch64-linux-gnu)
    • Configured Rust cross-compilation with proper linker
    • Updated deb package building to support ARM64
  • Main Release Build Workflow (.github/workflows/release-20_build-rc.yml)

    • Added 8 new ARM64 Linux build jobs for all release binaries
  • Promote & Publish Workflows

    • Updated target matrices to include aarch64-unknown-linux-gnu
    • Added binary renaming for ARM64 Linux artifacts
    • Updated upload logic to handle 3-platform releases

Build Targets

After these changes, releases build for 3 platforms:

  • Linux x64: x86_64-unknown-linux-gnu (existing)
  • Linux ARM64: aarch64-unknown-linux-gnu (NEW)
  • macOS ARM64: aarch64-apple-darwin (existing)

Benefits

  • Native ARM64 Linux support for cloud providers (AWS Graviton, Azure Ampere, etc.)
  • Improved performance on ARM64 servers vs x86 emulation
  • Better developer experience for ARM-based environments
  • Cost optimization - ARM instances typically 20-40% cheaper

Checklist

  • Does not modify runtime code (CI/CD only)
  • Follows existing workflow patterns
  • Maintains backward compatibility
  • Should be labeled R0-no-crate-publish-required

Adds comprehensive support for building ARM64 Linux (aarch64-unknown-linux-gnu)
release binaries alongside existing x86_64 Linux and macOS ARM64 builds.

Changes:
- Updated build script to support cross-compilation via TARGET env var
- Added ARM64 cross-compiler setup in reusable workflow
- Added 8 new ARM64 Linux build jobs for all release binaries
- Updated promote and publish workflows to handle ARM64 Linux artifacts
- Added AGENTS.md to .gitignore

Benefits:
- Native ARM64 Linux support for AWS Graviton, Azure Ampere, etc.
- Improved performance on ARM64 servers vs emulation
- Better support for ARM-based development environments

All binaries (polkadot, polkadot-parachain, omni-node, frame-omni-bencher,
chain-spec-builder, substrate-node, eth-rpc, subkey) now build for 3 platforms:
- x86_64-unknown-linux-gnu (existing)
- aarch64-unknown-linux-gnu (new)
- aarch64-apple-darwin (existing)
@nkpar nkpar requested review from a team as code owners October 6, 2025 11:17
@nkpar nkpar marked this pull request as draft October 6, 2025 11:18
@nkpar nkpar self-assigned this Oct 6, 2025
@nkpar nkpar added the R0-no-crate-publish-required The change does not require any crates to be re-published. label Oct 6, 2025
@nkpar nkpar marked this pull request as ready for review October 6, 2025 11:44
@paritytech-workflow-stopper
Copy link

All GitHub workflows were cancelled due to failure one of the required jobs.
Failed workflow url: https://github.com/paritytech/polkadot-sdk/actions/runs/18279746537
Failed job name: test-linux-stable-runtime-benchmarks

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

Labels

R0-no-crate-publish-required The change does not require any crates to be re-published.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant