aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java35
1 files changed, 22 insertions, 13 deletions
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 7522d099b5..9fafbe9dcc 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
@@ -64,6 +64,8 @@ public final class RuleConfiguredTargetBuilder {
/** These are supported by all configured targets and need to be specially handled. */
private NestedSet<Artifact> filesToBuild = NestedSetBuilder.emptySet(Order.STABLE_ORDER);
+
+ private NestedSetBuilder<Artifact> filesToRunBuilder = NestedSetBuilder.stableOrder();
private RunfilesSupport runfilesSupport;
private Artifact executable;
private ImmutableSet<ActionAnalysisMetadata> actionsWithoutExtraAction = ImmutableSet.of();
@@ -85,8 +87,9 @@ public final class RuleConfiguredTargetBuilder {
return null;
}
- FilesToRunProvider filesToRunProvider = new FilesToRunProvider(
- getFilesToRun(runfilesSupport, filesToBuild), runfilesSupport, executable);
+ FilesToRunProvider filesToRunProvider =
+ new FilesToRunProvider(
+ buildFilesToRun(runfilesSupport, filesToBuild), runfilesSupport, executable);
addProvider(new FileProvider(filesToBuild));
addProvider(filesToRunProvider);
@@ -136,21 +139,18 @@ public final class RuleConfiguredTargetBuilder {
return new RuleConfiguredTarget(ruleContext, providers);
}
-
/**
- * Like getFilesToBuild(), except that it also includes the runfiles middleman, if any. Middlemen
- * are expanded in the SpawnStrategy or by the Distributor.
+ * Compute the artifacts to put into the {@link FilesToRunProvider} for this target. These are the
+ * filesToBuild, any artifacts added by the rule with {@link #addFilesToRun}, and the runfiles
+ * middleman if it exists.
*/
- private NestedSet<Artifact> getFilesToRun(
+ private NestedSet<Artifact> buildFilesToRun(
RunfilesSupport runfilesSupport, NestedSet<Artifact> filesToBuild) {
- if (runfilesSupport == null) {
- return filesToBuild;
- } else {
- NestedSetBuilder<Artifact> allFilesToBuild = NestedSetBuilder.stableOrder();
- allFilesToBuild.addTransitive(filesToBuild);
- allFilesToBuild.add(runfilesSupport.getRunfilesMiddleman());
- return allFilesToBuild.build();
+ filesToRunBuilder.addTransitive(filesToBuild);
+ if (runfilesSupport != null) {
+ filesToRunBuilder.add(runfilesSupport.getRunfilesMiddleman());
}
+ return filesToRunBuilder.build();
}
/**
@@ -209,6 +209,15 @@ public final class RuleConfiguredTargetBuilder {
return new TestProvider(testParams, testTags);
}
+ /**
+ * Add files required to run the target. Artifacts from {@link #setFilesToBuild} and the runfiles
+ * middleman, if any, are added automatically.
+ */
+ public RuleConfiguredTargetBuilder addFilesToRun(NestedSet<Artifact> files) {
+ filesToRunBuilder.addTransitive(files);
+ return this;
+ }
+
/** Add a specific provider. */
public <T extends TransitiveInfoProvider> RuleConfiguredTargetBuilder addProvider(
TransitiveInfoProvider provider) {