diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java | 35 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java | 2 |
2 files changed, 22 insertions, 15 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) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java index 7a36d4db27..8b093d5ef0 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java @@ -932,8 +932,6 @@ public final class Runfiles { if (runfilesSupport == null) { return this; } - // TODO(bazel-team): We may be able to remove this now. - addArtifact(runfilesSupport.getRunfilesMiddleman()); merge(runfilesSupport.getRunfiles()); return this; } |