aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2018-04-13 01:46:09 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-13 01:47:45 -0700
commitafc490381806ba66910d37b606a98818083ba36f (patch)
tree34446926799158a144d8535bcedc432c0e361551 /src/main/java/com
parent1f748cb37d7107af2a83bc2f9d63d2ffa19767e7 (diff)
Remove JavaRuntimeJarProvider.
PiperOrigin-RevId: 192736049
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java23
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java37
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeJarProvider.java46
10 files changed, 56 insertions, 78 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index faf5ea0054..d1a4f2b1dc 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -853,7 +853,6 @@ java_library(
"rules/java/JavaRuntime.java",
"rules/java/JavaRuntimeAlias.java",
"rules/java/JavaRuntimeClasspathProvider.java",
- "rules/java/JavaRuntimeJarProvider.java",
"rules/java/JavaRuntimeRule.java",
"rules/java/JavaRuntimeSuite.java",
"rules/java/JavaRuntimeSuiteRule.java",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
index 74264b7f88..5cd4f0f123 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
@@ -40,7 +40,6 @@ import com.google.devtools.build.lib.rules.java.JavaConfiguration.ImportDepsChec
import com.google.devtools.build.lib.rules.java.JavaInfo;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaRuntimeInfo;
-import com.google.devtools.build.lib.rules.java.JavaRuntimeJarProvider;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.JavaSkylarkApiProvider;
import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
@@ -181,6 +180,7 @@ public class AarImport implements RuleConfiguredTargetFactory {
JavaInfo.Builder javaInfoBuilder =
JavaInfo.Builder.create()
+ .setRuntimeJars(ImmutableList.of(mergedJar))
.addProvider(JavaCompilationArgsProvider.class, javaCompilationArgsProvider)
.addProvider(JavaRuleOutputJarsProvider.class, jarProviderBuilder.build());
@@ -196,8 +196,6 @@ public class AarImport implements RuleConfiguredTargetFactory {
.addNativeDeclaredProvider(
new AndroidNativeLibsInfo(
AndroidCommon.collectTransitiveNativeLibs(ruleContext).add(nativeLibs).build()))
- .addProvider(
- JavaRuntimeJarProvider.class, new JavaRuntimeJarProvider(ImmutableList.of(mergedJar)))
.addNativeDeclaredProvider(javaInfoBuilder.build());
if (depsCheckerResult != null) {
// Add the deps check result so that we can unit test it.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index 8c638aa3c9..8299b129da 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -60,7 +60,6 @@ import com.google.devtools.build.lib.rules.java.JavaInfo;
import com.google.devtools.build.lib.rules.java.JavaPluginInfoProvider;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar;
-import com.google.devtools.build.lib.rules.java.JavaRuntimeJarProvider;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.JavaSkylarkApiProvider;
import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
@@ -728,6 +727,7 @@ public class AndroidCommon {
.addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
.addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
.addProvider(JavaPluginInfoProvider.class, JavaCommon.getTransitivePlugins(ruleContext))
+ .setRuntimeJars(javaCommon.getJavaCompilationArtifacts().getRuntimeJars())
.setNeverlink(isNeverlink)
.build();
@@ -738,9 +738,6 @@ public class AndroidCommon {
.addSkylarkTransitiveInfo(
JavaSkylarkApiProvider.NAME, JavaSkylarkApiProvider.fromRuleContext())
.addNativeDeclaredProvider(javaInfo)
- .addProvider(
- JavaRuntimeJarProvider.class,
- new JavaRuntimeJarProvider(javaCommon.getJavaCompilationArtifacts().getRuntimeJars()))
.addProvider(RunfilesProvider.class, RunfilesProvider.simple(getRunfiles()))
.addNativeDeclaredProvider(resourceInfo)
.addProvider(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
index 8e569e1f89..953f413af5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
@@ -26,7 +26,6 @@ import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier;
import com.google.devtools.build.lib.rules.java.JavaCommon;
import com.google.devtools.build.lib.rules.java.JavaInfo;
-import com.google.devtools.build.lib.rules.java.JavaRuntimeJarProvider;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
import java.util.ArrayList;
import java.util.List;
@@ -72,10 +71,9 @@ public class AndroidNeverlinkAspect extends NativeAspectClass implements Configu
AndroidCommon.collectTransitiveNeverlinkLibraries(
ruleContext,
deps,
- ctadBase
- .getConfiguredTarget()
- .getProvider(JavaRuntimeJarProvider.class)
- .getRuntimeJars())))
+ JavaInfo.getJavaInfo(ctadBase
+ .getConfiguredTarget())
+ .getDirectRuntimeJars())))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
index 93d1709505..900ab8b80f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
@@ -59,7 +59,6 @@ import com.google.devtools.build.lib.rules.java.JavaCommon;
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
import com.google.devtools.build.lib.rules.java.JavaCompilationInfoProvider;
import com.google.devtools.build.lib.rules.java.JavaInfo;
-import com.google.devtools.build.lib.rules.java.JavaRuntimeJarProvider;
import com.google.devtools.build.lib.rules.java.proto.JavaProtoAspectCommon;
import com.google.devtools.build.lib.rules.java.proto.JavaProtoLibraryAspectProvider;
import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainProvider;
@@ -126,7 +125,6 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
public AspectDefinition getDefinition(AspectParameters params) {
AspectDefinition.Builder result =
new AspectDefinition.Builder(this)
- // We care about JavaRuntimeJarProvider, but rules don't advertise that provider.
.requireSkylarkProviders(SkylarkProviderIdentifier.forKey(JavaInfo.PROVIDER.getKey()))
.requireProviderSets(
ImmutableList.of(
@@ -222,9 +220,9 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
}
/**
- * Runs Jars in {@link JavaRuntimeJarProvider} through desugaring action if flag is set and adds
- * the result to {@code result}. Note that this cannot happen in a separate aspect because aspects
- * don't see providers added by other aspects executed on the same target.
+ * Runs Jars in {@link JavaInfo#getDirectRuntimeJars()} through desugaring action if flag is set
+ * and adds the result to {@code result}. Note that this cannot happen in a separate aspect
+ * because aspects don't see providers added by other aspects executed on the same target.
*/
private Function<Artifact, Artifact> desugarJarsIfRequested(
ConfiguredTarget base, RuleContext ruleContext, ConfiguredAspect.Builder result) {
@@ -246,8 +244,8 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
return Functions.identity();
}
- JavaRuntimeJarProvider jarProvider = base.getProvider(JavaRuntimeJarProvider.class);
- if (jarProvider != null) {
+ JavaInfo javaInfo = JavaInfo.getJavaInfo(base);
+ if (javaInfo != null) {
// These are all transitive hjars of dependencies and hjar of the jar itself
NestedSet<Artifact> compileTimeClasspath =
getJavaCompilationArgsProvider(base, ruleContext)
@@ -256,8 +254,9 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
// For android_* targets we need to honor their bootclasspath (nicer in general to do so)
ImmutableList<Artifact> bootclasspath = getBootclasspath(base, ruleContext);
- boolean basenameClash = checkBasenameClash(jarProvider.getRuntimeJars());
- for (Artifact jar : jarProvider.getRuntimeJars()) {
+
+ boolean basenameClash = checkBasenameClash(javaInfo.getDirectRuntimeJars());
+ for (Artifact jar : javaInfo.getDirectRuntimeJars()) {
Artifact desugared =
createDesugarAction(
ruleContext, basenameClash, jar, bootclasspath, compileTimeClasspath);
@@ -281,9 +280,9 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
}
}
} else {
- JavaRuntimeJarProvider jarProvider = base.getProvider(JavaRuntimeJarProvider.class);
- if (jarProvider != null) {
- return jarProvider.getRuntimeJars();
+ JavaInfo javaInfo = JavaInfo.getJavaInfo(base);
+ if (javaInfo != null) {
+ return javaInfo.getDirectRuntimeJars();
}
}
return null;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
index 0ff1762470..a4c3d9628a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
@@ -168,6 +168,7 @@ public class JavaImport implements RuleConfiguredTargetFactory {
.addProvider(JavaCompilationArgsProvider.class, compilationArgsProvider)
.addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
.addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
+ .setRuntimeJars(javaArtifacts.getRuntimeJars())
.setNeverlink(neverLink)
.build();
return ruleBuilder
@@ -175,9 +176,6 @@ public class JavaImport implements RuleConfiguredTargetFactory {
.addSkylarkTransitiveInfo(
JavaSkylarkApiProvider.NAME, JavaSkylarkApiProvider.fromRuleContext())
.addNativeDeclaredProvider(javaInfo)
- .add(
- JavaRuntimeJarProvider.class,
- new JavaRuntimeJarProvider(javaArtifacts.getRuntimeJars()))
.add(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
.addNativeDeclaredProvider(new CcLinkParamsInfo(ccLinkParamsStore))
.add(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
index 33ef7f8a36..24ea6be658 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
@@ -297,6 +297,17 @@ public final class JavaInfo extends NativeInfo {
private final TransitiveInfoProviderMap providers;
+ /*
+ * Contains the .jar files to be put on the runtime classpath by the configured target.
+ * <p>Unlike {@link JavaCompilationArgs#getRuntimeJars()}, it does not contain transitive runtime
+ * jars, only those produced by the configured target itself.
+ *
+ * <p>The reason why this field exists is that neverlink libraries do not contain the compiled jar
+ * in {@link JavaCompilationArgs#getRuntimeJars()} and those are sometimes needed, for example,
+ * for Proguarding (the compile time classpath is not enough because that contains only ijars)
+ */
+ private final ImmutableList<Artifact> directRuntimeJars;
+
// Whether or not this library should be used only for compilation and not at runtime.
private final boolean neverlink;
@@ -398,6 +409,10 @@ public final class JavaInfo extends NativeInfo {
return javaInfo.getProvider(providerClass);
}
+ public static JavaInfo getJavaInfo(TransitiveInfoCollection target) {
+ return (JavaInfo) target.get(JavaInfo.PROVIDER.getKey());
+ }
+
public static <T extends TransitiveInfoProvider> T getProvider(
Class<T> providerClass, TransitiveInfoProviderMap providerMap) {
T provider = providerMap.getProvider(providerClass);
@@ -442,8 +457,13 @@ public final class JavaInfo extends NativeInfo {
@VisibleForSerialization
@AutoCodec.Instantiator
- JavaInfo(TransitiveInfoProviderMap providers, boolean neverlink, Location location) {
+ JavaInfo(
+ TransitiveInfoProviderMap providers,
+ ImmutableList<Artifact> directRuntimeJars,
+ boolean neverlink,
+ Location location) {
super(PROVIDER, location);
+ this.directRuntimeJars = directRuntimeJars;
this.providers = providers;
this.neverlink = neverlink;
}
@@ -556,6 +576,10 @@ public final class JavaInfo extends NativeInfo {
return getProvider(JavaCompilationInfoProvider.class);
}
+ public ImmutableList<Artifact> getDirectRuntimeJars() {
+ return directRuntimeJars;
+ }
+
@SkylarkCallable(
name = "transitive_deps",
doc = "Returns the transitive set of Jars required to build the target.",
@@ -665,6 +689,7 @@ public final class JavaInfo extends NativeInfo {
*/
public static class Builder {
TransitiveInfoProviderMapBuilder providerMap;
+ private ImmutableList<Artifact> runtimeJars;
private boolean neverlink;
private Location location = Location.BUILTIN;
@@ -673,7 +698,8 @@ public final class JavaInfo extends NativeInfo {
}
public static Builder create() {
- return new Builder(new TransitiveInfoProviderMapBuilder());
+ return new Builder(new TransitiveInfoProviderMapBuilder())
+ .setRuntimeJars(ImmutableList.of());
}
public static Builder copyOf(JavaInfo javaInfo) {
@@ -681,6 +707,11 @@ public final class JavaInfo extends NativeInfo {
new TransitiveInfoProviderMapBuilder().addAll(javaInfo.getProviders()));
}
+ public Builder setRuntimeJars(ImmutableList<Artifact> runtimeJars) {
+ this.runtimeJars = runtimeJars;
+ return this;
+ }
+
public Builder setNeverlink(boolean neverlink) {
this.neverlink = neverlink;
return this;
@@ -699,7 +730,7 @@ public final class JavaInfo extends NativeInfo {
}
public JavaInfo build() {
- return new JavaInfo(providerMap.build(), neverlink, location);
+ return new JavaInfo(providerMap.build(), runtimeJars, neverlink, location);
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
index df28e7cc9c..714dbd74ab 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
@@ -165,6 +165,8 @@ final class JavaInfoBuildHelper {
createJavaSourceJarsProvider(
outputSourceJars, concat(compileTimeDeps, runtimeDeps, exports)));
+ javaInfoBuilder.setRuntimeJars(ImmutableList.of(outputJar));
+
return javaInfoBuilder.build();
}
@@ -356,6 +358,7 @@ final class JavaInfoBuildHelper {
JavaSourceJarsProvider.class,
JavaSourceJarsProvider.create(
NestedSetBuilder.emptySet(Order.STABLE_ORDER), sourceJars))
+ .setRuntimeJars(ImmutableList.copyOf(runtimeJars))
.build();
return javaInfo;
}
@@ -463,6 +466,7 @@ final class JavaInfoBuildHelper {
.addProvider(JavaRunfilesProvider.class, new JavaRunfilesProvider(runfiles))
.addProvider(JavaPluginInfoProvider.class, transitivePluginsProvider)
.setNeverlink(neverlink)
+ .setRuntimeJars(ImmutableList.of(outputJar))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
index ec47ee7bcb..c7663d084e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
@@ -227,13 +227,13 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
.addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
// TODO(bazel-team): this should only happen for java_plugin
.addProvider(JavaPluginInfoProvider.class, pluginInfoProvider)
+ .setRuntimeJars(javaArtifacts.getRuntimeJars())
.setNeverlink(neverLink)
.build();
builder
.addSkylarkTransitiveInfo(
JavaSkylarkApiProvider.NAME, JavaSkylarkApiProvider.fromRuleContext())
- .addProvider(new JavaRuntimeJarProvider(javaArtifacts.getRuntimeJars()))
.addProvider(
RunfilesProvider.simple(
JavaCommon.getRunfiles(ruleContext, semantics, javaArtifacts, neverLink)))
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeJarProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeJarProvider.java
deleted file mode 100644
index 3033639934..0000000000
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeJarProvider.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2015 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package com.google.devtools.build.lib.rules.java;
-
-import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
-import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-
-/**
- * This {@link com.google.devtools.build.lib.analysis.TransitiveInfoProvider} contains the .jar
- * files to be put on the runtime classpath by the configured target.
- *
- * <p>Unlike {@link com.google.devtools.build.lib.rules.java.JavaCompilationArgs#getRuntimeJars()},
- * it does not contain transitive runtime jars, only those produced by the configured target itself.
- *
- * <p>The reason why this class exists is that neverlink libraries do not contain the compiled jar
- * in {@link com.google.devtools.build.lib.rules.java.JavaCompilationArgs#getRuntimeJars()} and
- * those are sometimes needed, for example, for Proguarding (the compile time classpath is not
- * enough because that contains only ijars)
- */
-@Immutable
-@AutoCodec
-public final class JavaRuntimeJarProvider implements TransitiveInfoProvider {
- private final ImmutableList<Artifact> runtimeJars;
-
- public JavaRuntimeJarProvider(ImmutableList<Artifact> runtimeJars) {
- this.runtimeJars = runtimeJars;
- }
-
- public ImmutableList<Artifact> getRuntimeJars() {
- return runtimeJars;
- }
-}