Skip to content

Commit 187f640

Browse files
authored
Avoid creating symlink in src dir from build.rs (#294)
* Avoid creating symlink in src dir from build.rs * Clippy
1 parent 1a07e54 commit 187f640

File tree

5 files changed

+54
-57
lines changed

5 files changed

+54
-57
lines changed

Cargo.lock

Lines changed: 3 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

golem-cli/tests/sharding.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ pub fn all(context: Arc<ContextInfo>) -> Vec<Trial> {
6262
let cli = CliLive::make(&context).unwrap().with_long_args();
6363
let ctx = (context, cli);
6464
vec![Trial::test_in_context(
65-
format!("service_is_responsive_to_shard_changes"),
65+
"service_is_responsive_to_shard_changes".to_string(),
6666
ctx.clone(),
6767
service_is_responsive_to_shard_changes,
6868
)]
@@ -82,13 +82,12 @@ fn start_shard(context: &mut Context) {
8282
.map(|we| we.shard_id)
8383
.collect();
8484
let mut ids = (0..10)
85-
.into_iter()
8685
.filter(|i| !used_ids.contains(i))
8786
.collect::<Vec<_>>();
8887
let mut rng = thread_rng();
8988
ids.shuffle(&mut rng);
9089

91-
match ids.get(0) {
90+
match ids.first() {
9291
Some(id) => {
9392
match WorkerExecutor::start(
9493
context.docker,
@@ -139,7 +138,7 @@ fn make_env_unstable(context: Context, stop_rx: Receiver<()>) {
139138
println!("!!! Starting Golem Sharding Tester");
140139

141140
fn worker(context: &mut Context) {
142-
let mut commands = vec![
141+
let mut commands = [
143142
Command::StartShard,
144143
Command::StopShard,
145144
Command::RestartShardManager,
@@ -290,7 +289,7 @@ fn get_invocation_key_invoke_and_await_with_retry(
290289
params: &str,
291290
cli: &CliLive,
292291
) -> Result<Value, Failed> {
293-
let key = get_invocation_key_with_retry(&template_id, &worker_name, &cli)?;
292+
let key = get_invocation_key_with_retry(template_id, worker_name, cli)?;
294293
let res =
295294
invoke_and_await_result_with_retry(template_id, worker_name, function, params, &key, cli);
296295
println!("*** WORKER {worker_name} INVOKED ***");

golem-worker-executor-base/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ warp = { workspace = true }
9191

9292
[build-dependencies]
9393
cargo_metadata = "0.18.1"
94-
symlink = "0.1.0"
9594

9695
[[test]]
9796
name = "integration"
Lines changed: 46 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
use cargo_metadata::MetadataCommand;
2+
use std::env::var_os;
23
use std::path::Path;
3-
use symlink::{remove_symlink_dir, symlink_dir};
44

55
fn main() -> Result<(), Box<dyn std::error::Error>> {
66
let golem_wit_root = find_package_root("golem-wit");
7-
let target_root = Path::new("./golem-wit");
8-
if target_root.exists() {
9-
let _ = remove_symlink_dir(target_root);
10-
}
11-
println!(
12-
"Creating symlink from {} to {}",
13-
golem_wit_root,
14-
target_root.display()
15-
);
16-
symlink_dir(golem_wit_root, target_root)?;
7+
let out_dir = var_os("OUT_DIR").unwrap();
8+
let target_file = Path::new(&out_dir).join("preview2_mod.rs");
9+
10+
std::fs::write(target_file, preview2_mod_gen(&golem_wit_root)).unwrap();
11+
12+
println!("cargo::rerun-if-changed=build.rs");
13+
1714
Ok(())
1815
}
1916

@@ -25,3 +22,41 @@ fn find_package_root(name: &str) -> String {
2522
let package = metadata.packages.iter().find(|p| p.name == name).unwrap();
2623
package.manifest_path.parent().unwrap().to_string()
2724
}
25+
26+
fn preview2_mod_gen(golem_wit_path: &str) -> String {
27+
format!(
28+
r#"wasmtime::component::bindgen!({{
29+
path: "{golem_wit_path}/wit",
30+
interfaces: "
31+
import golem:api/[email protected];
32+
33+
import wasi:blobstore/blobstore;
34+
import wasi:blobstore/container;
35+
import wasi:blobstore/types;
36+
import wasi:keyvalue/[email protected];
37+
import wasi:keyvalue/[email protected];
38+
import wasi:keyvalue/[email protected];
39+
import wasi:keyvalue/[email protected];
40+
import wasi:keyvalue/[email protected];
41+
import wasi:keyvalue/[email protected];
42+
import wasi:logging/logging;
43+
",
44+
tracing: false,
45+
async: true,
46+
with: {{
47+
"wasi:io/streams/input-stream": InputStream,
48+
"wasi:io/streams/output-stream": OutputStream,
49+
"wasi:io/poll/pollable": Pollable,
50+
"wasi:blobstore/container/container": super::durable_host::blobstore::types::ContainerEntry,
51+
"wasi:blobstore/container/stream-object-names": super::durable_host::blobstore::types::StreamObjectNamesEntry,
52+
"wasi:blobstore/types/incoming-value": super::durable_host::blobstore::types::IncomingValueEntry,
53+
"wasi:blobstore/types/outgoing-value": super::durable_host::blobstore::types::OutgoingValueEntry,
54+
"wasi:keyvalue/wasi-keyvalue-error/error": super::durable_host::keyvalue::error::ErrorEntry,
55+
"wasi:keyvalue/types/bucket": super::durable_host::keyvalue::types::BucketEntry,
56+
"wasi:keyvalue/types/incoming-value": super::durable_host::keyvalue::types::IncomingValueEntry,
57+
"wasi:keyvalue/types/outgoing-value": super::durable_host::keyvalue::types::OutgoingValueEntry,
58+
}}
59+
}});
60+
"#
61+
)
62+
}

golem-worker-executor-base/src/preview2/mod.rs

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,38 +12,7 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
wasmtime::component::bindgen!({
16-
path: "golem-wit/wit",
17-
interfaces: "
18-
import golem:api/[email protected];
19-
20-
import wasi:blobstore/blobstore;
21-
import wasi:blobstore/container;
22-
import wasi:blobstore/types;
23-
import wasi:keyvalue/[email protected];
24-
import wasi:keyvalue/[email protected];
25-
import wasi:keyvalue/[email protected];
26-
import wasi:keyvalue/[email protected];
27-
import wasi:keyvalue/[email protected];
28-
import wasi:keyvalue/[email protected];
29-
import wasi:logging/logging;
30-
",
31-
tracing: false,
32-
async: true,
33-
with: {
34-
"wasi:io/streams/input-stream": InputStream,
35-
"wasi:io/streams/output-stream": OutputStream,
36-
"wasi:io/poll/pollable": Pollable,
37-
"wasi:blobstore/container/container": super::durable_host::blobstore::types::ContainerEntry,
38-
"wasi:blobstore/container/stream-object-names": super::durable_host::blobstore::types::StreamObjectNamesEntry,
39-
"wasi:blobstore/types/incoming-value": super::durable_host::blobstore::types::IncomingValueEntry,
40-
"wasi:blobstore/types/outgoing-value": super::durable_host::blobstore::types::OutgoingValueEntry,
41-
"wasi:keyvalue/wasi-keyvalue-error/error": super::durable_host::keyvalue::error::ErrorEntry,
42-
"wasi:keyvalue/types/bucket": super::durable_host::keyvalue::types::BucketEntry,
43-
"wasi:keyvalue/types/incoming-value": super::durable_host::keyvalue::types::IncomingValueEntry,
44-
"wasi:keyvalue/types/outgoing-value": super::durable_host::keyvalue::types::OutgoingValueEntry,
45-
}
46-
});
15+
include!(concat!(env!("OUT_DIR"), "/preview2_mod.rs"));
4716

4817
pub type InputStream = wasmtime_wasi::preview2::InputStream;
4918
pub type OutputStream = wasmtime_wasi::preview2::OutputStream;

0 commit comments

Comments
 (0)