Skip to content

Commit

Permalink
fix(image): wasm fallback logic in js-binding file
Browse files Browse the repository at this point in the history
  • Loading branch information
Brooooooklyn committed Feb 22, 2024
1 parent b4cadc6 commit f438a1f
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 29 deletions.
18 changes: 14 additions & 4 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,9 @@ jobs:
brew install meson llvm
build: |
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
export cc=clang
export cxx=clang++
export CC=clang
export CXX=clang++
export CMAKE_BUILD_PARALLEL_LEVEL=2
clang --version
yarn workspace @napi-rs/image build --target x86_64-apple-darwin --features with_simd
- host: windows-latest
Expand Down Expand Up @@ -89,9 +90,16 @@ jobs:
- host: macos-latest
target: aarch64-apple-darwin
setup: |
brew install meson
brew install meson llvm
build: |
MACOSX_DEPLOYMENT_TARGET=11.0 yarn workspace @napi-rs/image build --target aarch64-apple-darwin --features with_simd
export PATH="/usr/local/opt/llvm/bin:$PATH"
export MACOSX_DEPLOYMENT_TARGET='11.0'
export CMAKE_BUILD_PARALLEL_LEVEL=2
export CC=clang
export CXX=clang++
export CARGO_TARGET_AARCH64_APPLE_DARWIN_LINKER="clang"
clang --version
yarn workspace @napi-rs/image build --target aarch64-apple-darwin --features with_simd -- -vvv
- host: ubuntu-latest
target: aarch64-unknown-linux-gnu
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
Expand All @@ -115,6 +123,7 @@ jobs:
build: |
sudo apt update
sudo apt install meson -y
export LDFLAGS="--target=aarch64-linux-android24"
yarn workspace @napi-rs/image build --target aarch64-linux-android --features with_simd
- host: ubuntu-latest
target: aarch64-unknown-linux-musl
Expand All @@ -134,6 +143,7 @@ jobs:
tar -xvf wasi-sdk-21.0-macos.tar.gz
build: |
export WASI_SDK_PATH="$(pwd)/wasi-sdk-21.0"
export CMAKE_BUILD_PARALLEL_LEVEL=2
yarn workspace @napi-rs/image build --target wasm32-wasi-preview1-threads
name: stable - ${{ matrix.settings.target }} - node@20
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"website"
],
"devDependencies": {
"@napi-rs/cli": "^3.0.0-alpha.40",
"@napi-rs/cli": "^3.0.0-alpha.41",
"@taplo/cli": "^0.7.0",
"@types/node": "^20.11.16",
"@types/sharp": "^0.31.1",
Expand Down
49 changes: 32 additions & 17 deletions packages/binding/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ switch (platform) {
}
break
default:
throw new Error(`Unsupported architecture on Android ${arch}`)
loadError = new Error(`Unsupported architecture on Android ${arch}`)
}
break
case 'win32':
Expand Down Expand Up @@ -136,7 +136,7 @@ switch (platform) {
}
break
default:
throw new Error(`Unsupported architecture on Windows: ${arch}`)
loadError = new Error(`Unsupported architecture on Windows: ${arch}`)
}
break
case 'darwin':
Expand Down Expand Up @@ -177,22 +177,37 @@ switch (platform) {
}
break
default:
throw new Error(`Unsupported architecture on macOS: ${arch}`)
loadError = new Error(`Unsupported architecture on macOS: ${arch}`)
}
break
case 'freebsd':
if (arch !== 'x64') {
throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
}
localFileExisted = existsSync(join(__dirname, 'image.freebsd-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./image.freebsd-x64.node')
} else {
nativeBinding = require('@napi-rs/image-freebsd-x64')
}
} catch (e) {
loadError = e
switch (arch) {
case 'x64':
localFileExisted = existsSync(join(__dirname, 'image.freebsd-x64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./image.freebsd-x64.node')
} else {
nativeBinding = require('@napi-rs/image-freebsd-x64')
}
} catch (e) {
loadError = e
}
break
case 'arm64':
localFileExisted = existsSync(join(__dirname, 'image.freebsd-arm64.node'))
try {
if (localFileExisted) {
nativeBinding = require('./image.freebsd-arm64.node')
} else {
nativeBinding = require('@napi-rs/image-freebsd-arm64')
}
} catch (e) {
loadError = e
}
break
default:
loadError = new Error(`Unsupported architecture on FreeBSD: ${arch}`)
}
break
case 'linux':
Expand Down Expand Up @@ -313,11 +328,11 @@ switch (platform) {
}
break
default:
throw new Error(`Unsupported architecture on Linux: ${arch}`)
loadError = new Error(`Unsupported architecture on Linux: ${arch}`)
}
break
default:
throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
loadError = new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
}

if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
Expand Down
2 changes: 1 addition & 1 deletion packages/binding/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
},
"repository": "git@github.com:Brooooooklyn/Image.git",
"devDependencies": {
"@napi-rs/cli": "^3.0.0-alpha.40",
"@napi-rs/cli": "^3.0.0-alpha.41",
"@napi-rs/wasm-runtime": "^0.1.1"
}
}
12 changes: 6 additions & 6 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -540,9 +540,9 @@ __metadata:
languageName: node
linkType: hard

"@napi-rs/cli@npm:^3.0.0-alpha.40":
version: 3.0.0-alpha.40
resolution: "@napi-rs/cli@npm:3.0.0-alpha.40"
"@napi-rs/cli@npm:^3.0.0-alpha.41":
version: 3.0.0-alpha.41
resolution: "@napi-rs/cli@npm:3.0.0-alpha.41"
dependencies:
"@napi-rs/cross-toolchain": "npm:^0.0.14"
"@octokit/rest": "npm:^20.0.2"
Expand Down Expand Up @@ -570,7 +570,7 @@ __metadata:
bin:
napi: dist/cli.js
napi-raw: cli.mjs
checksum: 10c0/0eaa113258b7429794253c7f27866944018dfe05abc85681f6db969101b75acb583189ce4523d0e1863e735648af317a646c3f3914895a0ae951879de135e135
checksum: 10c0/49e0b1536944e272252f05dcb2fcc85c8e25daa2883d7515ce622474787de2c71252fb8465bf24eb19c1cb4bde9c366b49ebb5a0309fcf1f416946cb1c1a0979
languageName: node
linkType: hard

Expand Down Expand Up @@ -615,7 +615,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@napi-rs/image@workspace:packages/binding"
dependencies:
"@napi-rs/cli": "npm:^3.0.0-alpha.40"
"@napi-rs/cli": "npm:^3.0.0-alpha.41"
"@napi-rs/wasm-runtime": "npm:^0.1.1"
languageName: unknown
linkType: soft
Expand Down Expand Up @@ -5543,7 +5543,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "image@workspace:."
dependencies:
"@napi-rs/cli": "npm:^3.0.0-alpha.40"
"@napi-rs/cli": "npm:^3.0.0-alpha.41"
"@taplo/cli": "npm:^0.7.0"
"@types/node": "npm:^20.11.16"
"@types/sharp": "npm:^0.31.1"
Expand Down

0 comments on commit f438a1f

Please sign in to comment.