Skip to content

Commit

Permalink
fix: update to use common wasm builder
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Dawson <[email protected]>
  • Loading branch information
mhdawson committed Oct 25, 2024
1 parent 22af57f commit 3ee0007
Show file tree
Hide file tree
Showing 5 changed files with 114 additions and 149 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
node_modules
dist
package-lock.json
deps/swc/bindings/target/
160 changes: 80 additions & 80 deletions lib/wasm.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"prepack": "npm run build",
"postpack": "npm run clean",
"build": "node esbuild.config.js",
"build:wasm": "node tools/build-wasm.js --docker",
"typecheck": "tsc --noEmit",
"test": "node --test --experimental-test-snapshots \"**/*.test.js\"",
"test:regenerate": "node --test --experimental-test-snapshots --test-update-snapshots \"**/*.test.js\""
Expand Down
47 changes: 0 additions & 47 deletions tools/Dockerfile

This file was deleted.

54 changes: 32 additions & 22 deletions tools/build-wasm.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,39 @@
const { execFileSync } = require("node:child_process");
const WASM_BUILDER_CONTAINER =
"ghcr.io/nodejs/wasm-builder@sha256:975f391d907e42a75b8c72eb77c782181e941608687d4d8694c3e9df415a0970"; // v0.0.9

const { execSync } = require("node:child_process");
const { resolve } = require("node:path");

const ROOT = resolve(__dirname, "../");
const DOCKERFILE = resolve(__dirname, "./Dockerfile");

const name = `swc_build_wasm-${Date.now()}`;

const buildArgs = [
"build",
"-t",
"swc_wasm_typescript",
"-f",
DOCKERFILE,
ROOT,
];
execFileSync("docker", buildArgs, { stdio: "inherit" });

const runArgs = ["run", "-d", "--name", name, "swc_wasm_typescript"];
execFileSync("docker", runArgs, { stdio: "inherit" });
let platform = process.env.WASM_PLATFORM;
if (!platform && process.argv[2]) {
platform = execSync('docker info -f "{{.OSType}}/{{.Architecture}}"')
.toString()
.trim();
}

// Copies the new directory inside the Docker image to the host.
const copyArgs = ["cp", `${name}:/usr/src/amaro/swc/.`, `${ROOT}/lib/`];
execFileSync("docker", copyArgs, { stdio: "inherit" });
if (process.argv[2] === "--docker") {
let cmd = `docker run --rm --platform=${platform.toString().trim()} `;
if (process.platform === "linux") {
cmd += ` --user ${process.getuid()}:${process.getegid()}`;
}

// Removes the Docker image.
execFileSync("docker", ["rm", name], { stdio: "inherit" });
cmd += ` --mount type=bind,source=${ROOT}/deps/swc/bindings,target=/home/node/build/bindings \
--mount type=bind,source=${ROOT}/lib,target=/home/node/build/lib \
--mount type=bind,source=${ROOT}/tools,target=/home/node/build/tools \
--mount type=bind,source=${ROOT}/deps,target=/home/node/build/deps \
-t ${WASM_BUILDER_CONTAINER} node tools/build-wasm.js`;
console.log(`> ${cmd}\n\n`);
execSync(cmd, { stdio: "inherit" });

Check warning

Code scanning / CodeQL

Shell command built from environment values Medium

This shell command depends on an uncontrolled
absolute path
.
This shell command depends on an uncontrolled
absolute path
.
process.exit(0);
}

process.exit(0);
execSync(
`cd bindings/binding_typescript_wasm && \
cargo install --locked wasm-pack && \
PATH=/home/node/.cargo/bin:$PATH && \
./scripts/build.sh && \
cp -r pkg/* ../../lib`,
{ stdio: "inherit" },
);

0 comments on commit 3ee0007

Please sign in to comment.