aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar plf <plf@google.com>2018-02-21 05:55:49 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-21 05:57:31 -0800
commitae4ba82f58034b1875f918965bf781376f89505a (patch)
tree05be5c14ab9e52e33e5009a57bf024625a106394 /src/main/java/com/google
parent840b3e434866f002421c059226047c524f0dd997 (diff)
C++: Migrate CcCompilationInfo to NativeInfo
The old TransitiveInfoProvider is deprecated. Providers used from Skylark should use NativeInfo as specified in[] RELNOTES:none PiperOrigin-RevId: 186447814
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java2
-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/objc/ObjcCommon.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java2
10 files changed, 27 insertions, 33 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index 5f74c9ea3c..9d96ba2716 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -882,7 +882,7 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory {
CppHelper.usePic(ruleContext, toolchain, false));
builder
.setFilesToBuild(filesToBuild)
- .addProvider(CcCompilationInfo.class, ccCompilationInfo)
+ .addNativeDeclaredProvider(ccCompilationInfo)
.addProvider(TransitiveLipoInfoProvider.class, transitiveLipoInfo)
.addProvider(
CcExecutionDynamicLibrariesProvider.class,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
index 82c45ef2e5..36ba98b96d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
@@ -214,7 +214,7 @@ public final class CcCompilationHelper {
/** Function for extracting module maps from CppCompilationDependencies. */
private static final Function<TransitiveInfoCollection, CppModuleMap> CPP_DEPS_TO_MODULES =
dep -> {
- CcCompilationInfo ccCompilationInfo = dep.getProvider(CcCompilationInfo.class);
+ CcCompilationInfo ccCompilationInfo = dep.get(CcCompilationInfo.PROVIDER);
return ccCompilationInfo == null ? null : ccCompilationInfo.getCppModuleMap();
};
@@ -790,10 +790,10 @@ public final class CcCompilationHelper {
TransitiveInfoProviderMapBuilder providers =
new TransitiveInfoProviderMapBuilder()
.add(
- ccCompilationInfo,
new CppDebugFileProvider(
dwoArtifacts.getDwoArtifacts(), dwoArtifacts.getPicDwoArtifacts()),
collectTransitiveLipoInfo(ccOutputs));
+ providers.put(ccCompilationInfo);
Map<String, NestedSet<Artifact>> outputGroups = new TreeMap<>();
outputGroups.put(OutputGroupInfo.TEMP_FILES, getTemps(ccOutputs));
@@ -983,7 +983,7 @@ public final class CcCompilationHelper {
if (useDeps) {
ccCompilationInfoBuilder.mergeDependentCcCompilationInfos(
- AnalysisUtils.getProviders(deps, CcCompilationInfo.class));
+ AnalysisUtils.getProviders(deps, CcCompilationInfo.PROVIDER));
ccCompilationInfoBuilder.mergeDependentCcCompilationInfos(depCcCompilationInfos);
}
CppHelper.mergeToolchainDependentCcCompilationInfo(
@@ -1194,7 +1194,7 @@ public final class CcCompilationHelper {
deps.stream().map(CPP_DEPS_TO_MODULES).collect(toCollection(ArrayList::new));
if (ruleContext.getRule().getAttributeDefinition(":stl") != null) {
CcCompilationInfo stl =
- ruleContext.getPrerequisite(":stl", Mode.TARGET, CcCompilationInfo.class);
+ ruleContext.getPrerequisite(":stl", Mode.TARGET, CcCompilationInfo.PROVIDER);
if (stl != null) {
result.add(stl.getCppModuleMap());
}
@@ -2049,7 +2049,7 @@ public final class CcCompilationHelper {
// implementation (with caching results of this method) to avoid O(N^2) slowdown.
if (ruleContext.getRule().isAttrDefined("deps", BuildType.LABEL_LIST)) {
for (TransitiveInfoCollection dep : ruleContext.getPrerequisites("deps", Mode.TARGET)) {
- if (dep.getProvider(CcCompilationInfo.class) != null
+ if (dep.get(CcCompilationInfo.PROVIDER) != null
&& InstrumentedFilesCollector.shouldIncludeLocalSources(configuration, dep)) {
return true;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java
index 82cb1f4bc3..135865f271 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationInfo.java
@@ -17,17 +17,19 @@ package com.google.devtools.build.lib.rules.cpp;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.ActionOwner;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.MiddlemanFactory;
import com.google.devtools.build.lib.analysis.RuleContext;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
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.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.packages.NativeInfo;
+import com.google.devtools.build.lib.packages.NativeProvider;
import com.google.devtools.build.lib.rules.cpp.CppHelper.PregreppedHeader;
import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
@@ -46,9 +48,12 @@ import javax.annotation.Nullable;
*/
@Immutable
@AutoCodec
-public final class CcCompilationInfo implements TransitiveInfoProvider {
+public final class CcCompilationInfo extends NativeInfo {
public static final ObjectCodec<CcCompilationInfo> CODEC = new CcCompilationInfo_AutoCodec();
+ public static final NativeProvider<CcCompilationInfo> PROVIDER =
+ new NativeProvider<CcCompilationInfo>(CcCompilationInfo.class, "CcCompilationInfo") {};
+
/** An empty {@code CcCompilationInfo}. */
public static final CcCompilationInfo EMPTY = new Builder(null).build();
@@ -95,6 +100,7 @@ public final class CcCompilationInfo implements TransitiveInfoProvider {
CppModuleMap cppModuleMap,
@Nullable CppModuleMap verificationModuleMap,
boolean propagateModuleMapAsActionInput) {
+ super(PROVIDER, ImmutableMap.of());
Preconditions.checkNotNull(commandLineCcCompilationInfo);
this.commandLineCcCompilationInfo = commandLineCcCompilationInfo;
this.declaredIncludeDirs = declaredIncludeDirs;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
index 83a0853298..4c327cb993 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
@@ -48,7 +48,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider {
+ " <code>src</code> or <code>headers</code> attribute"
+ "(possibly empty but never <code>None</code>).")
public NestedSet<Artifact> getTransitiveHeaders() {
- CcCompilationInfo ccCompilationInfo = getInfo().getProvider(CcCompilationInfo.class);
+ CcCompilationInfo ccCompilationInfo = getInfo().get(CcCompilationInfo.PROVIDER);
return ccCompilationInfo.getDeclaredIncludeSrcs();
}
@@ -95,7 +95,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider {
"Returns the list of defines used to compile this target "
+ "(possibly empty but never <code>None</code>).")
public ImmutableList<String> getDefines() {
- CcCompilationInfo ccCompilationInfo = getInfo().getProvider(CcCompilationInfo.class);
+ CcCompilationInfo ccCompilationInfo = getInfo().get(CcCompilationInfo.PROVIDER);
return ccCompilationInfo == null ? ImmutableList.<String>of() : ccCompilationInfo.getDefines();
}
@@ -106,7 +106,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider {
"Returns the list of system include directories used to compile this target "
+ "(possibly empty but never <code>None</code>).")
public ImmutableList<String> getSystemIncludeDirs() {
- CcCompilationInfo ccCompilationInfo = getInfo().getProvider(CcCompilationInfo.class);
+ CcCompilationInfo ccCompilationInfo = getInfo().get(CcCompilationInfo.PROVIDER);
if (ccCompilationInfo == null) {
return ImmutableList.of();
}
@@ -124,7 +124,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider {
"Returns the list of include directories used to compile this target "
+ "(possibly empty but never <code>None</code>).")
public ImmutableList<String> getIncludeDirs() {
- CcCompilationInfo ccCompilationInfo = getInfo().getProvider(CcCompilationInfo.class);
+ CcCompilationInfo ccCompilationInfo = getInfo().get(CcCompilationInfo.PROVIDER);
if (ccCompilationInfo == null) {
return ImmutableList.of();
}
@@ -142,7 +142,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider {
"Returns the list of quote include directories used to compile this target "
+ "(possibly empty but never <code>None</code>).")
public ImmutableList<String> getQuoteIncludeDirs() {
- CcCompilationInfo ccCompilationInfo = getInfo().getProvider(CcCompilationInfo.class);
+ CcCompilationInfo ccCompilationInfo = getInfo().get(CcCompilationInfo.PROVIDER);
if (ccCompilationInfo == null) {
return ImmutableList.of();
}
@@ -160,7 +160,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider {
"Returns the list of flags used to compile this target "
+ "(possibly empty but never <code>None</code>).")
public ImmutableList<String> getCcFlags() {
- CcCompilationInfo ccCompilationInfo = getInfo().getProvider(CcCompilationInfo.class);
+ CcCompilationInfo ccCompilationInfo = getInfo().get(CcCompilationInfo.PROVIDER);
ImmutableList.Builder<String> options = ImmutableList.builder();
for (String define : ccCompilationInfo.getDefines()) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index 50c78d5ffb..a679527857 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -122,7 +122,7 @@ public class CppHelper {
// TODO(bazel-team): Clean this up.
ccCompilationInfoBuilder.addSystemIncludeDir(
stl.getLabel().getPackageIdentifier().getPathUnderExecRoot().getRelative("gcc3"));
- CcCompilationInfo provider = stl.getProvider(CcCompilationInfo.class);
+ CcCompilationInfo provider = stl.get(CcCompilationInfo.PROVIDER);
if (provider == null) {
ruleContext.ruleError("Unable to merge the STL '" + stl.getLabel()
+ "' and toolchain contexts");
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
index 109de52411..4774ef895b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
@@ -413,7 +413,7 @@ public class JavaCommon {
protected CcCompilationInfo collectTransitiveCppDeps() {
CcCompilationInfo.Builder builder = new CcCompilationInfo.Builder(ruleContext);
for (TransitiveInfoCollection dep : targetsTreatedAsDeps(ClasspathType.BOTH)) {
- CcCompilationInfo ccCompilationInfo = dep.getProvider(CcCompilationInfo.class);
+ CcCompilationInfo ccCompilationInfo = dep.get(CcCompilationInfo.PROVIDER);
if (ccCompilationInfo != null) {
builder.mergeDependentCcCompilationInfo(ccCompilationInfo);
}
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 0c1b7db96a..e6192fed29 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
@@ -184,7 +184,7 @@ public class JavaImport implements RuleConfiguredTargetFactory {
.add(
JavaNativeLibraryProvider.class,
new JavaNativeLibraryProvider(transitiveJavaNativeLibraries))
- .add(CcCompilationInfo.class, transitiveCppDeps)
+ .addNativeDeclaredProvider(transitiveCppDeps)
.add(JavaSourceInfoProvider.class, javaSourceInfoProvider)
.add(ProguardSpecProvider.class, new ProguardSpecProvider(proguardSpecs))
.addOutputGroup(JavaSemantics.SOURCE_JARS_OUTPUT_GROUP, transitiveJavaSourceJars)
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 56187fea59..6b8aa79263 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
@@ -250,7 +250,7 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
RunfilesProvider.simple(
JavaCommon.getRunfiles(ruleContext, semantics, javaArtifacts, neverLink)))
.setFilesToBuild(filesToBuild)
- .addProvider(transitiveCppDeps)
+ .addNativeDeclaredProvider(transitiveCppDeps)
.addNativeDeclaredProvider(ccLinkParamsInfo)
.addProvider(new JavaNativeLibraryProvider(transitiveJavaNativeLibraries))
.addProvider(JavaSourceInfoProvider.fromJavaTargetAttributes(attributes, semantics))
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index f5cd94c0f0..3019d7a1a3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -62,7 +62,6 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.packages.Info;
@@ -260,10 +259,10 @@ public final class ObjcCommon {
for (ConfiguredTargetAndTarget dep : deps) {
ConfiguredTarget depCT = dep.getConfiguredTarget();
addAnyProviders(propagatedObjcDeps, depCT, ObjcProvider.SKYLARK_CONSTRUCTOR);
- addAnyProviders(cppDeps, depCT, CcCompilationInfo.class);
+ addAnyProviders(cppDeps, depCT, CcCompilationInfo.PROVIDER);
if (isCcLibrary(dep)) {
cppDepLinkParams.add(depCT.get(CcLinkParamsInfo.PROVIDER));
- addDefines(depCT.getProvider(CcCompilationInfo.class).getDefines());
+ addDefines(depCT.get(CcCompilationInfo.PROVIDER).getDefines());
}
}
addDepObjcProviders(propagatedObjcDeps.build());
@@ -288,17 +287,6 @@ public final class ObjcCommon {
return this;
}
- private <T extends TransitiveInfoProvider> ImmutableList.Builder<T> addAnyProviders(
- ImmutableList.Builder<T> listBuilder,
- TransitiveInfoCollection collection,
- Class<T> providerClass) {
- T provider = collection.getProvider(providerClass);
- if (provider != null) {
- listBuilder.add(provider);
- }
- return listBuilder;
- }
-
private <T extends Info> ImmutableList.Builder<T> addAnyProviders(
ImmutableList.Builder<T> listBuilder,
TransitiveInfoCollection collection,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
index 3130596ef7..bebacd8757 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
@@ -99,7 +99,7 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory {
return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
.addNativeDeclaredProvider(common.getObjcProvider())
- .addProvider(CcCompilationInfo.class, ccCompilationInfo)
+ .addNativeDeclaredProvider(ccCompilationInfo)
.addProvider(J2ObjcEntryClassProvider.class, j2ObjcEntryClassProvider)
.addProvider(J2ObjcMappingFileProvider.class, j2ObjcMappingFileProvider)
.addProvider(