feat(bindings/dotnet): build and package the linux-arm64 native library - #8336
Merged
Merged
Conversation
Add a `linux-aarch_64` classifier that maps to `aarch64-unknown-linux-gnu`, build it on a native `ubuntu-24.04-arm` runner, and pack the resulting library under `runtimes/linux-arm64/native/` so NuGet resolves it on Linux arm64 hosts. Download the native artifacts into one directory per artifact: the Linux x64 and Linux arm64 builds share the `libopendal_dotnet.so` file name, so merging them into a single directory would drop one of the two libraries. Also run the dotnet binding CI test job on `ubuntu-24.04-arm`, so the arm64 build and tests are exercised on every pull request instead of only at release time.
erickguan
approved these changes
Sep 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue does this PR close?
None
Rationale for this change
The OpenDAL NuGet package ships native libraries for win-x64, linux-x64 and osx-arm64 only, so DllImport("opendal_dotnet") finds nothing on Linux arm64.
GitHub provides native arm64 runners, and this repository already builds the Java and Ruby bindings on ubuntu-24.04-arm.
What changes are included in this PR?
Are there any user-facing changes?
Yes. The NuGet package works on Linux arm64.
Breaking changes
None
AI Usage Statement
Harness: Claude Code
Model: Claude Opus 5 (claude-opus-5)
Effort: xhigh
Role: Wrote the build and workflow changes. Validated the arm64 library by cross-compiling it and running a
qemu-aarch64FFI smoke test, and checkeddotnet packwith placeholder native libraries to confirm all four runtime identifier paths land in the package. Nothing has run on real arm64 hardware yet; the CI job added here is the first.