Merge pull request #210 from ruvnet/fix/gnn-darwin-arm64-binary-195

fix: include prebuilt binaries in @ruvector/gnn platform packages
This commit is contained in:
rUv 2026-02-25 07:36:56 -05:00 committed by GitHub
commit e8ef399be0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 65 additions and 18 deletions

View file

@ -34,9 +34,15 @@ jobs:
- host: ubuntu-22.04
target: x86_64-unknown-linux-gnu
platform: linux-x64-gnu
- host: ubuntu-22.04
target: x86_64-unknown-linux-musl
platform: linux-x64-musl
- host: ubuntu-22.04
target: aarch64-unknown-linux-gnu
platform: linux-arm64-gnu
- host: ubuntu-22.04
target: aarch64-unknown-linux-musl
platform: linux-arm64-musl
- host: macos-14
target: x86_64-apple-darwin
platform: darwin-x64
@ -69,12 +75,27 @@ jobs:
with:
key: gnn-${{ matrix.settings.target }}
- name: Install cross-compilation tools (Linux ARM64)
- name: Install cross-compilation tools (Linux ARM64 GNU)
if: matrix.settings.platform == 'linux-arm64-gnu'
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
- name: Install cross-compilation tools (Linux x64 musl)
if: matrix.settings.platform == 'linux-x64-musl'
run: |
sudo apt-get update
sudo apt-get install -y musl-tools
- name: Install cross-compilation tools (Linux ARM64 musl)
if: matrix.settings.platform == 'linux-arm64-musl'
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu musl-tools
- name: Install NAPI-RS CLI
run: npm install -g @napi-rs/cli
- name: Install dependencies
working-directory: crates/ruvector-gnn-node
run: npm install --ignore-scripts --omit=optional --force
@ -82,9 +103,10 @@ jobs:
- name: Build native module
working-directory: crates/ruvector-gnn-node
run: |
npx napi build --platform --release --target ${{ matrix.settings.target }}
napi build --platform --release --target ${{ matrix.settings.target }} --cargo-flags="-p ruvector-gnn-node"
env:
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER: aarch64-linux-gnu-gcc
- name: Find built .node files (debug)
shell: bash
@ -160,16 +182,24 @@ jobs:
PKG_DIR="npm-pkg/gnn-${platform}"
mkdir -p "$PKG_DIR"
# Determine OS and CPU
# Determine OS, CPU, and binary name
case "$platform" in
linux-x64-gnu)
OS="linux"; CPU="x64"; LIBC='"libc": ["glibc"],'
NODE_NAME="ruvector-gnn.linux-x64-gnu.node"
;;
linux-x64-musl)
OS="linux"; CPU="x64"; LIBC='"libc": ["musl"],'
NODE_NAME="ruvector-gnn.linux-x64-musl.node"
;;
linux-arm64-gnu)
OS="linux"; CPU="arm64"; LIBC='"libc": ["glibc"],'
NODE_NAME="ruvector-gnn.linux-arm64-gnu.node"
;;
linux-arm64-musl)
OS="linux"; CPU="arm64"; LIBC='"libc": ["musl"],'
NODE_NAME="ruvector-gnn.linux-arm64-musl.node"
;;
darwin-x64)
OS="darwin"; CPU="x64"; LIBC=""
NODE_NAME="ruvector-gnn.darwin-x64.node"
@ -207,8 +237,25 @@ jobs:
}
EOF
# Verify binary exists before publish
if [ ! -f "$PKG_DIR/$NODE_NAME" ]; then
echo "ERROR: Binary $NODE_NAME missing from $PKG_DIR"
ls -la "$PKG_DIR/"
exit 1
fi
echo "Binary size: $(wc -c < "$PKG_DIR/$NODE_NAME") bytes"
# Publish
cd "$PKG_DIR"
npm publish --access public || echo "Failed to publish @ruvector/gnn-${platform}"
cd ../..
done
- name: Publish main @ruvector/gnn package
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
working-directory: crates/ruvector-gnn-node
run: |
npm install --ignore-scripts --omit=optional --force
npm publish --access public || echo "Failed to publish @ruvector/gnn"

View file

@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-darwin-arm64",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"darwin"
],

View file

@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-darwin-x64",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"darwin"
],

View file

@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-linux-arm64-gnu",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"linux"
],

View file

@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-linux-arm64-musl",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"linux"
],

View file

@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-linux-x64-gnu",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"linux"
],

View file

@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-linux-x64-musl",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"linux"
],

View file

@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-win32-x64-msvc",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"win32"
],

View file

@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn",
"version": "0.1.23",
"version": "0.1.24",
"description": "Graph Neural Network capabilities for Ruvector - Node.js bindings",
"main": "index.js",
"types": "index.d.ts",
@ -51,12 +51,12 @@
"access": "public"
},
"optionalDependencies": {
"@ruvector/gnn-win32-x64-msvc": "0.1.23",
"@ruvector/gnn-darwin-x64": "0.1.23",
"@ruvector/gnn-linux-x64-gnu": "0.1.23",
"@ruvector/gnn-linux-x64-musl": "0.1.23",
"@ruvector/gnn-linux-arm64-gnu": "0.1.23",
"@ruvector/gnn-linux-arm64-musl": "0.1.23",
"@ruvector/gnn-darwin-arm64": "0.1.23"
"@ruvector/gnn-win32-x64-msvc": "0.1.24",
"@ruvector/gnn-darwin-x64": "0.1.24",
"@ruvector/gnn-linux-x64-gnu": "0.1.24",
"@ruvector/gnn-linux-x64-musl": "0.1.24",
"@ruvector/gnn-linux-arm64-gnu": "0.1.24",
"@ruvector/gnn-linux-arm64-musl": "0.1.24",
"@ruvector/gnn-darwin-arm64": "0.1.24"
}
}