Change signatures to DerivedArtifact, and get Labels from non-Artifact sources when possible.
In tests, try to get artifacts directly from the actual configured target, rather than creating fresh ones.
This change should be a prod functional no-op, just changing signatures. Split out from the follow-up to reduce the diff.
PiperOrigin-RevId: 250527865
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
index a23e5fa..2f69670 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
@@ -64,7 +64,7 @@
* artifacts generated by two different rules to clash. To avoid this, use the artifact creation
* method on {@link RuleContext} mentioned above.
*/
- Artifact getDerivedArtifact(PathFragment rootRelativePath, ArtifactRoot root);
+ Artifact.DerivedArtifact getDerivedArtifact(PathFragment rootRelativePath, ArtifactRoot root);
/**
* Returns an artifact for the derived file {@code rootRelativePath} whose changes do not cause a
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 1556fc2..9e82277 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
@@ -658,8 +658,8 @@
}
/**
- * Returns a list of actions from 'provider' that were registered by an aspect from
- * 'aspectClasses'. All actions in 'provider' are considered - both direct and transitive.
+ * Returns a list of artifacts from 'provider' that were registered by an aspect from
+ * 'aspectClasses'. All artifacts in 'provider' are considered - both direct and transitive.
*/
private ImmutableList<Artifact> filterTransitiveExtraActions(
ExtraActionArtifactsProvider provider, Set<AspectClass> aspectClasses) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
index a495377..d66dee7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
@@ -20,10 +20,10 @@
import com.google.common.collect.Lists;
import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
import com.google.devtools.build.lib.actions.ActionKeyContext;
+import com.google.devtools.build.lib.actions.ActionLookupValue;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact;
import com.google.devtools.build.lib.actions.ArtifactFactory;
-import com.google.devtools.build.lib.actions.ArtifactOwner;
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.actions.MiddlemanFactory;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoCollection;
@@ -60,7 +60,7 @@
public class CachingAnalysisEnvironment implements AnalysisEnvironment {
private final ArtifactFactory artifactFactory;
- private final ArtifactOwner owner;
+ private final ActionLookupValue.ActionLookupKey owner;
/**
* If this is the system analysis environment, then errors and warnings are directly reported
* to the global reporter, rather than stored, i.e., we don't track here whether there are any
@@ -87,7 +87,7 @@
public CachingAnalysisEnvironment(
ArtifactFactory artifactFactory,
ActionKeyContext actionKeyContext,
- ArtifactOwner owner,
+ ActionLookupValue.ActionLookupKey owner,
boolean isSystemEnv,
boolean extendedSanityChecks,
boolean allowAnalysisFailures,
@@ -240,7 +240,8 @@
* sealed (disable()). For performance reasons we only track the originating stacktrace when
* running with --experimental_extended_sanity_checks.
*/
- private Artifact trackArtifactAndOrigin(Artifact a, @Nullable Throwable e) {
+ private Artifact.DerivedArtifact trackArtifactAndOrigin(
+ Artifact.DerivedArtifact a, @Nullable Throwable e) {
if ((e != null) && !artifacts.containsKey(a)) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
@@ -252,7 +253,8 @@
}
@Override
- public Artifact getDerivedArtifact(PathFragment rootRelativePath, ArtifactRoot root) {
+ public Artifact.DerivedArtifact getDerivedArtifact(
+ PathFragment rootRelativePath, ArtifactRoot root) {
Preconditions.checkState(enabled);
return trackArtifactAndOrigin(
artifactFactory.getDerivedArtifact(rootRelativePath, root, getOwner()),
@@ -269,7 +271,8 @@
}
@Override
- public Artifact getFilesetArtifact(PathFragment rootRelativePath, ArtifactRoot root) {
+ public Artifact.DerivedArtifact getFilesetArtifact(
+ PathFragment rootRelativePath, ArtifactRoot root) {
Preconditions.checkState(enabled);
return trackArtifactAndOrigin(
artifactFactory.getFilesetArtifact(rootRelativePath, root, getOwner()),
@@ -351,7 +354,7 @@
}
@Override
- public ArtifactOwner getOwner() {
+ public ActionLookupValue.ActionLookupKey getOwner() {
return owner;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java
index 1dd90cf..eedcc19 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java
@@ -28,12 +28,12 @@
public final class ExtraActionArtifactsProvider implements TransitiveInfoProvider {
public static final ExtraActionArtifactsProvider EMPTY =
new ExtraActionArtifactsProvider(
- NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
- NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER));
+ NestedSetBuilder.emptySet(Order.STABLE_ORDER),
+ NestedSetBuilder.emptySet(Order.STABLE_ORDER));
public static ExtraActionArtifactsProvider create(
- NestedSet<Artifact> extraActionArtifacts,
- NestedSet<Artifact> transitiveExtraActionArtifacts) {
+ NestedSet<Artifact.DerivedArtifact> extraActionArtifacts,
+ NestedSet<Artifact.DerivedArtifact> transitiveExtraActionArtifacts) {
if (extraActionArtifacts.isEmpty() && transitiveExtraActionArtifacts.isEmpty()) {
return EMPTY;
}
@@ -42,8 +42,9 @@
public static ExtraActionArtifactsProvider merge(
Iterable<ExtraActionArtifactsProvider> providers) {
- NestedSetBuilder<Artifact> artifacts = NestedSetBuilder.stableOrder();
- NestedSetBuilder<Artifact> transitiveExtraActionArtifacts = NestedSetBuilder.stableOrder();
+ NestedSetBuilder<Artifact.DerivedArtifact> artifacts = NestedSetBuilder.stableOrder();
+ NestedSetBuilder<Artifact.DerivedArtifact> transitiveExtraActionArtifacts =
+ NestedSetBuilder.stableOrder();
for (ExtraActionArtifactsProvider provider : providers) {
artifacts.addTransitive(provider.getExtraActionArtifacts());
@@ -54,28 +55,27 @@
}
/** The outputs of the extra actions associated with this target. */
- private final NestedSet<Artifact> extraActionArtifacts;
- private final NestedSet<Artifact> transitiveExtraActionArtifacts;
+ private final NestedSet<Artifact.DerivedArtifact> extraActionArtifacts;
+
+ private final NestedSet<Artifact.DerivedArtifact> transitiveExtraActionArtifacts;
/** Use {@link #create} instead. */
@AutoCodec.Instantiator
@VisibleForSerialization
ExtraActionArtifactsProvider(
- NestedSet<Artifact> extraActionArtifacts,
- NestedSet<Artifact> transitiveExtraActionArtifacts) {
+ NestedSet<Artifact.DerivedArtifact> extraActionArtifacts,
+ NestedSet<Artifact.DerivedArtifact> transitiveExtraActionArtifacts) {
this.extraActionArtifacts = extraActionArtifacts;
this.transitiveExtraActionArtifacts = transitiveExtraActionArtifacts;
}
- /**
- * The outputs of the extra actions associated with this target.
- */
- public NestedSet<Artifact> getExtraActionArtifacts() {
+ /** The outputs of the extra actions associated with this target. */
+ public NestedSet<Artifact.DerivedArtifact> getExtraActionArtifacts() {
return extraActionArtifacts;
}
/** The outputs of the extra actions in the whole transitive closure. */
- public NestedSet<Artifact> getTransitiveExtraActionArtifacts() {
+ public NestedSet<Artifact.DerivedArtifact> getTransitiveExtraActionArtifacts() {
return transitiveExtraActionArtifacts;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java
index e43ba87..a736555 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java
@@ -48,8 +48,8 @@
return ExtraActionArtifactsProvider.EMPTY;
}
- ImmutableList<Artifact> extraActionArtifacts = ImmutableList.of();
- NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
+ ImmutableList<Artifact.DerivedArtifact> extraActionArtifacts = ImmutableList.of();
+ NestedSetBuilder<Artifact.DerivedArtifact> builder = NestedSetBuilder.stableOrder();
List<Label> actionListenerLabels = configuration.getActionListeners();
if (!actionListenerLabels.isEmpty()
@@ -79,7 +79,9 @@
}
return ExtraActionArtifactsProvider.create(
- NestedSetBuilder.<Artifact>stableOrder().addAll(extraActionArtifacts).build(),
+ NestedSetBuilder.<Artifact.DerivedArtifact>stableOrder()
+ .addAll(extraActionArtifacts)
+ .build(),
builder.build());
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionsVisitor.java b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionsVisitor.java
index f6f41de..922bd72 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionsVisitor.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionsVisitor.java
@@ -33,7 +33,7 @@
final class ExtraActionsVisitor extends ActionGraphVisitor {
private final RuleContext ruleContext;
private final Multimap<String, ExtraActionSpec> mnemonicToExtraActionMap;
- private final List<Artifact> extraArtifacts;
+ private final List<Artifact.DerivedArtifact> extraArtifacts;
/** Creates a new visitor for the extra actions associated with the given target. */
public ExtraActionsVisitor(RuleContext ruleContext,
@@ -63,8 +63,8 @@
}
/** Retrieves the collected artifacts since this method was last called and clears the list. */
- public ImmutableList<Artifact> getAndResetExtraArtifacts() {
- ImmutableList<Artifact> collected = ImmutableList.copyOf(extraArtifacts);
+ ImmutableList<Artifact.DerivedArtifact> getAndResetExtraArtifacts() {
+ ImmutableList<Artifact.DerivedArtifact> collected = ImmutableList.copyOf(extraArtifacts);
extraArtifacts.clear();
return collected;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 76e3b42..7779744 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -40,7 +40,6 @@
import com.google.devtools.build.lib.actions.ActionRegistry;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact;
-import com.google.devtools.build.lib.actions.ArtifactOwner;
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.analysis.AliasProvider.TargetMode;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.PrerequisiteValidator;
@@ -499,7 +498,7 @@
}
@Override
- public ArtifactOwner getOwner() {
+ public ActionLookupValue.ActionLookupKey getOwner() {
return getAnalysisEnvironment().getOwner();
}
@@ -657,22 +656,6 @@
* Creates an artifact in a directory that is unique to the package that contains the rule, thus
* guaranteeing that it never clashes with artifacts created by rules in other packages.
*/
- public Artifact getPackageRelativeArtifact(String relative, ArtifactRoot root) {
- return getPackageRelativeArtifact(PathFragment.create(relative), root);
- }
-
- /**
- * Creates an artifact in a directory that is unique to the package that contains the rule, thus
- * guaranteeing that it never clashes with artifacts created by rules in other packages.
- */
- public Artifact getPackageRelativeTreeArtifact(String relative, ArtifactRoot root) {
- return getPackageRelativeTreeArtifact(PathFragment.create(relative), root);
- }
-
- /**
- * Creates an artifact in a directory that is unique to the package that contains the rule, thus
- * guaranteeing that it never clashes with artifacts created by rules in other packages.
- */
public Artifact getBinArtifact(String relative) {
return getBinArtifact(PathFragment.create(relative));
}
@@ -701,10 +684,19 @@
}
@Override
- public Artifact getPackageRelativeArtifact(PathFragment relative, ArtifactRoot root) {
+ public Artifact.DerivedArtifact getPackageRelativeArtifact(
+ PathFragment relative, ArtifactRoot root) {
return getDerivedArtifact(getPackageDirectory().getRelative(relative), root);
}
+ /**
+ * Creates an artifact in a directory that is unique to the package that contains the rule, thus
+ * guaranteeing that it never clashes with artifacts created by rules in other packages.
+ */
+ public Artifact getPackageRelativeArtifact(String relative, ArtifactRoot root) {
+ return getPackageRelativeArtifact(PathFragment.create(relative), root);
+ }
+
@Override
public PathFragment getPackageDirectory() {
return getLabel().getPackageIdentifier().getSourceRoot();
@@ -718,7 +710,8 @@
* method.
*/
@Override
- public Artifact getDerivedArtifact(PathFragment rootRelativePath, ArtifactRoot root) {
+ public Artifact.DerivedArtifact getDerivedArtifact(
+ PathFragment rootRelativePath, ArtifactRoot root) {
Preconditions.checkState(rootRelativePath.startsWith(getPackageDirectory()),
"Output artifact '%s' not under package directory '%s' for target '%s'",
rootRelativePath, getPackageDirectory(), getLabel());
@@ -1421,7 +1414,8 @@
}
@Override
- public final Artifact getRelatedArtifact(PathFragment pathFragment, String extension) {
+ public final Artifact.DerivedArtifact getRelatedArtifact(
+ PathFragment pathFragment, String extension) {
PathFragment file = FileSystemUtils.replaceExtension(pathFragment, extension);
return getDerivedArtifact(file, getConfiguration().getBinDirectory(rule.getRepository()));
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelper.java b/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelper.java
index ff15303..4f1d5c5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelper.java
@@ -156,7 +156,7 @@
}
static void addArtifactsWithOwnerLabel(
- Iterable<Artifact> artifacts,
+ Iterable<? extends Artifact> artifacts,
@Nullable RegexFilter filter,
Label ownerLabel,
ArtifactsToOwnerLabels.Builder artifactsToOwnerLabelsBuilder) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java
index 92d25f7..c9e600b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java
@@ -63,7 +63,7 @@
* thus ensuring that it doesn't clash with other artifacts generated by other rules using this
* method.
*/
- Artifact getDerivedArtifact(PathFragment rootRelativePath, ArtifactRoot root);
+ Artifact.DerivedArtifact getDerivedArtifact(PathFragment rootRelativePath, ArtifactRoot root);
/**
* Creates a TreeArtifact under a given root with the given root-relative path.
@@ -94,7 +94,7 @@
* Returns an artifact with a given file extension. All other path components are the same as in
* {@code pathFragment}.
*/
- Artifact getRelatedArtifact(PathFragment pathFragment, String extension);
+ Artifact.DerivedArtifact getRelatedArtifact(PathFragment pathFragment, String extension);
/**
* Creates an artifact in a directory that is unique to the rule, thus guaranteeing that it never
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
index 4c33832..fcc15da 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
@@ -191,7 +191,7 @@
ActionOwner owner,
Iterable<Artifact> tools,
Iterable<Artifact> inputs,
- Iterable<Artifact> outputs,
+ Iterable<? extends Artifact> outputs,
Artifact primaryOutput,
ResourceSet resourceSet,
CommandLines commandLines,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
index 7f7396b..4762ba7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
@@ -67,7 +67,7 @@
ExtraAction(
ImmutableSet<Artifact> extraActionInputs,
RunfilesSupplier runfilesSupplier,
- Collection<Artifact> outputs,
+ Collection<Artifact.DerivedArtifact> outputs,
Action shadowedAction,
boolean createDummyOutput,
CommandLine argv,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionSpec.java b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionSpec.java
index 9e4cdd2..5c17eff 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionSpec.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraActionSpec.java
@@ -78,12 +78,11 @@
return label;
}
- /**
- * Adds an extra_action to the action graph based on the action to shadow.
- */
- public Collection<Artifact> addExtraAction(RuleContext owningRule, Action actionToShadow) {
- Collection<Artifact> extraActionOutputs = new LinkedHashSet<>();
- Collection<Artifact> protoOutputs = new ArrayList<>();
+ /** Adds an extra_action to the action graph based on the action to shadow. */
+ public Collection<Artifact.DerivedArtifact> addExtraAction(
+ RuleContext owningRule, Action actionToShadow) {
+ Collection<Artifact.DerivedArtifact> extraActionOutputs = new LinkedHashSet<>();
+ Collection<Artifact.DerivedArtifact> protoOutputs = new ArrayList<>();
NestedSetBuilder<Artifact> extraActionInputs = NestedSetBuilder.stableOrder();
Label ownerLabel = owningRule.getLabel();
@@ -111,8 +110,8 @@
// We generate a file containing a protocol buffer describing the action that is being shadowed.
// It is up to each action being shadowed to decide what contents to store here.
- Artifact extraActionInfoFile = getExtraActionOutputArtifact(
- owningRule, actionToShadow, "$(ACTION_ID).xa");
+ Artifact.DerivedArtifact extraActionInfoFile =
+ getExtraActionOutputArtifact(owningRule, actionToShadow, "$(ACTION_ID).xa");
owningRule.registerAction(new ExtraActionInfoFileWriteAction(
actionToShadow.getOwner(), extraActionInfoFile, actionToShadow));
extraActionInputs.add(extraActionInfoFile);
@@ -152,7 +151,10 @@
commandMessage,
label.getName()));
- return ImmutableSet.<Artifact>builder().addAll(extraActionOutputs).addAll(protoOutputs).build();
+ return ImmutableSet.<Artifact.DerivedArtifact>builder()
+ .addAll(extraActionOutputs)
+ .addAll(protoOutputs)
+ .build();
}
/**
@@ -177,22 +179,19 @@
}
/**
- * Creates an output artifact for the extra_action based on the output_template.
- * The path will be in the following form:
- * <output dir>/<target-configuration-specific-path>/extra_actions/<extra_action_label>/ +
- * <configured_target_label>/<expanded_template>
+ * Creates an output artifact for the extra_action based on the output_template. The path will be
+ * in the following form: <output
+ * dir>/<target-configuration-specific-path>/extra_actions/<extra_action_label>/ +
+ * <configured_target_label>/<expanded_template>
*
- * The template can use the following variables:
- * $(ACTION_ID): a unique id for the extra_action.
+ * <p>The template can use the following variables: $(ACTION_ID): a unique id for the
+ * extra_action.
*
- * Sample:
- * extra_action: foo/bar:extra
- * template: $(ACTION_ID).analysis
- * target: foo/bar:main
- * expands to: output/configuration/extra_actions/\
- * foo/bar/extra/foo/bar/4683026f7ac1dd1a873ccc8c3d764132.analysis
+ * <p>Sample: extra_action: foo/bar:extra template: $(ACTION_ID).analysis target: foo/bar:main
+ * expands to: output/configuration/extra_actions/\
+ * foo/bar/extra/foo/bar/4683026f7ac1dd1a873ccc8c3d764132.analysis
*/
- private Artifact getExtraActionOutputArtifact(
+ private Artifact.DerivedArtifact getExtraActionOutputArtifact(
RuleContext ruleContext, Action action, String template) {
String actionId =
getActionId(ruleContext.getActionKeyContext(), ruleContext.getActionOwner(), action);
@@ -203,7 +202,7 @@
return getRootRelativePath(template, ruleContext);
}
- private Artifact getRootRelativePath(String template, RuleContext ruleContext) {
+ private Artifact.DerivedArtifact getRootRelativePath(String template, RuleContext ruleContext) {
PathFragment extraActionPackageFragment = label.getPackageIdentifier().getSourceRoot();
PathFragment extraActionPrefix = extraActionPackageFragment.getRelative(label.getName());
PathFragment rootRelativePath = PathFragment.create("extra_actions")
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
index 35d4bbe..df30e48 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
@@ -22,9 +22,9 @@
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
+import com.google.devtools.build.lib.actions.ActionLookupValue;
import com.google.devtools.build.lib.actions.ActionRegistry;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.actions.ArtifactOwner;
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.actions.CommandLine;
import com.google.devtools.build.lib.actions.CommandLineExpansionException;
@@ -117,7 +117,7 @@
}
@Override
- public ArtifactOwner getOwner() {
+ public ActionLookupValue.ActionLookupKey getOwner() {
return skylarkActionFactory
.getActionConstructionContext()
.getAnalysisEnvironment()
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 6e5a58e..c702722 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
@@ -321,7 +321,8 @@
Iterable<Artifact> inputs = inputsBuilder.build();
int shardRuns = (shards > 0 ? shards : 1);
- List<Artifact> results = Lists.newArrayListWithCapacity(runsPerTest * shardRuns);
+ List<Artifact.DerivedArtifact> results =
+ Lists.newArrayListWithCapacity(runsPerTest * shardRuns);
ImmutableList.Builder<Artifact> coverageArtifacts = ImmutableList.builder();
for (int run = 0; run < runsPerTest; run++) {
@@ -337,14 +338,14 @@
testRunDir += PathFragment.SEPARATOR_CHAR;
shardRunDir = shardRunDir.isEmpty() ? testRunDir : shardRunDir + "_" + testRunDir;
}
- Artifact testLog =
+ Artifact.DerivedArtifact testLog =
ruleContext.getPackageRelativeArtifact(
targetName.getRelative(shardRunDir + "test.log"), root);
- Artifact cacheStatus =
+ Artifact.DerivedArtifact cacheStatus =
ruleContext.getPackageRelativeArtifact(
targetName.getRelative(shardRunDir + "test.cache_status"), root);
- Artifact coverageArtifact = null;
+ Artifact.DerivedArtifact coverageArtifact = null;
if (collectCodeCoverage) {
coverageArtifact = ruleContext.getPackageRelativeArtifact(
targetName.getRelative(shardRunDir + "coverage.dat"), root);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestProvider.java
index f356deb..cc64055 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestProvider.java
@@ -58,7 +58,8 @@
* @param target the configured target. Should belong to a test rule.
* @return the test status artifacts
*/
- public static ImmutableList<Artifact> getTestStatusArtifacts(TransitiveInfoCollection target) {
+ public static ImmutableList<Artifact.DerivedArtifact> getTestStatusArtifacts(
+ TransitiveInfoCollection target) {
return target.getProvider(TestProvider.class).getTestParams().getTestStatusArtifacts();
}
@@ -70,16 +71,20 @@
private final int shards;
private final TestTimeout timeout;
private final String testRuleClass;
- private final ImmutableList<Artifact> testStatusArtifacts;
+ private final ImmutableList<Artifact.DerivedArtifact> testStatusArtifacts;
private final ImmutableList<Artifact> coverageArtifacts;
private final FilesToRunProvider coverageReportGenerator;
/**
- * Don't call this directly. Instead use
- * {@link com.google.devtools.build.lib.analysis.test.TestActionBuilder}.
+ * Don't call this directly. Instead use {@link
+ * com.google.devtools.build.lib.analysis.test.TestActionBuilder}.
*/
- TestParams(int runs, int shards, TestTimeout timeout, String testRuleClass,
- ImmutableList<Artifact> testStatusArtifacts,
+ TestParams(
+ int runs,
+ int shards,
+ TestTimeout timeout,
+ String testRuleClass,
+ ImmutableList<Artifact.DerivedArtifact> testStatusArtifacts,
ImmutableList<Artifact> coverageArtifacts,
FilesToRunProvider coverageReportGenerator) {
this.runs = runs;
@@ -123,7 +128,7 @@
* Returns a list of test status artifacts that represent serialized test status protobuffers
* produced by testing this target.
*/
- public ImmutableList<Artifact> getTestStatusArtifacts() {
+ public ImmutableList<Artifact.DerivedArtifact> getTestStatusArtifacts() {
return testStatusArtifacts;
}