Cannot specify world to target for package referenced from a registry
I have a component that adds two numbers. It uses the adder world defined in ghcr.io/bytecodealliance/docs/adder:0.1.0. In my Cargo.toml, I get an error if I specify the world within the package i want to target. This happens to be redundant in this case as only the adder world exists in the package, but I would expect it to still be permitted.
Cargo.toml:
[package.metadata.component.target]
# The registry which contains the package
registry = "ghcr.io/bytecodealliance"
# The package name
package = "docs:adder"
# The package version
version = "0.1.0"
# Adding the following incurs an erro
world = "adder"
Error during cargo component build --release:
error: failed to create a target world for package `adder` (/Users/kagold/Programs/component-docs/component-model/examples/tutorial/adder/Cargo.toml)
Caused by:
0: failed to select world from target package `docs:adder`
1: no world named `adder` in package
For now, i'll leave the world out but ill file an issue with cargo-component
WIT can be fetched
wkg get --format wit docs:[email protected] --output adder.wit --registry ghcr.io
WIT:
package docs:[email protected];
interface add {
add: func(a: u32, b: u32) -> u32;
}
world adder {
export add;
}
I am using cargo-component 0.21.1
So it looks to me like the issue might be that the wit you provided is different from the wit in the registry. When I look at the thing being fetched here, I see the following wit:
package root:component;
world root {
export docs:adder/[email protected];
}
package docs:[email protected] {
interface add {
add: func(x: u32, y: u32) -> u32;
}
}
I am able to properly scaffold out a component using that world with the following command though:
cargo component new --lib --target docs:adder/root foo
where I had to use root to specify the world I wanted to target.
After some discussion about how config should be addressed, we could probably use this when handling https://github.com/bytecodealliance/component-docs/issues/255