@@ -24,9 +24,13 @@ export CROSS_CONTAINER_GID := if path_exists("/dev/kvm") == "true" { kvm-gid } e
2424root := justfile_directory ()
2525
2626default-target := " debug"
27- simpleguest_source := " src/tests/rust_guests/simpleguest/target/x86_64-hyperlight-none"
28- dummyguest_source := " src/tests/rust_guests/dummyguest/target/x86_64-hyperlight-none"
29- witguest_source := " src/tests/rust_guests/witguest/target/x86_64-hyperlight-none"
27+ # All three guest crates share one workspace under src/tests/rust_guests,
28+ # so they share one target dir and hyperlight-libc / hyperlight-guest-bin
29+ # get compiled once per profile instead of once per crate.
30+ rust_guests_target := " src/tests/rust_guests/target/x86_64-hyperlight-none"
31+ simpleguest_source := rust_guests_target
32+ dummyguest_source := rust_guests_target
33+ witguest_source := rust_guests_target
3034rust_guests_bin_dir := " src/tests/rust_guests/bin"
3135
3236################
@@ -52,9 +56,10 @@ witguest-wit:
5256 cd src/ tests/ rust_guests/ witguest && wasm-tools component wit two_worlds.wit -w -o twoworlds.wasm
5357
5458build-rust-guests target = default-target features = " ": (witguest-wit ) (ensure-cargo-hyperlight )
55- cd src/ tests/ rust_guests/ simpleguest && cargo hyperlight build {{ if features == " " {' ' } else if features== " no-default-features" {" --no-default-features" } else {" --no-default-features -F " + features } }} --profile={{ if target == " debug" { " dev" } else { target } }}
56- cd src/ tests/ rust_guests/ dummyguest && cargo hyperlight build {{ if features == " " {' ' } else if features== " no-default-features" {" --no-default-features" } else {" --no-default-features -F " + features } }} --profile={{ if target == " debug" { " dev" } else { target } }}
57- cd src/ tests/ rust_guests/ witguest && cargo hyperlight build {{ if features == " " {' ' } else if features== " no-default-features" {" --no-default-features" } else {" --no-default-features -F " + features } }} --profile={{ if target == " debug" { " dev" } else { target } }}
59+ @ # --workspace unifies feature resolution so shared deps build once. Needed because witguest
60+ @ # pulls bindgen via hyperlight-component-macro, which would otherwise turn on extra features
61+ @ # on libc's build.rs host deps and force a libc rebuild. simple/dummyguest don't hit this.
62+ cd src/ tests/ rust_guests && cargo hyperlight build --workspace {{ if features == " " {' ' } else if features== " no-default-features" {" --no-default-features" } else {" --no-default-features -F " + features } }} --profile={{ if target == " debug" { " dev" } else { target } }}
5863
5964@ move-rust-guests target = default-target :
6065 cp {{ simpleguest_source }} / {{ target }} / simpleguest* {{ rust_guests_bin_dir }} / {{ target }} /
@@ -68,9 +73,7 @@ clean: clean-rust
6873
6974clean -rust:
7075 cargo clean
71- cd src/ tests/ rust_guests/ simpleguest && cargo clean
72- cd src/ tests/ rust_guests/ dummyguest && cargo clean
73- {{ if os () == " windows" { " cd src/tests/rust_guests/witguest -ErrorAction SilentlyContinue; cargo clean" } else { " [ -d src/tests/rust_guests/witguest ] && cd src/tests/rust_guests/witguest && cargo clean || true" } }}
76+ cd src/ tests/ rust_guests && cargo clean
7477 {{ if os () == " windows" { " Remove-Item src/tests/rust_guests/witguest/interface.wasm -Force -ErrorAction SilentlyContinue" } else { " rm -f src/tests/rust_guests/witguest/interface.wasm" } }}
7578 git clean -fdx src/ tests/ c_guests/ bin src/ tests/ rust_guests/ bin
7679
@@ -106,9 +109,7 @@ test-like-ci config=default-target hypervisor="kvm":
106109code-checks-like-ci config = default-target hypervisor = " kvm":
107110 @ # Ensure up-to-date Cargo.lock
108111 cargo fetch --locked
109- cargo fetch --manifest-path src/ tests/ rust_guests/ simpleguest/ Cargo.toml --locked
110- cargo fetch --manifest-path src/ tests/ rust_guests/ dummyguest/ Cargo.toml --locked
111- cargo fetch --manifest-path src/ tests/ rust_guests/ witguest/ Cargo.toml --locked
112+ cargo fetch --manifest-path src/ tests/ rust_guests/ Cargo.toml --locked
112113
113114 @ # fmt
114115 just fmt-check
@@ -297,9 +298,7 @@ check:
297298
298299fmt-check : (ensure-nightly-fmt )
299300 cargo + {{ nightly-toolchain}} fmt --all -- --check
300- cargo + {{ nightly-toolchain}} fmt --manifest-path src/ tests/ rust_guests/ simpleguest/ Cargo.toml -- --check
301- cargo + {{ nightly-toolchain}} fmt --manifest-path src/ tests/ rust_guests/ dummyguest/ Cargo.toml -- --check
302- cargo + {{ nightly-toolchain}} fmt --manifest-path src/ tests/ rust_guests/ witguest/ Cargo.toml -- --check
301+ cargo + {{ nightly-toolchain}} fmt --manifest-path src/ tests/ rust_guests/ Cargo.toml --all -- --check
303302 cargo + {{ nightly-toolchain}} fmt --manifest-path src/ hyperlight_guest_capi/ Cargo.toml -- --check
304303
305304[private ]
@@ -311,9 +310,7 @@ check-license-headers:
311310
312311fmt-apply : (ensure-nightly-fmt )
313312 cargo + {{ nightly-toolchain}} fmt --all
314- cargo + {{ nightly-toolchain}} fmt --manifest-path src/ tests/ rust_guests/ simpleguest/ Cargo.toml
315- cargo + {{ nightly-toolchain}} fmt --manifest-path src/ tests/ rust_guests/ dummyguest/ Cargo.toml
316- cargo + {{ nightly-toolchain}} fmt --manifest-path src/ tests/ rust_guests/ witguest/ Cargo.toml
313+ cargo + {{ nightly-toolchain}} fmt --manifest-path src/ tests/ rust_guests/ Cargo.toml --all
317314 cargo + {{ nightly-toolchain}} fmt --manifest-path src/ hyperlight_guest_capi/ Cargo.toml
318315
319316clippy target = default-target : (witguest-wit )
@@ -324,8 +321,7 @@ clippyw target=default-target: (witguest-wit)
324321 {{ cargo-cmd }} clippy --all-targets --all-features --target x86 _64 -pc-windows-gnu --profile={{ if target == " debug" { " dev" } else { target } }} -- -D warnings
325322
326323clippy-guests target = default-target : (witguest-wit ) (ensure-cargo-hyperlight )
327- cd src/ tests/ rust_guests/ simpleguest && cargo hyperlight clippy --profile={{ if target == " debug" { " dev" } else { target } }} -- -D warnings
328- cd src/ tests/ rust_guests/ witguest && cargo hyperlight clippy --profile={{ if target == " debug" { " dev" } else { target } }} -- -D warnings
324+ cd src/ tests/ rust_guests && cargo hyperlight clippy --workspace --profile={{ if target == " debug" { " dev" } else { target } }} -- -D warnings
329325
330326clippy-apply-fix-unix :
331327 cargo clippy --fix --all
0 commit comments