Skip to content

feat(ci): build the linux-arm64 native for the .NET and JVM bindings - #17

Closed
Ayush-Telosa wants to merge 1 commit into
xdevplatform:mainfrom
Ayush-Telosa:add-linux-arm64
Closed

feat(ci): build the linux-arm64 native for the .NET and JVM bindings#17
Ayush-Telosa wants to merge 1 commit into
xdevplatform:mainfrom
Ayush-Telosa:add-linux-arm64

Conversation

@Ayush-Telosa

Copy link
Copy Markdown

Closes #16.

Problem

The chat_xdk_dotnet cdylib ships for osx-arm64, osx-x64, linux-x64 and win-x64. There is no linux-arm64, so the JVM and .NET bindings cannot run on 64-bit ARM Linux — AWS Graviton, Ampere, and ARM CI runners.

On Linux/aarch64, detectRid() returns null, so extractBundledLibrary() extracts nothing and load() falls through to a system lookup that finds nothing unless the operator supplies their own build.

Because dotnet-build also feeds the java job, this single missing matrix entry affects both bindings.

Change

  • one linux-arm64 entry in the dotnet-build matrix, on ubuntu-24.04-arm targeting aarch64-unknown-linux-gnu
  • linux-arm64 staged alongside the other RIDs for both the nupkg and the jar
  • native/linux-arm64/libchat_xdk_dotnet.so added to the jar verification list, so a missing artifact fails the release rather than shipping silently
  • detectRid() returns linux-arm64 on Linux/ARM

The ubuntu-24.04-arm runner and the aarch64-unknown-linux-gnu target are already used by the Python wheel job in this same workflow, so nothing new is introduced to CI.

Verification

Built chat-xdk-dotnet for aarch64-unknown-linux-gnu from v0.5.0, with juicebox-sdk as a sibling checkout and the pinned 1.91.1 toolchain:

Finished `release` profile [optimized] target(s) in 1m 25s
libchat_xdk_dotnet.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked

Loaded through JNA on an ARM64 JVM (Temurin 25), with no jna.library.path set, to confirm the resource path detectRid() now returns is the one JNA resolves:

arch=aarch64
RESOURCE_PREFIX=linux-aarch64
LOADED OK: true

I have not been able to run the full release workflow, so the matrix entry itself is unexercised — the build and load above were reproduced locally against the same source and toolchain.

Note

I have not signed the CLA. My employer likely holds rights to this work, so the authority representation in section 4 needs an internal check before I can sign. Happy to sort that out if you want to take the PR — otherwise please feel free to apply the diff directly and close this.

The chat_xdk_dotnet cdylib ships for osx-arm64, osx-x64, linux-x64 and
win-x64, so the JVM and .NET bindings cannot run on 64-bit ARM Linux --
AWS Graviton, Ampere, and ARM CI runners. On Linux/aarch64 detectRid()
returns null, no bundled native is extracted, and the load falls through
to a system lookup that finds nothing.

The Python job already builds aarch64-unknown-linux-gnu on ubuntu-24.04-arm,
so the target and the runner are already proven here. Since dotnet-build
also feeds the java job, one matrix entry covers both bindings.

- add the linux-arm64 entry to the dotnet-build matrix
- stage it alongside the other RIDs for both the nupkg and the jar
- require it in the jar verification list
- return linux-arm64 from detectRid() on Linux/ARM
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@github-actions

Copy link
Copy Markdown
Contributor


Thank you for your submission, we really appreciate it. Like many open-source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution. You can sign the CLA by just posting a Pull Request Comment same as the below format.


I have read the CLA Document and I hereby sign the CLA


You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

@Ayush-Telosa

Copy link
Copy Markdown
Author

Closing this — I will resubmit from my personal account. The change itself stands; reopening under the right identity shortly.

@github-actions github-actions Bot locked and limited conversation to collaborators Aug 26, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add linux-arm64 to the .NET/JVM native build matrix

2 participants