Skip to content

Commit

Permalink
Revert "fix: update to use common wasm builder"
Browse files Browse the repository at this point in the history
This reverts commit bb0e131.
  • Loading branch information
marco-ippolito committed Nov 12, 2024
1 parent 4e8839f commit 22351de
Show file tree
Hide file tree
Showing 5 changed files with 150 additions and 132 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,3 @@
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: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
"prepack": "npm run build",
"postpack": "npm run clean",
"build": "node esbuild.config.mjs",
"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: 47 additions & 0 deletions tools/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
FROM rust:latest

ARG UID=1000
ARG GID=1000

SHELL ["/bin/bash", "-c"]

# nvm environment variables
ENV NVM_VERSION 0.39.7
ENV NVM_DIR /usr/local/nvm
ENV NODE_VERSION 20.15.1

# install nvm
RUN mkdir -p $NVM_DIR \
&& curl --silent -o- https://raw.githubusercontent.com/creationix/nvm/v${NVM_VERSION}/install.sh | bash

# install node and npm
RUN source ${NVM_DIR}/nvm.sh \
&& nvm install $NODE_VERSION \
&& nvm alias default $NODE_VERSION \
&& nvm use default

# add node and npm to path so the commands are available
ENV NODE_PATH ${NVM_DIR}/v${NODE_VERSION}/lib/node_modules
ENV PATH ${NVM_DIR}/versions/node/v${NODE_VERSION}/bin:$PATH

# confirm installation
RUN node -v
RUN npm -v

WORKDIR /usr/src/amaro

COPY deps/swc .

WORKDIR /usr/src/amaro/bindings/binding_typescript_wasm

RUN apt-get update && apt-get -y install cmake

RUN cargo install --locked wasm-pack

RUN ./scripts/build.sh

RUN mkdir -p /usr/src/amaro/swc

RUN cp -r pkg/* /usr/src/amaro/swc

# USER node
73 changes: 23 additions & 50 deletions tools/build-wasm.js
Original file line number Diff line number Diff line change
@@ -1,56 +1,29 @@
const WASM_BUILDER_CONTAINER =
"ghcr.io/nodejs/wasm-builder@sha256:975f391d907e42a75b8c72eb77c782181e941608687d4d8694c3e9df415a0970"; // v0.0.9

const { execSync, execFileSync } = require("node:child_process");
const { execFileSync } = 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 = execFileSync("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") {
const args = [];
args.push("run");
args.push("--rm");
args.push("--platform");
args.push(`${platform.toString().trim()}`);
if (process.platform === "linux") {
args.push("--user");
args.push(`${process.getuid()}:${process.getegid()}`);
}
args.push("--mount");
args.push(
`type=bind,source=${ROOT}/deps/swc/bindings,target=/home/node/build/bindings`,
);
args.push("--mount");
args.push(`type=bind,source=${ROOT}/lib,target=/home/node/build/lib`);
args.push("--mount");
args.push(`type=bind,source=${ROOT}/tools,target=/home/node/build/tools`);
args.push("--mount");
args.push(`type=bind,source=${ROOT}/deps,target=/home/node/build/deps`);
args.push("-t");
args.push(`${WASM_BUILDER_CONTAINER}`);
args.push("node");
args.push("./tools/build-wasm.js");
console.log(`> docker ${args}\n\n`);
execFileSync("docker", args, { stdio: "inherit" });
process.exit(0);
}
// Removes the Docker image.
execFileSync("docker", ["rm", name], { stdio: "inherit" });

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" },
);
process.exit(0);

0 comments on commit 22351de

Please sign in to comment.