happy-kitchen-8948207/02/2021, 9:16 PM
X depends on a
Y then X effectively depends on all of the libraries Y depends on, transitively, as sources, and nothing special happens with Y itself. You could replace it with its direct deps with no change in behavior. But what the author of that dep probably intended is for X to depend on the wheel built from Y. An example of where this is useful is when you have a
that builds native code via a custom
(this is now possible! See https://github.com/pantsbuild/pants/pull/12250). AFAICT today we handle this as a special case, only for running tests, via
. But it seems like we should do this generically?
and depending on it means depending on the artifact it creates? So at the very least what we do today for tests we should do uniformly?
hundreds-father-40407/02/2021, 9:20 PM
But in that case it seems like any target could have runtime_package_dependencies and depending on it means depending on the artifact it creates?What does it mean for a Pex to depend on a built PEX? Or some Python library code to depend on a built PEX?
average-vr-5679507/02/2021, 9:31 PM
enough-analyst-5443407/02/2021, 9:34 PM
Where `@`'s would be registered by rules and dependencies on `@`'s would get the corresponding registered rule run against them with the product being a file(set).
witty-crayon-2278607/02/2021, 9:37 PM
list. @average-vr-56795 would know better about whether the syntax still exists.
average-vr-5679507/02/2021, 9:44 PM
); another is that you can name explicit files in some contexts (e.g. in a pkg_zip rule you can reference
and the latter will be a fat jar of transitive deps) but that only really applies when you're depending on a literal file copy, rather than wanting metadata like a classpath. A key difference between Bazel and Pants here is that in Bazel each rule pushes providers up the graph (so the dependency decides in what ways it can be consumed, and the depending rule picks one of them), whereas Pants pulls rule classes up the graph (the depender can decide to do interesting transforms itself)
enough-analyst-5443407/02/2021, 9:45 PM
is a distraction - I intend none of the cross meaning with the old
- just a disambiguator since I lazily assumed
may already be allowed in address names.
average-vr-5679507/02/2021, 9:46 PM
witty-crayon-2278607/02/2021, 9:48 PM
type for a target, and if it is not declared literally on the target, it can be computed for the target
average-vr-5679507/02/2021, 9:51 PM
as something which in some way pretends to be a
without any dependencies as far as things depending on it are concerned, but retains the dependency information for other contexts where that's needed... I'm not sure what exactly that would look like model-wise these days
witty-crayon-2278607/02/2021, 9:51 PM
are still conceptually treated as inputs… even when they might be a
field generated from a
field (example from HEAD)
happy-kitchen-8948207/02/2021, 9:53 PM
target containing the built artifact
average-vr-5679507/02/2021, 9:54 PM
witty-crayon-2278607/02/2021, 9:58 PM
to mean different things in different contexts, we either need new syntax or new attributes. we don’t have the
split, so we only have one list. if we had two attributes you’d put the
list if you wanted loose files, or
if the other thing.
happy-kitchen-8948207/02/2021, 9:58 PM
average-vr-5679507/02/2021, 10:02 PM
happy-kitchen-8948207/02/2021, 10:03 PM
) we don't have to worry about dep inference creating conflicts
average-vr-5679507/02/2021, 10:05 PM
happy-kitchen-8948207/02/2021, 10:06 PM
average-vr-5679507/02/2021, 10:09 PM
attribute on v1 JVM rules? Tagging the explicit metadata so you can handle the conflict smoothly