Skip to content

Add Linux arm64 support to the SDK v2 packaging pipelines#894

Open
baijumeswani wants to merge 5 commits into
mainfrom
baijumeswani/linux-arm64
Open

Add Linux arm64 support to the SDK v2 packaging pipelines#894
baijumeswani wants to merge 5 commits into
mainfrom
baijumeswani/linux-arm64

Conversation

@baijumeswani

Copy link
Copy Markdown
Collaborator

Adds first-class Linux arm64 support across the SDK v2 build, test, and packaging pipelines. Every package format the pipeline already produces (C++ tgz, Runtime NuGet, Python wheel, npm tarball) now includes a linux-arm64 payload, built and tested natively on the onnxruntime-linux-ARM64-CPU-2019 pool.

Initial Linux ARM64 support is CPU-only.

Copilot AI review requested due to automatic review settings July 21, 2026 17:24
@vercel

vercel Bot commented Jul 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
foundry-local Ready Ready Preview, Comment Jul 22, 2026 8:34pm

Request Review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds native CPU-only Linux ARM64 support across SDK v2 build, test, and packaging workflows.

Changes:

  • Adds ARM64 native builds and C++, C#, Python, and JavaScript test stages.
  • Packages Linux ARM64 binaries in C++ archives, NuGet, Python wheels, and npm tarballs.
  • Updates runtime detection, dependency selection, WebGPU fallback behavior, tests, and documentation.

Reviewed changes

Copilot reviewed 30 out of 30 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
sdk_v2/python/test/unit/test_lib_loader.py Tests ARM64 platform detection.
sdk_v2/python/test/unit/test_build_backend.py Tests dependency-pin rewriting.
sdk_v2/python/src/foundry_local_sdk/_native/lib_loader.py Detects Linux ARM64 payloads.
sdk_v2/python/pyproject.toml Adds CPU-only ARM64 dependencies.
sdk_v2/python/_build_backend/__init__.py Rewrites plain ORT package pins.
sdk_v2/js/script/install-native.cjs Supports ARM64 and fails on missing payloads.
sdk_v2/cpp/triplets/arm64-linux.cmake Defines the ARM64 vcpkg triplet.
sdk_v2/cpp/test/internal_api/webgpu_ep_bootstrapper_test.cc Adds WebGPU bootstrapper tests.
sdk_v2/cpp/test/CMakeLists.txt Registers the new C++ test file.
sdk_v2/cpp/src/ep_detection/webgpu_ep_bootstrapper.h Documents ARM64 WebGPU behavior.
sdk_v2/cpp/src/ep_detection/webgpu_ep_bootstrapper.cc Gracefully disables unavailable ARM64 WebGPU.
sdk_v2/cpp/nuget/test_pack.py Tests NuGet staging and RID mapping.
sdk_v2/cpp/nuget/pack.py Stages the Linux ARM64 runtime.
sdk_v2/cpp/nuget/Microsoft.AI.Foundry.Local.Runtime.nuspec Documents the ARM64 payload.
sdk_v2/cpp/cmake/FindOnnxRuntimeGenAI.cmake Selects ARM64 GenAI binaries.
sdk_v2/cpp/cmake/FindOnnxRuntime.cmake Selects CPU-only ARM64 ORT binaries.
.pipelines/v2/templates/steps-test-python.yml Supports system Python on ARM64 agents.
.pipelines/v2/templates/steps-test-js.yml Enables Linux ARM64 JavaScript tests.
.pipelines/v2/templates/steps-pack-nuget.yml Includes the ARM64 native artifact.
.pipelines/v2/templates/steps-pack-js.yml Merges the ARM64 npm prebuild.
.pipelines/v2/templates/steps-pack-cpp-sdk.yml Produces an ARM64 C++ archive.
.pipelines/v2/templates/steps-build-python.yml Supports ARM64 system Python builds.
.pipelines/v2/templates/steps-build-linux.yml Parameterizes Linux CPU architecture.
.pipelines/v2/templates/steps-build-js.yml Builds and stages ARM64 Node addons.
.pipelines/v2/templates/stages-python.yml Adds ARM64 Python build and test stages.
.pipelines/v2/templates/stages-js.yml Adds ARM64 JavaScript build and test stages.
.pipelines/v2/templates/stages-cs.yml Adds ARM64 C# testing.
.pipelines/v2/templates/stages-build-native.yml Adds native ARM64 build and packaging inputs.
.pipelines/v2/sdk_v2-pipeline-plan.md Documents the expanded pipeline matrix.
.pipelines/v2/sdk_v2-js-pipeline-plan.md Documents ARM64 JavaScript packaging.

Comment thread sdk_v2/python/pyproject.toml Outdated
Comment thread sdk_v2/python/pyproject.toml Outdated
Comment thread sdk_v2/cpp/nuget/test_pack.py Outdated
Comment thread sdk_v2/cpp/test/internal_api/webgpu_ep_bootstrapper_test.cc Outdated
Comment thread sdk_v2/cpp/nuget/test_pack.py Outdated

@prathikr prathikr left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add to the PR description all the new unit tests that have been introduced and their purposes?

Comment thread .pipelines/v2/templates/stages-js.yml
Comment thread .pipelines/v2/templates/stages-python.yml Outdated
Comment thread .pipelines/v2/templates/stages-python.yml Outdated
Comment thread sdk_v2/cpp/cmake/FindOnnxRuntime.cmake
Comment thread sdk_v2/cpp/nuget/test_pack.py Outdated
Comment thread sdk_v2/cpp/src/ep_detection/webgpu_ep_bootstrapper.cc Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants