Skip to content

Commit

Permalink
Merge pull request #128 from arkedge/use-dependency-output-wasm-in-ca…
Browse files Browse the repository at this point in the history
…rgo-build

Use dependency output wasm in cargo build
  • Loading branch information
KOBA789 authored Apr 19, 2024
2 parents 0fcd6a8 + 92c49f0 commit 7bf96f9
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 21 deletions.
118 changes: 118 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions devtools-frontend/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ repository = "https://github.com/arkedge/gaia"

[dependencies]
rust-embed = { version = "8.0.0", features = ["interpolate-folder-path", "debug-embed"] }
wasm-opslang = { path = "crates/wasm-opslang" }
32 changes: 11 additions & 21 deletions devtools-frontend/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,22 @@ fn main() {
.expect("failed to execute pnpm");
assert!(status.success(), "failed to install deps for frontend");

wasm_pack("wasm-opslang", &devtools_build_dir);
// parepare crate dir
let crate_root_dir = out_dir.join("crate_root");

// copy wasm-opslang dist
{
let opslang_pkg_dir = env::var("DEP_WASM_OPSLANG_OUT_DIR").unwrap();
let opslang_dist_dir = crate_root_dir.join("wasm-opslang").join("pkg");

copy_devtools_dir(opslang_pkg_dir, opslang_dist_dir).unwrap();
}

let devtools_out_dir = out_dir.join("devtools_dist");
let status = Command::new("pnpm")
.current_dir(&devtools_build_dir)
// vite.config.ts にwasmのビルド場所を教えるために環境変数を渡す
.envs([("DEVTOOLS_CRATE_ROOT", wasm_packages_root())])
.envs([("DEVTOOLS_CRATE_ROOT", crate_root_dir)])
.arg("run")
.arg("build:vite")
.arg("--outDir")
Expand Down Expand Up @@ -67,22 +76,3 @@ fn copy_devtools_dir(src: impl AsRef<Path>, dst: impl AsRef<Path>) -> io::Result
}
Ok(())
}

fn wasm_packages_root() -> PathBuf {
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
out_dir.join("wasm_packages")
}

fn wasm_pack(name: &str, devtools_build_dir: &PathBuf) {
let pkg_outdir = wasm_packages_root().join(name).join("pkg");
let status = Command::new("pnpm")
.current_dir(devtools_build_dir)
.arg("run")
.arg("crate")
.arg(name)
.arg("--out-dir")
.arg(&pkg_outdir)
.status()
.expect("failed to build frontend");
assert!(status.success());
}

0 comments on commit 7bf96f9

Please sign in to comment.