From 68b9a7e2dc17e32b194238d287e79bee1ba035b9 Mon Sep 17 00:00:00 2001 From: brandjon Date: Thu, 15 Jun 2017 23:26:23 +0200 Subject: [PATCH] Automated g4 rollback of commit da56606563ee9df438db93392f681bf2abb4ac97. NO_SQ=Only failing TAP targets in our project are from an unrelated bug. *** Reason for rollback *** Initially we thought this broke just a few builds that were fixed in the depot. The scope is wider than that, affecting at least these two targets: [] [] There are hundreds of other failures in the TGP results that we haven't traced to a cause yet, but it's troubling that this CL was implicated twice in the small sampling I did. [] *** Original change description *** Use JavaCompilationArtifacts instead of JavaCompilationArgs to store Java compilation artifacts. Round-tripping through JavaCompilationArgs loses dependency information that upstream compilations use to optimize compile time classpaths. PiperOrigin-RevId: 159154375 --- .../lib/rules/java/JavaLibraryHelper.java | 18 ++++++-------- .../lib/rules/java/JavaSkylarkCommon.java | 2 +- .../rules/java/ProtoJavaApiInfoProvider.java | 24 ++++++++++--------- .../lib/rules/java/proto/ActionReuser.java | 10 ++++---- .../rules/java/proto/JavaLiteProtoAspect.java | 4 ++-- 5 files changed, 27 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java index ca960a950f2ae6..7a58f46c6e0e78 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java @@ -24,8 +24,6 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsMode; import com.google.devtools.build.lib.collect.nestedset.NestedSet; -import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; -import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.rules.java.JavaConfiguration.JavaClasspathMode; import com.google.devtools.build.lib.util.Preconditions; import java.util.ArrayList; @@ -142,8 +140,10 @@ public JavaLibraryHelper setCompilationStrictDepsMode(StrictDepsMode strictDepsM return this; } - /** Creates the compile actions. */ - public JavaCompilationArtifacts build( + /** + * Creates the compile actions. + */ + public JavaCompilationArgs build( JavaSemantics semantics, JavaToolchainProvider javaToolchainProvider, NestedSet hostJavabase, @@ -184,7 +184,7 @@ public JavaCompilationArtifacts build( helper.createCompileTimeJarAction(output, artifactsBuilder); artifactsBuilder.addRuntimeJar(output); - return artifactsBuilder.build(); + return JavaCompilationArgs.builder().merge(artifactsBuilder.build()).build(); } /** @@ -199,8 +199,7 @@ public JavaCompilationArtifacts build( * compilation. Contrast this with {@link #setCompilationStrictDepsMode}. */ public JavaCompilationArgsProvider buildCompilationArgsProvider( - JavaCompilationArtifacts artifacts, boolean isReportedAsStrict) { - JavaCompilationArgs directArgs = JavaCompilationArgs.builder().merge(artifacts).build(); + JavaCompilationArgs directArgs, boolean isReportedAsStrict) { JavaCompilationArgs transitiveArgs = JavaCompilationArgs.builder() .addTransitiveArgs(directArgs, BOTH) @@ -208,10 +207,7 @@ public JavaCompilationArgsProvider buildCompilationArgsProvider( .build(); return JavaCompilationArgsProvider.create( - isReportedAsStrict ? directArgs : transitiveArgs, - transitiveArgs, - NestedSetBuilder.create(Order.STABLE_ORDER, artifacts.getCompileTimeDependencyArtifact()), - NestedSetBuilder.emptySet(Order.STABLE_ORDER)); + isReportedAsStrict ? directArgs : transitiveArgs, transitiveArgs); } private void addDepsToAttributes(JavaTargetAttributes.Builder attributes) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java index 60e38a852826d2..4f975a1c76b0a0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java @@ -222,7 +222,7 @@ public JavaProvider createJavaCompileAction( : hostJavabaseProvider.getMiddlemanArtifact(); JavaToolchainProvider javaToolchainProvider = checkNotNull(javaToolchain.getProvider(JavaToolchainProvider.class)); - JavaCompilationArtifacts artifacts = + JavaCompilationArgs artifacts = helper.build( javaSemantics, javaToolchainProvider, diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/ProtoJavaApiInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/ProtoJavaApiInfoProvider.java index a6d05f99e8a296..e76072a523f134 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/ProtoJavaApiInfoProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/ProtoJavaApiInfoProvider.java @@ -36,9 +36,9 @@ public static ProtoJavaApiInfoProvider create( JavaCompilationArgs transitiveJavaCompilationArgss1, JavaCompilationArgs transitiveJavaCompilationArgssMutable, JavaCompilationArgs transitiveJavaCompilationArgssImmutable, - JavaCompilationArtifacts javaCompilationArgs1, - JavaCompilationArtifacts javaCompilationArgsMutable, - JavaCompilationArtifacts javaCompilationArgsImmutable, + JavaCompilationArgs javaCompilationArgs1, + JavaCompilationArgs javaCompilationArgsMutable, + JavaCompilationArgs javaCompilationArgsImmutable, Artifact sourceJar1, Artifact sourceJarMutable, Artifact sourceJarImmutable, @@ -111,20 +111,22 @@ public static ProtoJavaApiInfoProvider create( */ public abstract JavaCompilationArgs getTransitiveJavaCompilationArgsImmutable(); - /** Returns the artifacts for java compilation (API version 1) for only this target. */ - public abstract JavaCompilationArtifacts getJavaCompilationArtifacts1(); + /** + * Returns the artifacts for java compilation (API version 1) for only this target. + */ + public abstract JavaCompilationArgs getJavaCompilationArgs1(); /** - * Returns the artifacts for java compilation (API version 2, code for mutable API) for only this - * target. + * Returns the artifacts for java compilation (API version 2, code for mutable API) + * for only this target. */ - public abstract JavaCompilationArtifacts getJavaCompilationArtifactsMutable(); + public abstract JavaCompilationArgs getJavaCompilationArgsMutable(); /** - * Returns the artifacts for java compilation (API version 2, code for immutable API) for only - * this target. + * Returns the artifacts for java compilation (API version 2, code for immutable API) + * for only this target. */ - public abstract JavaCompilationArtifacts getJavaCompilationArtifactsImmutable(); + public abstract JavaCompilationArgs getJavaCompilationArgsImmutable(); // The following 3 fields are the -src.jar artifact created by proto_library. If a certain // proto_library does not produce some artifact, it'll be null. This can happen for example when diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/ActionReuser.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/ActionReuser.java index 3dec6f02864df3..bb75a937d54550 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/ActionReuser.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/ActionReuser.java @@ -32,7 +32,6 @@ import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.rules.java.JavaCompilationArgs; import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; -import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts; import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider; import com.google.devtools.build.lib.rules.java.JavaSkylarkApiProvider; import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider; @@ -53,7 +52,7 @@ public static boolean reuseExistingActions( return false; } - JavaCompilationArtifacts directJars = javaApi.getJavaCompilationArtifactsImmutable(); + JavaCompilationArgs directJars = javaApi.getJavaCompilationArgsImmutable(); if (isEmpty(directJars.getCompileTimeJars()) || javaApi.sourceJarImmutable() == null) { return false; } @@ -62,7 +61,7 @@ public static boolean reuseExistingActions( JavaCompilationArgs.builder() .addTransitiveArgs(javaApi.getTransitiveJavaCompilationArgsImmutable(), BOTH) .addTransitiveDependencies(javaApi.getProtoRuntimeImmutable(), true /* recursive */) - .merge(directJars) + .addTransitiveArgs(directJars, BOTH) .build(); Artifact outputJar = getOnlyElement(directJars.getRuntimeJars()); @@ -71,10 +70,9 @@ public static boolean reuseExistingActions( JavaCompilationArgsProvider compilationArgsProvider = JavaCompilationArgsProvider.create( - JavaCompilationArgs.builder().merge(directJars).build(), + directJars, transitiveJars, - NestedSetBuilder.create( - Order.STABLE_ORDER, directJars.getCompileTimeDependencyArtifact()), + NestedSetBuilder.emptySet(Order.STABLE_ORDER), NestedSetBuilder.emptySet(Order.STABLE_ORDER)); JavaSkylarkApiProvider.Builder skylarkApiProvider = diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java index debd453926664a..967756c490589e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java @@ -46,8 +46,8 @@ import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.NativeAspectClass; import com.google.devtools.build.lib.packages.Rule; +import com.google.devtools.build.lib.rules.java.JavaCompilationArgs; import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; -import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts; import com.google.devtools.build.lib.rules.java.JavaCompilationHelper; import com.google.devtools.build.lib.rules.java.JavaConfiguration; import com.google.devtools.build.lib.rules.java.JavaHelper; @@ -255,7 +255,7 @@ private JavaCompilationArgsProvider createJavaCompileAction( helper.addDep(runtime.getProvider(JavaCompilationArgsProvider.class)); } helper.setCompilationStrictDepsMode(StrictDepsMode.OFF); - JavaCompilationArtifacts artifacts = + JavaCompilationArgs artifacts = helper.build( javaSemantics, JavaCompilationHelper.getJavaToolchainProvider(ruleContext),