diff options
author | brandjon <brandjon@google.com> | 2017-06-15 23:26:23 +0200 |
---|---|---|
committer | Yun Peng <pcloudy@google.com> | 2017-06-16 09:27:20 +0200 |
commit | 68b9a7e2dc17e32b194238d287e79bee1ba035b9 (patch) | |
tree | 666f6a6e093ec81d5dab8dc9ff0ab63f22710465 | |
parent | 8effaa779808cc22d3312b0a353cfa7e3e084f20 (diff) |
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
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 ca960a950f..7a58f46c6e 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.actions.Artifact; 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 final class JavaLibraryHelper { return this; } - /** Creates the compile actions. */ - public JavaCompilationArtifacts build( + /** + * Creates the compile actions. + */ + public JavaCompilationArgs build( JavaSemantics semantics, JavaToolchainProvider javaToolchainProvider, NestedSet<Artifact> hostJavabase, @@ -184,7 +184,7 @@ public final class JavaLibraryHelper { helper.createCompileTimeJarAction(output, artifactsBuilder); artifactsBuilder.addRuntimeJar(output); - return artifactsBuilder.build(); + return JavaCompilationArgs.builder().merge(artifactsBuilder.build()).build(); } /** @@ -199,8 +199,7 @@ public final class JavaLibraryHelper { * 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 final class JavaLibraryHelper { .build(); return JavaCompilationArgsProvider.create( - isReportedAsStrict ? directArgs : transitiveArgs, - transitiveArgs, - NestedSetBuilder.create(Order.STABLE_ORDER, artifacts.getCompileTimeDependencyArtifact()), - NestedSetBuilder.<Artifact>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 60e38a8528..4f975a1c76 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 class JavaSkylarkCommon { : 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 a6d05f99e8..e76072a523 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 abstract class ProtoJavaApiInfoProvider implements TransitiveInfoProvider 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 abstract class ProtoJavaApiInfoProvider implements TransitiveInfoProvider */ 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 3dec6f0286..bb75a937d5 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.NestedSetBuilder; 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 class ActionReuser { return false; } - JavaCompilationArtifacts directJars = javaApi.getJavaCompilationArtifactsImmutable(); + JavaCompilationArgs directJars = javaApi.getJavaCompilationArgsImmutable(); if (isEmpty(directJars.getCompileTimeJars()) || javaApi.sourceJarImmutable() == null) { return false; } @@ -62,7 +61,7 @@ public class ActionReuser { 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 class ActionReuser { JavaCompilationArgsProvider compilationArgsProvider = JavaCompilationArgsProvider.create( - JavaCompilationArgs.builder().merge(directJars).build(), + directJars, transitiveJars, - NestedSetBuilder.create( - Order.STABLE_ORDER, directJars.getCompileTimeDependencyArtifact()), + NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), NestedSetBuilder.<Artifact>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 debd453926..967756c490 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.Attribute; 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 @@ public class JavaLiteProtoAspect extends NativeAspectClass implements Configured helper.addDep(runtime.getProvider(JavaCompilationArgsProvider.class)); } helper.setCompilationStrictDepsMode(StrictDepsMode.OFF); - JavaCompilationArtifacts artifacts = + JavaCompilationArgs artifacts = helper.build( javaSemantics, JavaCompilationHelper.getJavaToolchainProvider(ruleContext), |