Default path for a versioned Wasm dependency omits patch version
itowlson opened this issue · 2 comments
Consider this WAC file:
package root:component-val@0.0.1 targets fermyon:spin/http-trigger@2.0.0;
let c = new root:component@0.0.1 { ... };
export c...;
Per #136, it's not currently possible to give a path to the root:component@0.0.1
Wasm file on the CLI. However, it is possible to omit it from the CLI and instead supply it via the deps
folder. The file name wac looks for in this case is ./deps/root/component/0.0.wasm
.
Note that this does not include the patch version! This is because of this line:
wac/crates/wac-resolver/src/fs.rs
Line 64 in 021aae5
The preceding lines derive a path of deps/root/component/0.0.1
, but set_extension
replaces the .1
with .wasm
.
This seems unintentional, although perhaps I am misunderstanding the intended layout of the deps
directory. I did try having a directory called 0.0.1
(which would bypass the set_extension
call) with the Wasm file in it, but that just produced a "no package
header was found in any WIT file for this package" error.
The current behavior is definitely not intended. It's unfortunate that set_extension
is more like a replace_extension
when an extension already exists. I think the fix is to not rely on set_extension
but instead implement the logic ourselves.
@itowlson were you interested in tackling this yourself or would you like me to submit a patch?