fast-nail-55400
10/20/2021, 11:10 PMtest_compile_multiple_source_files in src/python/pants/backend/java/compile/javac_test.py working with same package dependency inference. That test creates two files in the same package but they do not refer to each other’s types, so they should end up in separate `CoarsenedTarget`’s. However, it appears the shared dependency of the coursier_lockfile is being found to link them together, and so they end up in a single CoarsenedTarget. Is this expected?fast-nail-55400
10/20/2021, 11:13 PMfast-nail-55400
10/20/2021, 11:13 PMdependency_mapping=_DependencyMapping(mapping=FrozenDict({Address(//ExampleLib.java:lib): (Address(//:lockfile), Address(//ExampleLib.java:lib), Address(//OtherLib.java:lib)), Address(//OtherLib.java:lib): (Address(//:lockfile), Address(//ExampleLib.java:lib), Address(//OtherLib.java:lib)), Address(//:lockfile): ()}), visited=FrozenOrderedSet([<class 'pants.jvm.target_types.JvmDependencyLockfile'>(address=//:lockfile, alias='coursier_lockfile', residence_dir='', description=None, source=coursier_resolve.lockfile, tags=None), <class 'pants.backend.java.target_types.JavaSourceTarget'>(address=//ExampleLib.java:lib, alias='java_source', residence_dir='', dependencies=(':lockfile',), description=None, source=ExampleLib.java, tags=None), <class 'pants.backend.java.target_types.JavaSourceTarget'>(address=//OtherLib.java:lib, alias='java_source', residence_dir='', dependencies=(':lockfile',), description=None, source=OtherLib.java, tags=None)]), roots_as_targets=UnexpandedTargets([<class 'pants.backend.java.target_types.JavaSourceTarget'>(address=//ExampleLib.java:lib, alias='java_source', residence_dir='', dependencies=(':lockfile',), description=None, source=ExampleLib.java, tags=None), <class 'pants.backend.java.target_types.JavaSourceTarget'>(address=//OtherLib.java:lib, alias='java_source', residence_dir='', dependencies=(':lockfile',), description=None, source=OtherLib.java, tags=None)]))
addresses_to_targets={Address(//:lockfile): <class 'pants.jvm.target_types.JvmDependencyLockfile'>(address=//:lockfile, alias='coursier_lockfile', residence_dir='', description=None, source=coursier_resolve.lockfile, tags=None),
Address(//ExampleLib.java:lib): <class 'pants.backend.java.target_types.JavaSourceTarget'>(address=//ExampleLib.java:lib, alias='java_source', residence_dir='', dependencies=(':lockfile',), description=None, source=ExampleLib.java, tags=None),
Address(//OtherLib.java:lib): <class 'pants.backend.java.target_types.JavaSourceTarget'>(address=//OtherLib.java:lib, alias='java_source', residence_dir='', dependencies=(':lockfile',), description=None, source=OtherLib.java, tags=None)}
components=[[Address(//:lockfile)],
[Address(//OtherLib.java:lib), Address(//ExampleLib.java:lib)]]
root_addresses_set={Address(//ExampleLib.java:lib), Address(//OtherLib.java:lib)}
component=[Address(//:lockfile)]
component=[Address(//OtherLib.java:lib), Address(//ExampleLib.java:lib)]witty-crayon-22786
10/20/2021, 11:15 PMCoarsenedTargets in there… what makes you think they are being coarsened together?fast-nail-55400
10/20/2021, 11:16 PMcomponent=[Address(//:lockfile)]
component=[Address(//OtherLib.java:lib), Address(//ExampleLib.java:lib)]fast-nail-55400
10/20/2021, 11:16 PMfast-nail-55400
10/20/2021, 11:16 PMdiff --git a/src/python/pants/engine/internals/graph.py b/src/python/pants/engine/internals/graph.py
index a9f94adca..a31c8cfd9 100644
--- a/src/python/pants/engine/internals/graph.py
+++ b/src/python/pants/engine/internals/graph.py
@@ -413,6 +413,7 @@ async def transitive_targets(request: TransitiveTargetsRequest) -> TransitiveTar
@rule
async def coarsened_targets(addresses: Addresses) -> CoarsenedTargets:
+ from pprint import pformat
dependency_mapping = await Get(
_DependencyMapping,
_DependencyMappingRequest(
@@ -424,9 +425,11 @@ async def coarsened_targets(addresses: Addresses) -> CoarsenedTargets:
expanded_targets=False,
),
)
+ print(f"dependency_mapping={pformat(dependency_mapping)}")
addresses_to_targets = {
t.address: t for t in [*dependency_mapping.visited, *dependency_mapping.roots_as_targets]
}
+ print(f"addresses_to_targets={pformat(addresses_to_targets)}")
# Because this is Tarjan's SCC (TODO: update signature to guarantee), components are returned
# in reverse topological order. We can thus assume when building the structure shared
@@ -435,11 +438,14 @@ async def coarsened_targets(addresses: Addresses) -> CoarsenedTargets:
components = native_engine.strongly_connected_components(
list(dependency_mapping.mapping.items())
)
+ print(f"components={pformat(components)}")
coarsened_targets: dict[Address, CoarsenedTarget] = {}
root_coarsened_targets = []
root_addresses_set = set(addresses)
+ print(f"root_addresses_set={pformat(root_addresses_set)}")
for component in components:
+ print(f"component={component}")
component = sorted(component)
component_set = set(component)witty-crayon-22786
10/20/2021, 11:17 PMwitty-crayon-22786
10/20/2021, 11:17 PMfast-nail-55400
10/20/2021, 11:18 PMAddress(//ExampleLib.java:lib): (Address(//:lockfile), Address(//ExampleLib.java:lib), Address(//OtherLib.java:lib))witty-crayon-22786
10/20/2021, 11:22 PMcomponent=[Address(//:lockfile)]
component=[Address(//OtherLib.java:lib), Address(//ExampleLib.java:lib)]
…looks like two targetsfast-nail-55400
10/20/2021, 11:23 PMfast-nail-55400
10/20/2021, 11:23 PMcoarsened_target[0]:
- java_source(address="//ExampleLib.java:lib", dependencies=(':lockfile',), description=None, source=ExampleLib.java, tags=None)
- java_source(address="//OtherLib.java:lib", dependencies=(':lockfile',), description=None, source=OtherLib.java, tags=None)witty-crayon-22786
10/20/2021, 11:24 PMwitty-crayon-22786
10/20/2021, 11:24 PMAddress(//OtherLib.java:lib), Address(//ExampleLib.java:lib) are in the same cycle: you’d have to look at the inferred depsfast-nail-55400
10/20/2021, 11:27 PMfast-nail-55400
10/20/2021, 11:27 PMwitty-crayon-22786
10/20/2021, 11:27 PMfast-nail-55400
10/20/2021, 11:40 PMresolve_dependencies(java_source(address="//OtherLib.java:lib", dependencies=(':lockfile',), description=None, source=OtherLib.java, tags=None))
explicitly_provided=ExplicitlyProvidedDependencies(address=Address(//OtherLib.java:lib), includes=FrozenOrderedSet([Address(//:lockfile)]), ignores=FrozenOrderedSet())
injected=()
inferred=()
generated_addresses=()
special_cased=()
resolve_dependencies(java_source(address="//ExampleLib.java:lib", dependencies=(':lockfile',), description=None, source=ExampleLib.java, tags=None))
explicitly_provided=ExplicitlyProvidedDependencies(address=Address(//ExampleLib.java:lib), includes=FrozenOrderedSet([Address(//:lockfile)]), ignores=FrozenOrderedSet())
injected=()
inferred=()
generated_addresses=()
special_cased=()
resolve_dependencies(coursier_lockfile(address="//:lockfile", description=None, source=coursier_resolve.lockfile, tags=None))
explicitly_provided=ExplicitlyProvidedDependencies(address=Address(//:lockfile), includes=FrozenOrderedSet(), ignores=FrozenOrderedSet())
injected=()
inferred=()
generated_addresses=()
special_cased=()fast-nail-55400
10/20/2021, 11:41 PMwitty-crayon-22786
10/20/2021, 11:43 PMmapping=FrozenDict({
Address(//ExampleLib.java:lib): (Address(//:lockfile), Address(//ExampleLib.java:lib), Address(//OtherLib.java:lib)),
Address(//OtherLib.java:lib): (Address(//:lockfile), Address(//ExampleLib.java:lib), Address(//OtherLib.java:lib)),
Address(//:lockfile): ()}
)witty-crayon-22786
10/20/2021, 11:43 PMwitty-crayon-22786
10/20/2021, 11:45 PMfast-nail-55400
10/20/2021, 11:48 PMfast-nail-55400
10/20/2021, 11:48 PMfast-nail-55400
10/20/2021, 11:51 PMwitty-crayon-22786
10/20/2021, 11:51 PMwitty-crayon-22786
10/20/2021, 11:51 PMresolve_dependencies doesn’t include them?witty-crayon-22786
10/20/2021, 11:52 PMfast-nail-55400
10/20/2021, 11:54 PMfast-nail-55400
10/21/2021, 12:00 AMfast-nail-55400
10/21/2021, 12:15 AMfast-nail-55400
10/21/2021, 12:16 AMorg.pantsbuild.example.lib as the algorithm strips off the parts of the FQTfast-nail-55400
10/21/2021, 12:17 AMfast-nail-55400
10/21/2021, 12:17 AM