diff options
author | 2016-11-13 12:22:30 +0000 | |
---|---|---|
committer | 2016-11-14 14:59:48 +0000 | |
commit | 9a796de5c7b881d48b42101a22afb734397aadae (patch) | |
tree | 01f54cbf030c47893abdfc20d7e68e039ee18629 /src/main/java/com/google/devtools/build/lib | |
parent | cecd5f41d70d96a54b26330f25ef6c24d2d67ff6 (diff) |
Add an escape hatch to quickly disable --experimental_extra_action_top_level_only for Aspects.
--
MOS_MIGRATED_REVID=139003012
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/BuildView.java | 44 |
1 files changed, 30 insertions, 14 deletions
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 f90123dbc4..5f03ec2fe0 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 @@ -187,6 +187,18 @@ public class BuildView { help = "Only schedules extra_actions for top level targets.") public boolean extraActionTopLevelOnly; + @Option( + name = "experimental_extra_action_top_level_only_with_aspects", + defaultValue = "true", + category = "experimental", + help = + "If true and --experimental_extra_action_top_level_only=true, will include actions " + + "from aspects injected by top-level rules. " + + "This is an escape hatch in case commit df9e5e16c370391098c4432779ad4d1c9dd693ca " + + "breaks something." + ) + public boolean extraActionTopLevelOnlyWithAspects; + @Option(name = "version_window_for_dirty_node_gc", defaultValue = "0", category = "undocumented", @@ -656,22 +668,26 @@ public class BuildView { target.getProvider(ExtraActionArtifactsProvider.class); if (provider != null) { if (viewOptions.extraActionTopLevelOnly) { - // Collect all aspect-classes that topLevel might inject. - Set<AspectClass> aspectClasses = new HashSet<>(); - for (Attribute attr : target.getTarget().getAssociatedRule().getAttributes()) { - aspectClasses.addAll(attr.getAspectClasses()); - } - - Iterable<Artifact> artifacts; - if (aspectClasses.isEmpty()) { - artifacts = provider.getExtraActionArtifacts(); + if (!viewOptions.extraActionTopLevelOnlyWithAspects) { + builder.add(ExtraArtifactSet.of(target.getLabel(), provider.getExtraActionArtifacts())); } else { - ImmutableList.Builder<Artifact> artifactBuilder = ImmutableList.builder(); - artifactBuilder.addAll(provider.getExtraActionArtifacts()); - artifactBuilder.addAll(filterTransitiveExtraActions(provider, aspectClasses)); - artifacts = artifactBuilder.build(); + // Collect all aspect-classes that topLevel might inject. + Set<AspectClass> aspectClasses = new HashSet<>(); + for (Attribute attr : target.getTarget().getAssociatedRule().getAttributes()) { + aspectClasses.addAll(attr.getAspectClasses()); + } + + Iterable<Artifact> artifacts; + if (aspectClasses.isEmpty()) { + artifacts = provider.getExtraActionArtifacts(); + } else { + ImmutableList.Builder<Artifact> artifactBuilder = ImmutableList.builder(); + artifactBuilder.addAll(provider.getExtraActionArtifacts()); + artifactBuilder.addAll(filterTransitiveExtraActions(provider, aspectClasses)); + artifacts = artifactBuilder.build(); + } + builder.add(ExtraArtifactSet.of(target.getLabel(), artifacts)); } - builder.add(ExtraArtifactSet.of(target.getLabel(), artifacts)); } else { builder.addTransitive(provider.getTransitiveExtraActionArtifacts()); } |