Skip to content

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

Description

@ayushthakur18

Summary

The chat_xdk_dotnet native 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.

The Python binding already ships manylinux_2_17_aarch64, so this Rust target is already built in this repo's CI. Only the dotnet-build matrix skips it.

Impact

On Linux/aarch64, NativeLoader.detectRid() returns null:

} else if (os.contains("linux")) {
    if (x64) {
        return "linux-x64";
    }
}

extractBundledLibrary() then returns null, and load() falls through to the system lookup, which fails unless the operator supplies their own build. Because dotnet-build also feeds the java job, one missing matrix entry affects both bindings.

Verification

I 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:

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

Unmodified source — same crate, same pinned toolchain, same sibling dependency. Only the target triple differs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions