From 274786f69490e030924c8e4a2c1d9c3b41ce2d21 Mon Sep 17 00:00:00 2001 From: James Sturtevant Date: Mon, 8 Dec 2025 14:59:55 -0800 Subject: [PATCH 1/2] Use Cargo hyperlight to build rust guests Signed-off-by: James Sturtevant --- Justfile | 18 +++++++------ README.md | 25 ++++--------------- .../rust_guests/dummyguest/.cargo/config.toml | 17 ------------- .../simpleguest/.cargo/config.toml | 17 ------------- .../rust_guests/witguest/.cargo/config.toml | 19 -------------- 5 files changed, 15 insertions(+), 81 deletions(-) delete mode 100644 src/tests/rust_guests/dummyguest/.cargo/config.toml delete mode 100644 src/tests/rust_guests/simpleguest/.cargo/config.toml delete mode 100644 src/tests/rust_guests/witguest/.cargo/config.toml diff --git a/Justfile b/Justfile index 5ef96acd3..87209c895 100644 --- a/Justfile +++ b/Justfile @@ -23,9 +23,9 @@ export CROSS_CONTAINER_GID := if path_exists("/dev/kvm") == "true" { kvm-gid } e root := justfile_directory() default-target := "debug" -simpleguest_source := "src/tests/rust_guests/simpleguest/target/x86_64-unknown-none" -dummyguest_source := "src/tests/rust_guests/dummyguest/target/x86_64-unknown-none" -witguest_source := "src/tests/rust_guests/witguest/target/x86_64-unknown-none" +simpleguest_source := "src/tests/rust_guests/simpleguest/target/x86_64-hyperlight-none" +dummyguest_source := "src/tests/rust_guests/dummyguest/target/x86_64-hyperlight-none" +witguest_source := "src/tests/rust_guests/witguest/target/x86_64-hyperlight-none" rust_guests_bin_dir := "src/tests/rust_guests/bin" ################ @@ -47,9 +47,10 @@ witguest-wit: cd src/tests/rust_guests/witguest && wasm-tools component wit guest.wit -w -o interface.wasm build-rust-guests target=default-target features="": (witguest-wit) - cd src/tests/rust_guests/simpleguest && cargo 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 } }} - cd src/tests/rust_guests/dummyguest && cargo 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 } }} - cd src/tests/rust_guests/witguest && cargo 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 } }} + cargo install --locked cargo-hyperlight + 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 } }} + 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 } }} + 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 } }} @move-rust-guests target=default-target: cp {{ simpleguest_source }}/{{ target }}/simpleguest* {{ rust_guests_bin_dir }}/{{ target }}/ @@ -253,8 +254,9 @@ clippyw target=default-target: (witguest-wit) {{ cargo-cmd }} clippy --all-features --target x86_64-pc-windows-gnu --profile={{ if target == "debug" { "dev" } else { target } }} -- -D warnings clippy-guests target=default-target: (witguest-wit) - cd src/tests/rust_guests/simpleguest && cargo clippy --profile={{ if target == "debug" { "dev" } else { target } }} -- -D warnings - cd src/tests/rust_guests/witguest && cargo clippy --profile={{ if target == "debug" { "dev" } else { target } }} -- -D warnings + cargo install --locked cargo-hyperlight + cd src/tests/rust_guests/simpleguest && cargo hyperlight clippy --profile={{ if target == "debug" { "dev" } else { target } }} -- -D warnings + cd src/tests/rust_guests/witguest && cargo hyperlight clippy --profile={{ if target == "debug" { "dev" } else { target } }} -- -D warnings clippy-apply-fix-unix: cargo clippy --fix --all diff --git a/README.md b/README.md index 56cdda359..2b19077fe 100644 --- a/README.md +++ b/README.md @@ -104,26 +104,11 @@ pub fn guest_dispatch_function(function_call: FunctionCall) -> Result> { } ``` -**Note**: Guest applications require a specific build configuration. Create a `.cargo/config.toml` file in your guest project with the following content: - -```toml -[build] -target = "x86_64-unknown-none" - -[target.x86_64-unknown-none] -rustflags = [ - "-C", - "code-model=small", - "-C", - "link-args=-e entrypoint", -] -linker = "rust-lld" - -[profile.release] -panic = "abort" - -[profile.dev] -panic = "abort" +Build the guest using [cargo-hyperlight](https://github.com/hyperlight-dev/cargo-hyperlight): + +``` +cargo install -locked cargo-hyperlight +Cargo hyperlight build ``` For additional examples of using the Hyperlight host Rust library, see diff --git a/src/tests/rust_guests/dummyguest/.cargo/config.toml b/src/tests/rust_guests/dummyguest/.cargo/config.toml deleted file mode 100644 index 4b549b837..000000000 --- a/src/tests/rust_guests/dummyguest/.cargo/config.toml +++ /dev/null @@ -1,17 +0,0 @@ -[build] -target = "x86_64-unknown-none" - -[target.x86_64-unknown-none] -rustflags = [ - "-C", - "code-model=small", - "-C", - "link-args=-e entrypoint", -] -linker = "rust-lld" - -[profile.release] -panic = "abort" - -[profile.dev] -panic = "abort" \ No newline at end of file diff --git a/src/tests/rust_guests/simpleguest/.cargo/config.toml b/src/tests/rust_guests/simpleguest/.cargo/config.toml deleted file mode 100644 index 037201bc1..000000000 --- a/src/tests/rust_guests/simpleguest/.cargo/config.toml +++ /dev/null @@ -1,17 +0,0 @@ -[build] -target = "x86_64-unknown-none" - -[target.x86_64-unknown-none] -rustflags = [ - "-C", - "code-model=small", - "-C", - "link-args=-e entrypoint", -] -linker = "rust-lld" - -[profile.release] -panic = "abort" - -[profile.dev] -panic = "abort" diff --git a/src/tests/rust_guests/witguest/.cargo/config.toml b/src/tests/rust_guests/witguest/.cargo/config.toml deleted file mode 100644 index f977e97ab..000000000 --- a/src/tests/rust_guests/witguest/.cargo/config.toml +++ /dev/null @@ -1,19 +0,0 @@ -[build] -target = "x86_64-unknown-none" - -[target.x86_64-unknown-none] -rustflags = [ - "-C", - "code-model=small", - "-C", - "link-args=-e entrypoint", -] -linker = "rust-lld" - -[profile.release] -opt-level = 0 -panic = "abort" - -[profile.dev] -opt-level = 0 -panic = "abort" \ No newline at end of file From 59192f384a95fc7fc3f9608bad395d4dea26f31b Mon Sep 17 00:00:00 2001 From: Simon Davies Date: Tue, 9 Dec 2025 08:56:23 +0000 Subject: [PATCH 2/2] Fixed typo in README Signed-off-by: Simon Davies --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2b19077fe..0312124c1 100644 --- a/README.md +++ b/README.md @@ -107,8 +107,8 @@ pub fn guest_dispatch_function(function_call: FunctionCall) -> Result> { Build the guest using [cargo-hyperlight](https://github.com/hyperlight-dev/cargo-hyperlight): ``` -cargo install -locked cargo-hyperlight -Cargo hyperlight build +cargo install --locked cargo-hyperlight +cargo hyperlight build ``` For additional examples of using the Hyperlight host Rust library, see