diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2a893fe..b67dad1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,6 +34,11 @@ jobs: with: python-version: "3.11" + - name: Setup emsdk + uses: mymindstorm/setup-emsdk@v14 + with: + version: 4.0.13 + - name: Set up uv package manager uses: astral-sh/setup-uv@v5 @@ -50,7 +55,10 @@ jobs: if: steps.cache-demo-data.outputs.cache-hit != 'true' run: cd packages/docs && uv run generate_demo_data.py - - name: Run custom build script + - name: Build WASM modules + run: ./scripts/build_wasm.sh + + - name: Build JavaScript and Python packages run: ./scripts/build.sh - name: Upload node package artifact diff --git a/packages/density-clustering/package.json b/packages/density-clustering/package.json index 42049fb..fe1db41 100644 --- a/packages/density-clustering/package.json +++ b/packages/density-clustering/package.json @@ -7,7 +7,7 @@ "module": "density_clustering_wasm/js/index.js", "type": "module", "scripts": { - "build": "npx wasm-pack build --release --target web density_clustering_wasm && rm density_clustering_wasm/pkg/.gitignore density_clustering_wasm/pkg/package.json" + "build": "npx -y wasm-pack build --release --target web density_clustering_wasm && rm density_clustering_wasm/pkg/.gitignore density_clustering_wasm/pkg/package.json" }, "files": [ "density_clustering_wasm/js/index.js", diff --git a/packages/umap-wasm/Makefile b/packages/umap-wasm/Makefile index 5b4500c..7eb5fb0 100644 --- a/packages/umap-wasm/Makefile +++ b/packages/umap-wasm/Makefile @@ -23,6 +23,7 @@ runtime.js: $(SOURCES) $(HEADERS) -DUMAPPP_NO_PARALLEL_OPTIMIZATION \ -sENVIRONMENT=web \ -sMODULARIZE -sSINGLE_FILE -sALLOW_MEMORY_GROWTH \ + -sEXPORTED_RUNTIME_METHODS='["HEAP32", "HEAPF32", "HEAPU8"]' \ -sWASM_BIGINT=1 \ -msimd128 \ -o runtime.mjs diff --git a/packages/umap-wasm/third_party/download_dependencies.sh b/packages/umap-wasm/third_party/download_dependencies.sh index 6c3c636..21bfadf 100755 --- a/packages/umap-wasm/third_party/download_dependencies.sh +++ b/packages/umap-wasm/third_party/download_dependencies.sh @@ -69,5 +69,5 @@ download https://github.com/nmslib/hnswlib.git v0.8.0 hnswlib # BSD-2-Clause License download https://github.com/brj0/nndescent.git 514275f263be010712530a95e56ffc9b81b9110b nndescent pushd nndescent -git apply ../nndescent.patch +git apply ../nndescent.patch || true popd diff --git a/scripts/build.sh b/scripts/build.sh index fb9e08e..f53cd22 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,5 +1,7 @@ #!/bin/bash +# Build all JavaScript and Python packages + set -euxo pipefail pushd packages/component diff --git a/scripts/build_wasm.sh b/scripts/build_wasm.sh new file mode 100755 index 0000000..dfc6881 --- /dev/null +++ b/scripts/build_wasm.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Build WASM modules + +set -euxo pipefail + +pushd packages/density-clustering +npm run build +popd + +pushd packages/umap-wasm + +pushd third_party +./download_dependencies.sh +popd + +make + +popd \ No newline at end of file