diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelper.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelper.java | 55 |
1 files changed, 19 insertions, 36 deletions
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 e5aefd07ab..d7c9a8a807 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 @@ -23,6 +23,8 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.rules.test.TestProvider; import com.google.devtools.build.lib.skyframe.AspectValue; +import javax.annotation.Nullable; + /** * A small static class containing utility methods for handling the inclusion of * extra top-level artifacts into the build. @@ -123,53 +125,34 @@ public final class TopLevelArtifactHelper { */ public static ArtifactsToBuild getAllArtifactsToBuild(TransitiveInfoCollection target, TopLevelArtifactContext context) { - NestedSetBuilder<Artifact> importantBuilder = NestedSetBuilder.stableOrder(); - NestedSetBuilder<Artifact> allBuilder = NestedSetBuilder.stableOrder(); - - OutputGroupProvider outputGroupProvider = - target.getProvider(OutputGroupProvider.class); - - for (String outputGroup : context.outputGroups()) { - NestedSetBuilder<Artifact> results = NestedSetBuilder.stableOrder(); - - if (outputGroup.equals(OutputGroupProvider.DEFAULT)) { - // For the default group, we also throw in filesToBuild - FileProvider fileProvider = target.getProvider(FileProvider.class); - if (fileProvider != null) { - results.addTransitive(fileProvider.getFilesToBuild()); - } - } - - if (outputGroupProvider != null) { - results.addTransitive(outputGroupProvider.getOutputGroup(outputGroup)); - } - - if (outputGroup.startsWith(OutputGroupProvider.HIDDEN_OUTPUT_GROUP_PREFIX)) { - allBuilder.addTransitive(results.build()); - } else { - importantBuilder.addTransitive(results.build()); - } - } - - NestedSet<Artifact> importantArtifacts = importantBuilder.build(); - allBuilder.addTransitive(importantArtifacts); - return new ArtifactsToBuild(importantArtifacts, allBuilder.build()); + return getAllArtifactsToBuild( + target.getProvider(OutputGroupProvider.class), + target.getProvider(FileProvider.class), + context + ); } public static ArtifactsToBuild getAllArtifactsToBuild( AspectValue aspectValue, TopLevelArtifactContext context) { + Aspect aspect = aspectValue.getAspect(); + return getAllArtifactsToBuild( + aspect.getProvider(OutputGroupProvider.class), + aspect.getProvider(FileProvider.class), + context + ); + } + + public static ArtifactsToBuild getAllArtifactsToBuild( + @Nullable OutputGroupProvider outputGroupProvider, + @Nullable FileProvider fileProvider, + TopLevelArtifactContext context) { NestedSetBuilder<Artifact> importantBuilder = NestedSetBuilder.stableOrder(); NestedSetBuilder<Artifact> allBuilder = NestedSetBuilder.stableOrder(); - OutputGroupProvider outputGroupProvider = - aspectValue.getAspect().getProvider(OutputGroupProvider.class); - for (String outputGroup : context.outputGroups()) { NestedSetBuilder<Artifact> results = NestedSetBuilder.stableOrder(); if (outputGroup.equals(OutputGroupProvider.DEFAULT)) { - // For the default group, we also throw in filesToBuild - FileProvider fileProvider = aspectValue.getAspect().getProvider(FileProvider.class); if (fileProvider != null) { results.addTransitive(fileProvider.getFilesToBuild()); } |