From ad0fc99b4825308dc34d3c0d4521f42609cac9de Mon Sep 17 00:00:00 2001 From: Fabian Meumertzheim Date: Wed, 14 Feb 2024 09:54:12 +0100 Subject: [PATCH] Share full classpath `NestedSet` between full and header compile actions The Starlark API already adds the direct JARs to the transitive classpath `depset`, so the deleted code path didn't actually change the set. However, it resulted in separate instances being passed to and retained by `JavaCompileAction` and `JavaHeaderCompileAction` in the case where the direct classpath optimization isn't used. --- .../build/lib/rules/java/JavaTargetAttributes.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaTargetAttributes.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaTargetAttributes.java index e78eabdf36f08d..50fd63dd8f103e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaTargetAttributes.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaTargetAttributes.java @@ -321,16 +321,10 @@ public Builder addAdditionalOutputs(Iterable outputs) { public JavaTargetAttributes build() { built = true; - NestedSet directJars = directJarsBuilder.build(); - NestedSet compileTimeClassPath = - NestedSetBuilder.naiveLinkOrder() - .addTransitive(directJars) - .addTransitive(compileTimeClassPathBuilder.build()) - .build(); return new JavaTargetAttributes( ImmutableSet.copyOf(sourceFiles), runtimeClassPath.build(), - compileTimeClassPath, + compileTimeClassPathBuilder.build(), bootClassPath, sourcePath, nativeLibraries.build(), @@ -341,7 +335,7 @@ public JavaTargetAttributes build() { ImmutableList.copyOf(sourceJars), classPathResources.build(), additionalOutputs.build(), - directJars, + directJarsBuilder.build(), compileTimeDependencyArtifacts.build(), targetLabel, injectingRuleKind,