diff --git a/Cargo.lock b/Cargo.lock index 01bac8cf..8f5e13af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -591,6 +591,7 @@ dependencies = [ "warg-crypto", "warg-protocol", "warg-server", + "wasi-preview1-component-adapter-provider", "wasm-metadata", "wasmparser 0.208.1", "wasmprinter 0.208.1", @@ -4037,6 +4038,12 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi-preview1-component-adapter-provider" +version = "23.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dba2aacb2ea1d483b13ae73bcdda9069dbf7424b20f72e0ad02d6988e4ec0bbb" + [[package]] name = "wasm-bindgen" version = "0.2.92" diff --git a/Cargo.toml b/Cargo.toml index 512b4c1d..9d1504bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,6 +53,7 @@ bytes = { workspace = true } which = { workspace = true } shell-escape = "0.1.5" tempfile = { workspace = true } +wasi-preview1-component-adapter-provider = "23.0.1" [dev-dependencies] assert_cmd = { workspace = true } diff --git a/adapters/95fee6f/wasi_snapshot_preview1.command.wasm b/adapters/95fee6f/wasi_snapshot_preview1.command.wasm deleted file mode 100644 index 3c680170..00000000 Binary files a/adapters/95fee6f/wasi_snapshot_preview1.command.wasm and /dev/null differ diff --git a/adapters/95fee6f/wasi_snapshot_preview1.proxy.wasm b/adapters/95fee6f/wasi_snapshot_preview1.proxy.wasm deleted file mode 100644 index 18a1d2ae..00000000 Binary files a/adapters/95fee6f/wasi_snapshot_preview1.proxy.wasm and /dev/null differ diff --git a/adapters/95fee6f/wasi_snapshot_preview1.reactor.wasm b/adapters/95fee6f/wasi_snapshot_preview1.reactor.wasm deleted file mode 100644 index 383afb33..00000000 Binary files a/adapters/95fee6f/wasi_snapshot_preview1.reactor.wasm and /dev/null differ diff --git a/build.rs b/build.rs index 02cb2175..a859ba4f 100644 --- a/build.rs +++ b/build.rs @@ -1,14 +1,11 @@ use std::{path::Path, process::Command}; -const WASI_ADAPTER_VERSION: &str = "95fee6f"; - fn main() { println!("cargo:rerun-if-changed=build.rs"); - println!("cargo:rustc-env=WASI_ADAPTER_VERSION={WASI_ADAPTER_VERSION}"); if !commit_info() { println!( - "cargo:rustc-env=CARGO_VERSION_INFO={} (wasi:{WASI_ADAPTER_VERSION})", + "cargo:rustc-env=CARGO_VERSION_INFO={}", env!("CARGO_PKG_VERSION"), ); } @@ -34,7 +31,7 @@ fn commit_info() -> bool { let mut next = || parts.next().unwrap(); println!("cargo:rustc-env=CARGO_GIT_HASH={}", next()); println!( - "cargo:rustc-env=CARGO_VERSION_INFO={} ({} {} wasi:{WASI_ADAPTER_VERSION})", + "cargo:rustc-env=CARGO_VERSION_INFO={} ({} {})", env!("CARGO_PKG_VERSION"), next(), next() diff --git a/src/lib.rs b/src/lib.rs index 56164c5c..b558142f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -911,23 +911,17 @@ fn adapter_bytes( .warn("ignoring `proxy` setting in `Cargo.toml` for command component")?; } - Ok(Cow::Borrowed(include_bytes!(concat!( - "../adapters/", - env!("WASI_ADAPTER_VERSION"), - "/wasi_snapshot_preview1.command.wasm" - )))) + Ok(Cow::Borrowed( + wasi_preview1_component_adapter_provider::WASI_SNAPSHOT_PREVIEW1_COMMAND_ADAPTER, + )) } else if metadata.section.proxy { - Ok(Cow::Borrowed(include_bytes!(concat!( - "../adapters/", - env!("WASI_ADAPTER_VERSION"), - "/wasi_snapshot_preview1.proxy.wasm" - )))) + Ok(Cow::Borrowed( + wasi_preview1_component_adapter_provider::WASI_SNAPSHOT_PREVIEW1_PROXY_ADAPTER, + )) } else { - Ok(Cow::Borrowed(include_bytes!(concat!( - "../adapters/", - env!("WASI_ADAPTER_VERSION"), - "/wasi_snapshot_preview1.reactor.wasm" - )))) + Ok(Cow::Borrowed( + wasi_preview1_component_adapter_provider::WASI_SNAPSHOT_PREVIEW1_REACTOR_ADAPTER, + )) } } diff --git a/tests/build.rs b/tests/build.rs index c1134763..57a3bdd5 100644 --- a/tests/build.rs +++ b/tests/build.rs @@ -715,9 +715,13 @@ fn it_builds_with_adapter() -> Result<()> { .failure(); let project = Project::new("foo")?; + let adapter_path = "adapter/wasi_snapshot_preview1.wasm"; + project.file( + adapter_path, + wasi_preview1_component_adapter_provider::WASI_SNAPSHOT_PREVIEW1_REACTOR_ADAPTER, + )?; project.update_manifest(|mut doc| { - doc["package"]["metadata"]["component"]["adapter"] = - value(adapter_path().to_str().unwrap()); + doc["package"]["metadata"]["component"]["adapter"] = value(adapter_path); Ok(doc) })?; @@ -894,10 +898,14 @@ fn it_warns_on_proxy_setting_for_command() -> Result<()> { #[test] fn it_warns_with_proxy_and_adapter_settings() -> Result<()> { let project = Project::new("foo")?; + let adapter_path = "adapter/wasi_snapshot_preview1.wasm"; + project.file( + adapter_path, + wasi_preview1_component_adapter_provider::WASI_SNAPSHOT_PREVIEW1_REACTOR_ADAPTER, + )?; project.update_manifest(|mut doc| { doc["package"]["metadata"]["component"]["proxy"] = value(true); - doc["package"]["metadata"]["component"]["adapter"] = - value(adapter_path().to_str().unwrap()); + doc["package"]["metadata"]["component"]["adapter"] = value(adapter_path); Ok(doc) })?; diff --git a/tests/support/mod.rs b/tests/support/mod.rs index 86a0f325..07cf5531 100644 --- a/tests/support/mod.rs +++ b/tests/support/mod.rs @@ -32,18 +32,6 @@ pub fn test_signing_key() -> &'static str { "ecdsa-p256:2CV1EpLaSYEn4In4OAEDAj5O4Hzu8AFAxgHXuG310Ew=" } -pub fn adapter_path() -> PathBuf { - let mut path = std::env::current_exe().unwrap(); - path.pop(); // remove test exe name - path.pop(); // remove `deps` - path.pop(); // remove `debug` or `release` - path.pop(); // remove `target` - path.push("adapters"); - path.push(env!("WASI_ADAPTER_VERSION")); - path.push("wasi_snapshot_preview1.reactor.wasm"); - path -} - pub fn cargo_component(args: &str) -> Command { let mut exe = std::env::current_exe().unwrap(); exe.pop(); // remove test exe name @@ -261,10 +249,10 @@ impl Project { &self.dir } - pub fn file>(&self, path: B, body: &str) -> Result<&Self> { + pub fn file>(&self, path: B, body: impl AsRef<[u8]>) -> Result<&Self> { let path = self.root().join(path); fs::create_dir_all(path.parent().unwrap())?; - fs::write(self.root().join(path), body)?; + fs::write(&path, body)?; Ok(self) }