You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Transitive specialised dependencies are not queued to be built #3531
When a target //:target requires lang and one of its dependencies //:dep provides a specialised dependency //:provided_dep for lang, then //:target depends on //:provided_dep instead of //:dep. However, if //:dep instead depends on //:transitive_dep which provides //:provided_dep for lang and //:target requires transitive dependencies, then building //:target fails.
Build stopped after 10ms. 1 target failed:
//:target
cannot calculate hash for plz-out/gen/provided_dep: file does not exist
Cause
From what I can tell, there is a mismatch between the artefacts that are included the build sandbox for //:target and the targets which gets queued to be built.
When preparing the build sandbox, core.IterInputs calls recursivelyProvideFor to recursively resolve the outputs of transitive specialised dependencies.
Not sure tbh. The behaviour of core.IterInputs including specialised dependencies from transitive dependencies isn't mentioned by Require & Provide and isn't reflected in the output of plz query deps, so this feels like the more incorrect bit. I think it makes reasoning about the build graph a bit harder as well but maybe this is being relied on by someone somewhere and just working (if //:transitive_dep depended on //:provided_dep like how proto_library works, then //:target would build fine).
Activity