The required use enforces setting llvm_targets_WebAssembly on the rust ebuild if the wasm use flag is set as well . This is useful only if LLVM is build as part of the ebuild itself. When using the system-llvm use flag, it should enforce LLVM being build with llvm_targets_WebAssembly, but should not require it on the rust ebuild. Currently: wasm? ( llvm_targets_WebAssembly ) Should be (not 100% on the syntax): wasm? ( !system-llvm? ( llvm_targets_WebAssembly ) system-llvm? ( sys-devel/llvm[llvm_targets_WebAssembly] ) )
it already requires it, it's in LLVM_DEPEND block, which gets added to common depend, which gets added to both depend and rdepend =) sys-devel/llvm:8[llvm_targets_WebAssembly?]
and for rust ebuild itself, it's portage limitation. same things happens with python targets. you can build package without python useflag, but still with python_targets expand active.
Okay, then I will close it, if there is no way around it. It just feels strange, that I still need to enable a use flag, which I specifically ask for not to matter. Hopefully the system-llvm because the default soon, so the extra use flags for llvm are gone from the rust ebuild.
sometimes rust-upstream carries cherry-picked codegen patches to llvm and we had bugs because of that. llvm-8 gone stable, I'm going to stabilize more recent rust soon and maybe look at unmasking system-llvm flag on stable, depending on what patches they have for llvm in the tree for 1.37, but if there are too many patches I'll keep it stable-masked.