From e43b1c7f3ea011ee48ccfaff30820f36937c4ab4 Mon Sep 17 00:00:00 2001 From: Tiziano Santoro Date: Tue, 2 Jan 2024 19:52:14 +0000 Subject: [PATCH] Fix micro_rpc cross workspace dependency Add a manual test to check regressions in the future. Ref #4573 --- Cargo.lock | 7 +++++++ Cargo.toml | 2 +- micro_rpc/build.rs | 7 ++----- micro_rpc_workspace_test/.cargo/config.toml | 2 ++ micro_rpc_workspace_test/Cargo.toml | 7 +++++++ micro_rpc_workspace_test/README.md | 15 +++++++++++++++ micro_rpc_workspace_test/src/main.rs | 3 +++ 7 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 micro_rpc_workspace_test/.cargo/config.toml create mode 100644 micro_rpc_workspace_test/Cargo.toml create mode 100644 micro_rpc_workspace_test/README.md create mode 100644 micro_rpc_workspace_test/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index ca3f0bd1f48..0545f24eb1b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1668,6 +1668,13 @@ dependencies = [ "tokio", ] +[[package]] +name = "micro_rpc_workspace_test" +version = "0.1.0" +dependencies = [ + "micro_rpc", +] + [[package]] name = "mime" version = "0.3.16" diff --git a/Cargo.toml b/Cargo.toml index 4a244ba78ae..2b91f3f31ac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = [ "linux_boot_params", "micro_rpc", "micro_rpc_build", - "micro_rpc_tests", + "micro_rpc_tests", "micro_rpc_workspace_test", "oak_attestation_verification", "oak_channel", "oak_client", diff --git a/micro_rpc/build.rs b/micro_rpc/build.rs index 794274b955d..5bbd3e02adc 100644 --- a/micro_rpc/build.rs +++ b/micro_rpc/build.rs @@ -16,11 +16,8 @@ fn main() { micro_rpc_build::compile( - &[format!( - "{}proto/micro_rpc/messages.proto", - env!("WORKSPACE_ROOT") - )], - &[env!("WORKSPACE_ROOT")], + &["../proto/micro_rpc/messages.proto"], + &["../proto"], Default::default(), ); } diff --git a/micro_rpc_workspace_test/.cargo/config.toml b/micro_rpc_workspace_test/.cargo/config.toml new file mode 100644 index 00000000000..1fbc5068780 --- /dev/null +++ b/micro_rpc_workspace_test/.cargo/config.toml @@ -0,0 +1,2 @@ +[env] +WORKSPACE_ROOT = { value = "_invalid_workspace_root_" } diff --git a/micro_rpc_workspace_test/Cargo.toml b/micro_rpc_workspace_test/Cargo.toml new file mode 100644 index 00000000000..fa3a003e6ce --- /dev/null +++ b/micro_rpc_workspace_test/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "micro_rpc_workspace_test" +version = "0.1.0" +edition = "2021" + +[dependencies] +micro_rpc = { path = "../micro_rpc" } diff --git a/micro_rpc_workspace_test/README.md b/micro_rpc_workspace_test/README.md new file mode 100644 index 00000000000..9e375fd2572 --- /dev/null +++ b/micro_rpc_workspace_test/README.md @@ -0,0 +1,15 @@ +This directory contains a manual test to check whether the `micro_rpc` crate can +be depended on from a crate in another workspace. + +See https://github.com/project-oak/oak/issues/4573 for context. + +This crate overwrites the `WORKSPACE_ROOT` env variable with an invalid value in +the `.cargo/config.toml` file, which is necessary to shadow the corresponding +one in the root of this repository, to simulate an external workspace that would +not have that env variable set. + +To reproduce the issue, run the following command from the repository root: + +```bash +env --chdir=./micro_rpc_workspace_test bash -c 'cargo clean && cargo build' +``` diff --git a/micro_rpc_workspace_test/src/main.rs b/micro_rpc_workspace_test/src/main.rs new file mode 100644 index 00000000000..e7a11a969c0 --- /dev/null +++ b/micro_rpc_workspace_test/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +}