Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 50 additions & 3 deletions .github/workflows/build-gnn.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -69,22 +75,38 @@ 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

- 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
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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"
2 changes: 1 addition & 1 deletion crates/ruvector-gnn-node/npm/darwin-arm64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-darwin-arm64",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"darwin"
],
Expand Down
2 changes: 1 addition & 1 deletion crates/ruvector-gnn-node/npm/darwin-x64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-darwin-x64",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"darwin"
],
Expand Down
2 changes: 1 addition & 1 deletion crates/ruvector-gnn-node/npm/linux-arm64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-linux-arm64-gnu",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"linux"
],
Expand Down
2 changes: 1 addition & 1 deletion crates/ruvector-gnn-node/npm/linux-arm64-musl/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-linux-arm64-musl",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"linux"
],
Expand Down
2 changes: 1 addition & 1 deletion crates/ruvector-gnn-node/npm/linux-x64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-linux-x64-gnu",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"linux"
],
Expand Down
2 changes: 1 addition & 1 deletion crates/ruvector-gnn-node/npm/linux-x64-musl/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-linux-x64-musl",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"linux"
],
Expand Down
2 changes: 1 addition & 1 deletion crates/ruvector-gnn-node/npm/win32-x64-msvc/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ruvector/gnn-win32-x64-msvc",
"version": "0.1.23",
"version": "0.1.24",
"os": [
"win32"
],
Expand Down
16 changes: 8 additions & 8 deletions crates/ruvector-gnn-node/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down Expand Up @@ -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"
}
}
Loading