Skip to content

Commit 32855f7

Browse files
Use Cargo hyperlight to build rust guests (#1084)
* Use Cargo hyperlight to build rust guests Signed-off-by: James Sturtevant <jsturtevant@gmail.com> * Fixed typo in README Signed-off-by: Simon Davies <simongdavies@users.noreply.github.com> --------- Signed-off-by: James Sturtevant <jsturtevant@gmail.com> Signed-off-by: Simon Davies <simongdavies@users.noreply.github.com> Co-authored-by: Simon Davies <simongdavies@users.noreply.github.com>
1 parent 827f913 commit 32855f7

File tree

5 files changed

+15
-81
lines changed

5 files changed

+15
-81
lines changed

Justfile

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ export CROSS_CONTAINER_GID := if path_exists("/dev/kvm") == "true" { kvm-gid } e
2323
root := justfile_directory()
2424

2525
default-target := "debug"
26-
simpleguest_source := "src/tests/rust_guests/simpleguest/target/x86_64-unknown-none"
27-
dummyguest_source := "src/tests/rust_guests/dummyguest/target/x86_64-unknown-none"
28-
witguest_source := "src/tests/rust_guests/witguest/target/x86_64-unknown-none"
26+
simpleguest_source := "src/tests/rust_guests/simpleguest/target/x86_64-hyperlight-none"
27+
dummyguest_source := "src/tests/rust_guests/dummyguest/target/x86_64-hyperlight-none"
28+
witguest_source := "src/tests/rust_guests/witguest/target/x86_64-hyperlight-none"
2929
rust_guests_bin_dir := "src/tests/rust_guests/bin"
3030

3131
################
@@ -47,9 +47,10 @@ witguest-wit:
4747
cd src/tests/rust_guests/witguest && wasm-tools component wit guest.wit -w -o interface.wasm
4848

4949
build-rust-guests target=default-target features="": (witguest-wit)
50-
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 } }}
51-
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 } }}
52-
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 } }}
50+
cargo install --locked cargo-hyperlight
51+
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 } }}
52+
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 } }}
53+
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 } }}
5354

5455
@move-rust-guests target=default-target:
5556
cp {{ simpleguest_source }}/{{ target }}/simpleguest* {{ rust_guests_bin_dir }}/{{ target }}/
@@ -257,8 +258,9 @@ clippyw target=default-target: (witguest-wit)
257258
{{ cargo-cmd }} clippy --all-features --target x86_64-pc-windows-gnu --profile={{ if target == "debug" { "dev" } else { target } }} -- -D warnings
258259

259260
clippy-guests target=default-target: (witguest-wit)
260-
cd src/tests/rust_guests/simpleguest && cargo clippy --profile={{ if target == "debug" { "dev" } else { target } }} -- -D warnings
261-
cd src/tests/rust_guests/witguest && cargo clippy --profile={{ if target == "debug" { "dev" } else { target } }} -- -D warnings
261+
cargo install --locked cargo-hyperlight
262+
cd src/tests/rust_guests/simpleguest && cargo hyperlight clippy --profile={{ if target == "debug" { "dev" } else { target } }} -- -D warnings
263+
cd src/tests/rust_guests/witguest && cargo hyperlight clippy --profile={{ if target == "debug" { "dev" } else { target } }} -- -D warnings
262264

263265
clippy-apply-fix-unix:
264266
cargo clippy --fix --all

README.md

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -104,26 +104,11 @@ pub fn guest_dispatch_function(function_call: FunctionCall) -> Result<Vec<u8>> {
104104
}
105105
```
106106

107-
**Note**: Guest applications require a specific build configuration. Create a `.cargo/config.toml` file in your guest project with the following content:
108-
109-
```toml
110-
[build]
111-
target = "x86_64-unknown-none"
112-
113-
[target.x86_64-unknown-none]
114-
rustflags = [
115-
"-C",
116-
"code-model=small",
117-
"-C",
118-
"link-args=-e entrypoint",
119-
]
120-
linker = "rust-lld"
121-
122-
[profile.release]
123-
panic = "abort"
124-
125-
[profile.dev]
126-
panic = "abort"
107+
Build the guest using [cargo-hyperlight](https://github.com/hyperlight-dev/cargo-hyperlight):
108+
109+
```
110+
cargo install --locked cargo-hyperlight
111+
cargo hyperlight build
127112
```
128113

129114
For additional examples of using the Hyperlight host Rust library, see

src/tests/rust_guests/dummyguest/.cargo/config.toml

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/tests/rust_guests/simpleguest/.cargo/config.toml

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/tests/rust_guests/witguest/.cargo/config.toml

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)