Skip to content

Commit 341215c

Browse files
committed
Configure a default runner for WASI targets
If one is not explicitly configured look in the system environment to try and find one. For now just probing for `wasmtime` is implemented.
1 parent 7d9690a commit 341215c

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

src/bootstrap/src/lib.rs

+30-3
Original file line numberDiff line numberDiff line change
@@ -1360,9 +1360,36 @@ impl Build {
13601360
/// An example of this would be a WebAssembly runtime when testing the wasm
13611361
/// targets.
13621362
fn runner(&self, target: TargetSelection) -> Option<String> {
1363-
let target = self.config.target_config.get(&target)?;
1364-
let runner = target.runner.as_ref()?;
1365-
Some(runner.to_owned())
1363+
let configured_runner =
1364+
self.config.target_config.get(&target).and_then(|t| t.runner.as_ref()).map(|p| &**p);
1365+
if let Some(runner) = configured_runner {
1366+
return Some(runner.to_owned());
1367+
}
1368+
1369+
if target.starts_with("wasm") && target.contains("wasi") {
1370+
self.default_wasi_runner()
1371+
} else {
1372+
None
1373+
}
1374+
}
1375+
1376+
/// When a `runner` configuration is not provided and a WASI-looking target
1377+
/// is being tested this is consulted to prove the environment to see if
1378+
/// there's a runtime already lying around that seems reasonable to use.
1379+
fn default_wasi_runner(&self) -> Option<String> {
1380+
let mut finder = crate::core::sanity::Finder::new();
1381+
1382+
// Look for Wasmtime, and for its default options be sure to disable
1383+
// its caching system since we're executing quite a lot of tests and
1384+
// ideally shouldn't pollute the cache too much.
1385+
if let Some(path) = finder.maybe_have("wasmtime") {
1386+
if let Ok(mut path) = path.into_os_string().into_string() {
1387+
path.push_str(" run -C cache=n --dir .");
1388+
return Some(path);
1389+
}
1390+
}
1391+
1392+
None
13661393
}
13671394

13681395
/// Returns the root of the "rootfs" image that this target will be using,

0 commit comments

Comments
 (0)