Migrate InstrumentedFilesProvider to Starlark provider pattern
Progress toward #6241
RELNOTES: None.
PiperOrigin-RevId: 222463226
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index d0dbde1..ae8875e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -39,7 +39,7 @@
import com.google.devtools.build.lib.analysis.constraints.TopLevelConstraintSemantics;
import com.google.devtools.build.lib.analysis.test.CoverageReportActionFactory;
import com.google.devtools.build.lib.analysis.test.CoverageReportActionFactory.CoverageReportActionsWrapper;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -528,7 +528,7 @@
ArtifactsToOwnerLabels.Builder topLevelArtifactsToOwnerLabels) {
NestedSetBuilder<Artifact> baselineCoverageArtifacts = NestedSetBuilder.stableOrder();
for (ConfiguredTarget target : configuredTargets) {
- InstrumentedFilesProvider provider = target.getProvider(InstrumentedFilesProvider.class);
+ InstrumentedFilesInfo provider = target.get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR);
if (provider != null) {
TopLevelArtifactHelper.addArtifactsWithOwnerLabel(
provider.getBaselineCoverageArtifacts(),
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
index 181f6d5..74d51a8 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
@@ -34,7 +34,7 @@
import com.google.devtools.build.lib.analysis.test.AnalysisTestActionBuilder;
import com.google.devtools.build.lib.analysis.test.AnalysisTestResultInfo;
import com.google.devtools.build.lib.analysis.test.ExecutionInfo;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.analysis.test.TestActionBuilder;
import com.google.devtools.build.lib.analysis.test.TestEnvironmentInfo;
import com.google.devtools.build.lib.analysis.test.TestProvider;
@@ -269,7 +269,10 @@
}
TestActionBuilder testActionBuilder =
new TestActionBuilder(ruleContext)
- .setInstrumentedFiles(providersBuilder.getProvider(InstrumentedFilesProvider.class));
+ .setInstrumentedFiles(
+ (InstrumentedFilesInfo)
+ providersBuilder.getProvider(
+ InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR.getKey()));
TestEnvironmentInfo environmentProvider =
(TestEnvironmentInfo)
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
index a4c793b..cf72a5a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
@@ -26,7 +26,7 @@
import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper.ArtifactsInOutputGroup;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.analysis.test.TestConfiguration;
import com.google.devtools.build.lib.analysis.test.TestProvider;
import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer;
@@ -152,8 +152,8 @@
isTest
? targetAndData.getConfiguredTarget().getProvider(TestProvider.class).getTestParams()
: null;
- InstrumentedFilesProvider instrumentedFilesProvider =
- targetAndData.getConfiguredTarget().getProvider(InstrumentedFilesProvider.class);
+ InstrumentedFilesInfo instrumentedFilesProvider =
+ targetAndData.getConfiguredTarget().get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR);
if (instrumentedFilesProvider == null) {
this.baselineCoverageArtifacts = null;
} else {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java
index 1082572..a19914c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java
@@ -23,7 +23,7 @@
import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap;
import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMapBuilder;
import com.google.devtools.build.lib.analysis.VisibilityProvider;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -33,6 +33,7 @@
import com.google.devtools.build.lib.packages.Provider;
import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
import com.google.devtools.build.lib.util.FileType;
+import javax.annotation.Nullable;
/**
* A ConfiguredTarget for a source FileTarget. (Generated files use a subclass,
@@ -47,7 +48,8 @@
Label label,
BuildConfigurationValue.Key configurationKey,
NestedSet<PackageGroupContents> visibility,
- Artifact artifact) {
+ Artifact artifact,
+ @Nullable InstrumentedFilesInfo instrumentedFilesInfo) {
super(label, configurationKey, visibility);
NestedSet<Artifact> filesToBuild = NestedSetBuilder.create(Order.STABLE_ORDER, artifact);
FileProvider fileProvider = new FileProvider(filesToBuild);
@@ -59,8 +61,9 @@
.put(LicensesProvider.class, this)
.add(fileProvider)
.add(filesToRunProvider);
- if (this instanceof InstrumentedFilesProvider) {
- builder.put(InstrumentedFilesProvider.class, this);
+
+ if (instrumentedFilesInfo != null) {
+ builder.put(instrumentedFilesInfo);
}
this.providers = builder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/InputFileConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/InputFileConfiguredTarget.java
index 16eca3a..79d839d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/InputFileConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/InputFileConfiguredTarget.java
@@ -49,7 +49,7 @@
NestedSet<PackageGroupContents> visibility,
SourceArtifact artifact,
NestedSet<TargetLicense> licenses) {
- super(label, null, visibility, artifact);
+ super(label, null, visibility, artifact, null);
this.artifact = artifact;
this.licenses = licenses;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java
index ab170a5..bbe02d5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java
@@ -21,8 +21,7 @@
import com.google.devtools.build.lib.analysis.TargetContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProviderImpl;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.packages.OutputFile;
@@ -32,12 +31,10 @@
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Instantiator;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
-import com.google.devtools.build.lib.util.Pair;
/** A ConfiguredTarget for an OutputFile. */
@AutoCodec
-public class OutputFileConfiguredTarget extends FileConfiguredTarget
- implements InstrumentedFilesProvider {
+public class OutputFileConfiguredTarget extends FileConfiguredTarget {
private final Artifact artifact;
private final TransitiveInfoCollection generatingRule;
@@ -62,11 +59,18 @@
NestedSet<PackageGroupContents> visibility,
Artifact artifact,
TransitiveInfoCollection generatingRule) {
- super(label, configurationKey, visibility, artifact);
+ super(label, configurationKey, visibility, artifact, instrumentedFilesInfo(generatingRule));
this.artifact = artifact;
this.generatingRule = Preconditions.checkNotNull(generatingRule);
}
+ private static InstrumentedFilesInfo instrumentedFilesInfo(
+ TransitiveInfoCollection generatingRule) {
+ Preconditions.checkNotNull(generatingRule);
+ InstrumentedFilesInfo provider = generatingRule.get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR);
+ return provider == null ? InstrumentedFilesInfo.EMPTY : provider;
+ }
+
public TransitiveInfoCollection getGeneratingRule() {
return generatingRule;
}
@@ -94,49 +98,6 @@
.hasOutputLicenses();
}
-
- @Override
- public NestedSet<Artifact> getInstrumentedFiles() {
- return getProvider(InstrumentedFilesProvider.class, InstrumentedFilesProviderImpl.EMPTY)
- .getInstrumentedFiles();
- }
-
- @Override
- public NestedSet<Artifact> getInstrumentationMetadataFiles() {
- return getProvider(InstrumentedFilesProvider.class, InstrumentedFilesProviderImpl.EMPTY)
- .getInstrumentationMetadataFiles();
- }
-
- @Override
- public NestedSet<Artifact> getBaselineCoverageInstrumentedFiles() {
- return getProvider(InstrumentedFilesProvider.class, InstrumentedFilesProviderImpl.EMPTY)
- .getBaselineCoverageInstrumentedFiles();
- }
-
- @Override
- public NestedSet<Artifact> getBaselineCoverageArtifacts() {
- return getProvider(InstrumentedFilesProvider.class, InstrumentedFilesProviderImpl.EMPTY)
- .getBaselineCoverageArtifacts();
- }
-
- @Override
- public NestedSet<Artifact> getCoverageSupportFiles() {
- return getProvider(InstrumentedFilesProvider.class, InstrumentedFilesProviderImpl.EMPTY)
- .getCoverageSupportFiles();
- }
-
- @Override
- public NestedSet<Pair<String, String>> getCoverageEnvironment() {
- return getProvider(InstrumentedFilesProvider.class, InstrumentedFilesProviderImpl.EMPTY)
- .getCoverageEnvironment();
- }
-
- @Override
- public NestedSet<Pair<String, String>> getReportedToActualSources() {
- return getProvider(InstrumentedFilesProvider.class, InstrumentedFilesProviderImpl.EMPTY)
- .getReportedToActualSources();
- }
-
/**
* Returns the corresponding provider from the generating rule, if it is non-null, or {@code
* defaultValue} otherwise.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
index c0d611a..64247f0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
@@ -31,7 +31,7 @@
import com.google.devtools.build.lib.analysis.Whitelist;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
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;
@@ -260,14 +260,14 @@
new InstrumentationSpec(fileTypeSet)
.withSourceAttributes(sourceAttributes.toArray(new String[0]))
.withDependencyAttributes(dependencyAttributes.toArray(new String[0]));
- InstrumentedFilesProvider instrumentedFilesProvider =
+ InstrumentedFilesInfo instrumentedFilesProvider =
InstrumentedFilesCollector.collect(
ruleContext,
instrumentationSpec,
InstrumentedFilesCollector.NO_METADATA_COLLECTOR,
/* rootFiles= */ Collections.emptySet(),
/* reportedToActualSources= */ NestedSetBuilder.create(Order.STABLE_ORDER));
- builder.addProvider(InstrumentedFilesProvider.class, instrumentedFilesProvider);
+ builder.addNativeDeclaredProvider(instrumentedFilesProvider);
}
public static NestedSet<Artifact> convertToOutputGroupValue(Location loc, String outputGroup,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
index 136ab55..72ac8b0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
@@ -50,7 +50,7 @@
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.stringtemplate.ExpansionException;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.Aspect;
@@ -611,7 +611,7 @@
return InstrumentedFilesCollector.shouldIncludeLocalSources(ruleContext);
}
TransitiveInfoCollection target = (TransitiveInfoCollection) targetUnchecked;
- return (target.getProvider(InstrumentedFilesProvider.class) != null)
+ return (target.get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR) != null)
&& InstrumentedFilesCollector.shouldIncludeLocalSources(config, target);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java
index 2f1ae0e..e10f4fc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java
@@ -42,13 +42,13 @@
public final class InstrumentedFilesCollector {
/**
- * Forwards any instrumented files from the given target's dependencies (as defined in
- * {@code dependencyAttributes}) for further export. No files from this target are considered
+ * Forwards any instrumented files from the given target's dependencies (as defined in {@code
+ * dependencyAttributes}) for further export. No files from this target are considered
* instrumented.
*
* @return instrumented file provider of all dependencies in {@code dependencyAttributes}
*/
- public static InstrumentedFilesProvider forward(
+ public static InstrumentedFilesInfo forward(
RuleContext ruleContext, String... dependencyAttributes) {
return collect(
ruleContext,
@@ -58,7 +58,7 @@
/* reportedToActualSources= */ NestedSetBuilder.create(Order.STABLE_ORDER));
}
- public static InstrumentedFilesProvider collect(
+ public static InstrumentedFilesInfo collect(
RuleContext ruleContext,
InstrumentationSpec spec,
LocalMetadataCollector localMetadataCollector,
@@ -71,7 +71,7 @@
/* reportedToActualSources= */ NestedSetBuilder.create(Order.STABLE_ORDER));
}
- public static InstrumentedFilesProvider collect(
+ public static InstrumentedFilesInfo collect(
RuleContext ruleContext,
InstrumentationSpec spec,
LocalMetadataCollector localMetadataCollector,
@@ -95,7 +95,7 @@
* coverage actions for the transitive closure of source files (if <code>withBaselineCoverage
* </code> is true).
*/
- public static InstrumentedFilesProvider collect(
+ public static InstrumentedFilesInfo collect(
RuleContext ruleContext,
InstrumentationSpec spec,
LocalMetadataCollector localMetadataCollector,
@@ -114,7 +114,7 @@
/* reportedToActualSources= */ NestedSetBuilder.create(Order.STABLE_ORDER));
}
- public static InstrumentedFilesProvider collect(
+ public static InstrumentedFilesInfo collect(
RuleContext ruleContext,
InstrumentationSpec spec,
LocalMetadataCollector localMetadataCollector,
@@ -127,7 +127,7 @@
Preconditions.checkNotNull(spec);
if (!ruleContext.getConfiguration().isCodeCoverageEnabled()) {
- return InstrumentedFilesProviderImpl.EMPTY;
+ return InstrumentedFilesInfo.EMPTY;
}
NestedSetBuilder<Artifact> instrumentedFilesBuilder = NestedSetBuilder.stableOrder();
@@ -145,7 +145,7 @@
// Transitive instrumentation data.
for (TransitiveInfoCollection dep :
getAllPrerequisites(ruleContext, spec.dependencyAttributes)) {
- InstrumentedFilesProvider provider = dep.getProvider(InstrumentedFilesProvider.class);
+ InstrumentedFilesInfo provider = dep.get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR);
if (provider != null) {
instrumentedFilesBuilder.addTransitive(provider.getInstrumentedFiles());
metadataFilesBuilder.addTransitive(provider.getInstrumentationMetadataFiles());
@@ -162,7 +162,7 @@
NestedSetBuilder<Artifact> localSourcesBuilder = NestedSetBuilder.stableOrder();
for (TransitiveInfoCollection dep :
getAllPrerequisites(ruleContext, spec.sourceAttributes)) {
- if (!spec.splitLists && dep.getProvider(InstrumentedFilesProvider.class) != null) {
+ if (!spec.splitLists && dep.get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR) != null) {
continue;
}
for (Artifact artifact : dep.getProvider(FileProvider.class).getFilesToBuild()) {
@@ -194,7 +194,7 @@
// Create one baseline coverage action per target, but for the transitive closure of files.
NestedSet<Artifact> baselineCoverageArtifacts =
BaselineCoverageAction.create(ruleContext, baselineCoverageFiles);
- return new InstrumentedFilesProviderImpl(
+ return new InstrumentedFilesInfo(
instrumentedFilesBuilder.build(),
metadataFilesBuilder.build(),
baselineCoverageFiles,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesInfo.java
new file mode 100644
index 0000000..cf59445
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesInfo.java
@@ -0,0 +1,136 @@
+// Copyright 2014 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.analysis.test;
+
+import com.google.devtools.build.lib.actions.Artifact;
+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.events.Location;
+import com.google.devtools.build.lib.packages.BuiltinProvider;
+import com.google.devtools.build.lib.packages.Info;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.util.Pair;
+
+/** An implementation class for the InstrumentedFilesProvider interface. */
+@AutoCodec
+public final class InstrumentedFilesInfo extends Info {
+ /** Singleton provider instance for {@link InstrumentedFilesInfo}. */
+ public static final InstrumentedFilesProvider SKYLARK_CONSTRUCTOR =
+ new InstrumentedFilesProvider();
+
+ public static final InstrumentedFilesInfo EMPTY =
+ new InstrumentedFilesInfo(
+ NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
+ NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
+ NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
+ NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
+ NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
+ NestedSetBuilder.<Pair<String, String>>emptySet(Order.COMPILE_ORDER),
+ NestedSetBuilder.emptySet(Order.STABLE_ORDER));
+
+ private final NestedSet<Artifact> instrumentedFiles;
+ private final NestedSet<Artifact> instrumentationMetadataFiles;
+ private final NestedSet<Artifact> baselineCoverageFiles;
+ private final NestedSet<Artifact> baselineCoverageArtifacts;
+ private final NestedSet<Artifact> coverageSupportFiles;
+ private final NestedSet<Pair<String, String>> coverageEnvironment;
+ private final NestedSet<Pair<String, String>> reportedToActualSources;
+
+ public InstrumentedFilesInfo(
+ NestedSet<Artifact> instrumentedFiles,
+ NestedSet<Artifact> instrumentationMetadataFiles,
+ NestedSet<Artifact> baselineCoverageFiles,
+ NestedSet<Artifact> baselineCoverageArtifacts,
+ NestedSet<Artifact> coverageSupportFiles,
+ NestedSet<Pair<String, String>> coverageEnvironment,
+ NestedSet<Pair<String, String>> reportedToActualSources) {
+ super(SKYLARK_CONSTRUCTOR, Location.BUILTIN);
+ this.instrumentedFiles = instrumentedFiles;
+ this.instrumentationMetadataFiles = instrumentationMetadataFiles;
+ this.baselineCoverageFiles = baselineCoverageFiles;
+ this.baselineCoverageArtifacts = baselineCoverageArtifacts;
+ this.coverageSupportFiles = coverageSupportFiles;
+ this.coverageEnvironment = coverageEnvironment;
+ this.reportedToActualSources = reportedToActualSources;
+ }
+
+ /** The transitive closure of instrumented source files. */
+ public NestedSet<Artifact> getInstrumentedFiles() {
+ return instrumentedFiles;
+ }
+
+ /** Returns a collection of instrumentation metadata files. */
+ public NestedSet<Artifact> getInstrumentationMetadataFiles() {
+ return instrumentationMetadataFiles;
+ }
+
+ /**
+ * The transitive closure of instrumented source files for which baseline coverage should be
+ * generated. In general, this is a subset of the instrumented source files: it only contains
+ * instrumented source files from rules that support baseline coverage.
+ */
+ // TODO(ulfjack): Change this to a single Artifact. Also change how it's generated. It's better to
+ // generate actions such that each action only covers the source files of a single rule, in
+ // particular because baseline coverage is language-specific (it requires a parser for the
+ // specific language), and we don't want to depend on all language parsers from any single rule.
+ public NestedSet<Artifact> getBaselineCoverageInstrumentedFiles() {
+ return baselineCoverageFiles;
+ }
+
+ /**
+ * The output artifact of the baseline coverage action; this is only ever a single artifact, which
+ * contains baseline coverage for the entire transitive closure of source files.
+ */
+ public NestedSet<Artifact> getBaselineCoverageArtifacts() {
+ return baselineCoverageArtifacts;
+ }
+
+ /**
+ * Extra files that are needed on the inputs of test actions for coverage collection to happen,
+ * for example, {@code gcov}.
+ *
+ * <p>They aren't mentioned in the instrumented files manifest.
+ */
+ public NestedSet<Artifact> getCoverageSupportFiles() {
+ return coverageSupportFiles;
+ }
+
+ /** Environment variables that need to be set for tests collecting code coverage. */
+ public NestedSet<Pair<String, String>> getCoverageEnvironment() {
+ return coverageEnvironment;
+ }
+
+ /**
+ * A set of pairs of reported source file path and the actual source file path, relative to the
+ * workspace directory, if the two values are different. If the reported source file is the same
+ * as the actual source path it will not be included in this set.
+ *
+ * <p>This is useful for virtual include paths in C++, which get reported at the include location
+ * and not the real source path. For example, the reported include source file can be
+ * "bazel-out/k8-fastbuild/bin/include/common/_virtual_includes/strategy/strategy.h", but its
+ * actual source path is "include/common/strategy.h".
+ */
+ public NestedSet<Pair<String, String>> getReportedToActualSources() {
+ return reportedToActualSources;
+ }
+
+ /** Provider implementation for {@link InstrumentedFilesInfo}. */
+ public static class InstrumentedFilesProvider extends BuiltinProvider<InstrumentedFilesInfo> {
+
+ public InstrumentedFilesProvider() {
+ super("InstrumentedFilesInfo", InstrumentedFilesInfo.class);
+ }
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java
deleted file mode 100644
index 5fc7efc..0000000
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2014 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.analysis.test;
-
-import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
-import com.google.devtools.build.lib.collect.nestedset.NestedSet;
-import com.google.devtools.build.lib.util.Pair;
-
-/** A provider of instrumented file sources and instrumentation metadata. */
-public interface InstrumentedFilesProvider extends TransitiveInfoProvider {
- /**
- * The transitive closure of instrumented source files.
- */
- NestedSet<Artifact> getInstrumentedFiles();
-
- /**
- * Returns a collection of instrumentation metadata files.
- */
- NestedSet<Artifact> getInstrumentationMetadataFiles();
-
- /**
- * The transitive closure of instrumented source files for which baseline coverage should be
- * generated. In general, this is a subset of the instrumented source files: it only contains
- * instrumented source files from rules that support baseline coverage.
- */
- NestedSet<Artifact> getBaselineCoverageInstrumentedFiles();
-
- /**
- * The output artifact of the baseline coverage action; this is only ever a single artifact, which
- * contains baseline coverage for the entire transitive closure of source files.
- */
- // TODO(ulfjack): Change this to a single Artifact. Also change how it's generated. It's better to
- // generate actions such that each action only covers the source files of a single rule, in
- // particular because baseline coverage is language-specific (it requires a parser for the
- // specific language), and we don't want to depend on all language parsers from any single rule.
- NestedSet<Artifact> getBaselineCoverageArtifacts();
-
- /**
- * Extra files that are needed on the inputs of test actions for coverage collection to happen,
- * for example, {@code gcov}.
- *
- * <p>They aren't mentioned in the instrumented files manifest.
- */
- NestedSet<Artifact> getCoverageSupportFiles();
-
- /**
- * Environment variables that need to be set for tests collecting code coverage.
- */
- NestedSet<Pair<String, String>> getCoverageEnvironment();
-
- /**
- * A set of pairs of reported source file path and the actual source file path, relative to the
- * workspace directory, if the two values are different. If the reported source file is the same
- * as the actual source path it will not be included in this set.
- *
- * <p>This is useful for virtual include paths in C++, which get reported at the include location
- * and not the real source path. For example, the reported include source file can be
- * "bazel-out/k8-fastbuild/bin/include/common/_virtual_includes/strategy/strategy.h", but its
- * actual source path is "include/common/strategy.h".
- */
- NestedSet<Pair<String, String>> getReportedToActualSources();
-}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java
deleted file mode 100644
index 19219d5..0000000
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2014 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.analysis.test;
-
-import com.google.devtools.build.lib.actions.Artifact;
-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.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.util.Pair;
-
-/** An implementation class for the InstrumentedFilesProvider interface. */
-@AutoCodec
-public final class InstrumentedFilesProviderImpl implements InstrumentedFilesProvider {
- public static final InstrumentedFilesProvider EMPTY =
- new InstrumentedFilesProviderImpl(
- NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
- NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
- NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
- NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
- NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
- NestedSetBuilder.<Pair<String, String>>emptySet(Order.COMPILE_ORDER),
- NestedSetBuilder.emptySet(Order.STABLE_ORDER));
-
- private final NestedSet<Artifact> instrumentedFiles;
- private final NestedSet<Artifact> instrumentationMetadataFiles;
- private final NestedSet<Artifact> baselineCoverageFiles;
- private final NestedSet<Artifact> baselineCoverageArtifacts;
- private final NestedSet<Artifact> coverageSupportFiles;
- private final NestedSet<Pair<String, String>> coverageEnvironment;
- private final NestedSet<Pair<String, String>> reportedToActualSources;
-
- public InstrumentedFilesProviderImpl(
- NestedSet<Artifact> instrumentedFiles,
- NestedSet<Artifact> instrumentationMetadataFiles,
- NestedSet<Artifact> baselineCoverageFiles,
- NestedSet<Artifact> baselineCoverageArtifacts,
- NestedSet<Artifact> coverageSupportFiles,
- NestedSet<Pair<String, String>> coverageEnvironment,
- NestedSet<Pair<String, String>> reportedToActualSources) {
- this.instrumentedFiles = instrumentedFiles;
- this.instrumentationMetadataFiles = instrumentationMetadataFiles;
- this.baselineCoverageFiles = baselineCoverageFiles;
- this.baselineCoverageArtifacts = baselineCoverageArtifacts;
- this.coverageSupportFiles = coverageSupportFiles;
- this.coverageEnvironment = coverageEnvironment;
- this.reportedToActualSources = reportedToActualSources;
- }
-
- @Override
- public NestedSet<Artifact> getInstrumentedFiles() {
- return instrumentedFiles;
- }
-
- @Override
- public NestedSet<Artifact> getInstrumentationMetadataFiles() {
- return instrumentationMetadataFiles;
- }
-
- @Override
- public NestedSet<Artifact> getBaselineCoverageInstrumentedFiles() {
- return baselineCoverageFiles;
- }
-
- @Override
- public NestedSet<Artifact> getBaselineCoverageArtifacts() {
- return baselineCoverageArtifacts;
- }
-
- @Override
- public NestedSet<Artifact> getCoverageSupportFiles() {
- return coverageSupportFiles;
- }
-
- @Override
- public NestedSet<Pair<String, String>> getCoverageEnvironment() {
- return coverageEnvironment;
- }
-
- @Override
- public NestedSet<Pair<String, String>> getReportedToActualSources() {
- return reportedToActualSources;
- }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
index 9947beb..d2d1df4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
@@ -75,7 +75,7 @@
private RunfilesSupport runfilesSupport;
private Artifact executable;
private ExecutionInfo executionRequirements;
- private InstrumentedFilesProvider instrumentedFiles;
+ private InstrumentedFilesInfo instrumentedFiles;
private int explicitShardCount;
private Map<String, String> extraEnv;
@@ -125,8 +125,7 @@
return this;
}
- public TestActionBuilder setInstrumentedFiles(
- @Nullable InstrumentedFilesProvider instrumentedFiles) {
+ public TestActionBuilder setInstrumentedFiles(@Nullable InstrumentedFilesInfo instrumentedFiles) {
this.instrumentedFiles = instrumentedFiles;
return this;
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/ShBinary.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/ShBinary.java
index 91432d0..9541d05 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/ShBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/sh/ShBinary.java
@@ -33,7 +33,6 @@
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.LocalMetadataCollector;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
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;
@@ -99,8 +98,7 @@
.setFilesToBuild(filesToBuild)
.setRunfilesSupport(runfilesSupport, mainExecutable)
.addProvider(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
- .addProvider(
- InstrumentedFilesProvider.class,
+ .addNativeDeclaredProvider(
InstrumentedFilesCollector.collect(
ruleContext,
new InstrumentationSpec(FileTypeSet.ANY_FILE, "srcs", "deps", "data"),
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 66e8e9f..9c8fd59 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
@@ -45,7 +45,7 @@
import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.test.ExecutionInfo;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
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;
@@ -913,7 +913,7 @@
List<Artifact> instrumentedObjectFiles = new ArrayList<>();
instrumentedObjectFiles.addAll(ccCompilationOutputs.getObjectFiles(false));
instrumentedObjectFiles.addAll(ccCompilationOutputs.getObjectFiles(true));
- InstrumentedFilesProvider instrumentedFilesProvider =
+ InstrumentedFilesInfo instrumentedFilesProvider =
common.getInstrumentedFilesProvider(
instrumentedObjectFiles,
!TargetUtils.isTestRule(ruleContext.getRule()) && !fake,
@@ -934,7 +934,7 @@
new CcNativeLibraryProvider(
collectTransitiveCcNativeLibraries(
ruleContext, linkingOutputs.getDynamicLibrariesForLinking())))
- .addProvider(InstrumentedFilesProvider.class, instrumentedFilesProvider)
+ .addNativeDeclaredProvider(instrumentedFilesProvider)
.addProvider(
CppDebugFileProvider.class,
new CppDebugFileProvider(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index 3c5318f..02ab81e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -35,7 +35,7 @@
import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.LocalMetadataCollector;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -695,9 +695,8 @@
}
/** Provides support for instrumentation. */
- public InstrumentedFilesProvider getInstrumentedFilesProvider(
- Iterable<Artifact> files,
- boolean withBaselineCoverage) {
+ public InstrumentedFilesInfo getInstrumentedFilesProvider(
+ Iterable<Artifact> files, boolean withBaselineCoverage) {
return getInstrumentedFilesProvider(
files,
withBaselineCoverage,
@@ -705,7 +704,7 @@
);
}
- public InstrumentedFilesProvider getInstrumentedFilesProvider(
+ public InstrumentedFilesInfo getInstrumentedFilesProvider(
Iterable<Artifact> files,
boolean withBaselineCoverage,
NestedSet<Pair<String, String>> virtualToOriginalHeaders) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
index f6b8b97..efcb726 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
@@ -39,7 +39,7 @@
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -406,7 +406,7 @@
List<Artifact> instrumentedObjectFiles = new ArrayList<>();
instrumentedObjectFiles.addAll(compilationInfo.getCcCompilationOutputs().getObjectFiles(false));
instrumentedObjectFiles.addAll(compilationInfo.getCcCompilationOutputs().getObjectFiles(true));
- InstrumentedFilesProvider instrumentedFilesProvider =
+ InstrumentedFilesInfo instrumentedFilesProvider =
common.getInstrumentedFilesProvider(
instrumentedObjectFiles,
/* withBaselineCoverage= */ true,
@@ -444,7 +444,7 @@
.addOutputGroups(
CcCommon.mergeOutputGroups(
ImmutableList.of(compilationInfo.getOutputGroups(), outputGroups.build())))
- .addProvider(InstrumentedFilesProvider.class, instrumentedFilesProvider)
+ .addNativeDeclaredProvider(instrumentedFilesProvider)
.addProvider(RunfilesProvider.withData(defaultRunfiles.build(), dataRunfiles.build()))
.addOutputGroup(
OutputGroupInfo.HIDDEN_TOP_LEVEL,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java b/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
index e33d2cf..cff4525 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
@@ -33,7 +33,7 @@
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
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;
@@ -72,7 +72,7 @@
CompilationHelper.getAggregatingMiddleman(
ruleContext, Actions.escapeLabel(ruleContext.getLabel()), filesToBuild);
- InstrumentedFilesProvider instrumentedFilesProvider =
+ InstrumentedFilesInfo instrumentedFilesProvider =
InstrumentedFilesCollector.collect(
ruleContext,
// what do *we* know about whether this is a source file or not
@@ -98,10 +98,9 @@
.add(RunfilesProvider.class, runfilesProvider)
.setFilesToBuild(filesToBuild)
.setRunfilesSupport(null, getExecutable(filesToBuild))
- .add(InstrumentedFilesProvider.class, instrumentedFilesProvider)
+ .addNativeDeclaredProvider(instrumentedFilesProvider)
.add(MiddlemanProvider.class, new MiddlemanProvider(middleman))
- .add(FilegroupPathProvider.class,
- new FilegroupPathProvider(getFilegroupPath(ruleContext)))
+ .add(FilegroupPathProvider.class, new FilegroupPathProvider(getFilegroupPath(ruleContext)))
.build();
}
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 10d9dd9..82d6f0b 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
@@ -37,7 +37,7 @@
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.LocalMetadataCollector;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -687,8 +687,7 @@
JavaExportsProvider exportsProvider = collectTransitiveExports();
builder
- .add(
- InstrumentedFilesProvider.class,
+ .addNativeDeclaredProvider(
getInstrumentationFilesProvider(ruleContext, filesToBuild, instrumentationSpec))
.addOutputGroup(OutputGroupInfo.FILES_TO_COMPILE, getFilesToCompile(classJar));
@@ -696,7 +695,7 @@
javaInfoBuilder.addProvider(JavaCompilationInfoProvider.class, compilationInfoProvider);
}
- private static InstrumentedFilesProvider getInstrumentationFilesProvider(
+ private static InstrumentedFilesInfo getInstrumentationFilesProvider(
RuleContext ruleContext,
NestedSet<Artifact> filesToBuild,
InstrumentationSpec instrumentationSpec) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
index 1235226..6092f97 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
@@ -36,7 +36,7 @@
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.analysis.test.InstrumentedFilesCollector;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.packages.NativeInfo;
@@ -344,15 +344,15 @@
targetBuilder.addNativeDeclaredProvider(objcProvider);
}
- InstrumentedFilesProvider instrumentedFilesProvider =
+ InstrumentedFilesInfo instrumentedFilesProvider =
InstrumentedFilesCollector.forward(ruleContext, "deps", "bundle_loader");
- return targetBuilder.addProvider(InstrumentedFilesProvider.class, instrumentedFilesProvider)
+ return targetBuilder
+ .addNativeDeclaredProvider(instrumentedFilesProvider)
.addNativeDeclaredProvider(nativeInfo)
.addNativeDeclaredProvider(appleBinaryOutput.getDebugOutputsProvider())
.addOutputGroups(appleBinaryOutput.getOutputGroups())
.build();
-
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index 87f3608..15a0441 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -75,7 +75,7 @@
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.LocalMetadataCollector;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
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;
@@ -255,15 +255,12 @@
/**
* Files which can be instrumented along with the attributes in which they may occur and the
- * attributes along which they are propagated from dependencies (via
- * {@link InstrumentedFilesProvider}).
+ * attributes along which they are propagated from dependencies (via {@link
+ * InstrumentedFilesInfo}).
*/
private static final InstrumentationSpec INSTRUMENTATION_SPEC =
new InstrumentationSpec(
- FileTypeSet.of(
- ObjcRuleClasses.NON_CPP_SOURCES,
- ObjcRuleClasses.CPP_SOURCES,
- HEADERS))
+ FileTypeSet.of(ObjcRuleClasses.NON_CPP_SOURCES, ObjcRuleClasses.CPP_SOURCES, HEADERS))
.withSourceAttributes("srcs", "non_arc_srcs", "hdrs")
.withDependencyAttributes("deps", "data", "binary", "xctest_app");
@@ -877,8 +874,7 @@
* @param objectFiles the object files generated by this target
* @return an instrumented files provider
*/
- public InstrumentedFilesProvider getInstrumentedFilesProvider(
- ImmutableList<Artifact> objectFiles) {
+ public InstrumentedFilesInfo getInstrumentedFilesProvider(ImmutableList<Artifact> objectFiles) {
return InstrumentedFilesCollector.collect(
ruleContext,
INSTRUMENTATION_SPEC,
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 ee393ff..76e81f6 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
@@ -22,7 +22,6 @@
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.rules.cpp.ArtifactCategory;
@@ -120,8 +119,7 @@
.addNativeDeclaredProvider(common.getObjcProvider())
.addProvider(J2ObjcEntryClassProvider.class, j2ObjcEntryClassProvider)
.addProvider(J2ObjcMappingFileProvider.class, j2ObjcMappingFileProvider)
- .addProvider(
- InstrumentedFilesProvider.class,
+ .addNativeDeclaredProvider(
compilationSupport.getInstrumentedFilesProvider(objectFilesCollector.build()))
.addNativeDeclaredProvider(
CcInfo.builder()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java
index 314404f..cd83ea1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java
@@ -34,7 +34,6 @@
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.LocalMetadataCollector;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -163,8 +162,7 @@
NestedSet<String> imports) {
builder
- .add(
- InstrumentedFilesProvider.class,
+ .addNativeDeclaredProvider(
InstrumentedFilesCollector.collect(
ruleContext,
semantics.getCoverageInstrumentationSpec(),
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 22d3093..2edf89d 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -92,7 +92,7 @@
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.analysis.extra.ExtraAction;
import com.google.devtools.build.lib.analysis.test.BaselineCoverageAction;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.buildtool.BuildRequestOptions;
import com.google.devtools.build.lib.clock.BlazeClock;
import com.google.devtools.build.lib.cmdline.Label;
@@ -2018,9 +2018,8 @@
protected Iterable<String> baselineCoverageArtifactBasenames(ConfiguredTarget target)
throws Exception {
ImmutableList.Builder<String> basenames = ImmutableList.builder();
- for (Artifact baselineCoverage : target
- .getProvider(InstrumentedFilesProvider.class)
- .getBaselineCoverageArtifacts()) {
+ for (Artifact baselineCoverage :
+ target.get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR).getBaselineCoverageArtifacts()) {
BaselineCoverageAction baselineAction =
(BaselineCoverageAction) getGeneratingAction(baselineCoverage);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
index eca984f..6a2dc70 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -32,7 +32,7 @@
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.OutputGroupInfo;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
@@ -613,7 +613,7 @@
"cc_library(name = 'x', srcs = ['x.cc'])");
assertThat(
ActionsTestUtil.baseArtifactNames(
- x.getProvider(InstrumentedFilesProvider.class).getInstrumentationMetadataFiles()))
+ x.get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR).getInstrumentationMetadataFiles()))
.containsExactly("x.pic.gcno");
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java
index 9813e64..597579a 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java
@@ -28,7 +28,7 @@
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
import com.google.devtools.build.lib.rules.apple.ApplePlatform;
@@ -1301,8 +1301,8 @@
")");
ConfiguredTarget bundleTarget = getConfiguredTarget("//examples:bundle");
- InstrumentedFilesProvider instrumentedFilesProvider =
- bundleTarget.getProvider(InstrumentedFilesProvider.class);
+ InstrumentedFilesInfo instrumentedFilesProvider =
+ bundleTarget.get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR);
assertThat(instrumentedFilesProvider).isNotNull();
assertThat(Artifact.toRootRelativePaths(instrumentedFilesProvider.getInstrumentedFiles()))
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
index 18d9593..88c6e28 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java
@@ -32,7 +32,7 @@
import com.google.devtools.build.lib.analysis.test.AnalysisFailure;
import com.google.devtools.build.lib.analysis.test.AnalysisFailureInfo;
import com.google.devtools.build.lib.analysis.test.AnalysisTestResultInfo;
-import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -675,7 +675,7 @@
ConfiguredTarget target = getConfiguredTarget("//test/skylark:cr");
assertThat(target.getLabel().toString()).isEqualTo("//test/skylark:cr");
- InstrumentedFilesProvider provider = target.getProvider(InstrumentedFilesProvider.class);
+ InstrumentedFilesInfo provider = target.get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR);
assertWithMessage("InstrumentedFilesProvider should be set.").that(provider).isNotNull();
assertThat(ActionsTestUtil.baseArtifactNames(provider.getInstrumentedFiles())).isEmpty();
}
@@ -707,7 +707,7 @@
ConfiguredTarget target = getConfiguredTarget("//test/skylark:cr");
assertThat(target.getLabel().toString()).isEqualTo("//test/skylark:cr");
- InstrumentedFilesProvider provider = target.getProvider(InstrumentedFilesProvider.class);
+ InstrumentedFilesInfo provider = target.get(InstrumentedFilesInfo.SKYLARK_CONSTRUCTOR);
assertWithMessage("InstrumentedFilesProvider should be set.").that(provider).isNotNull();
assertThat(ActionsTestUtil.baseArtifactNames(provider.getInstrumentedFiles()))
.containsExactly("a.txt", "A.java");