feat(ci): build the linux-arm64 native for the .NET and JVM bindings - #17
feat(ci): build the linux-arm64 native for the .NET and JVM bindings#17Ayush-Telosa wants to merge 1 commit into
Conversation
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
|
|
|
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. |
|
Closing this — I will resubmit from my personal account. The change itself stands; reopening under the right identity shortly. |
Closes #16.
Problem
The
chat_xdk_dotnetcdylib ships forosx-arm64,osx-x64,linux-x64andwin-x64. There is nolinux-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()returnsnull, soextractBundledLibrary()extracts nothing andload()falls through to a system lookup that finds nothing unless the operator supplies their own build.Because
dotnet-buildalso feeds thejavajob, this single missing matrix entry affects both bindings.Change
linux-arm64entry in thedotnet-buildmatrix, onubuntu-24.04-armtargetingaarch64-unknown-linux-gnulinux-arm64staged alongside the other RIDs for both the nupkg and the jarnative/linux-arm64/libchat_xdk_dotnet.soadded to the jar verification list, so a missing artifact fails the release rather than shipping silentlydetectRid()returnslinux-arm64on Linux/ARMThe
ubuntu-24.04-armrunner and theaarch64-unknown-linux-gnutarget are already used by the Python wheel job in this same workflow, so nothing new is introduced to CI.Verification
Built
chat-xdk-dotnetforaarch64-unknown-linux-gnufrom v0.5.0, withjuicebox-sdkas a sibling checkout and the pinned 1.91.1 toolchain:Loaded through JNA on an ARM64 JVM (Temurin 25), with no
jna.library.pathset, to confirm the resource pathdetectRid()now returns is the one JNA resolves: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.