aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Carmi Grushko <carmi@google.com>2016-11-13 12:22:30 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-11-14 14:59:48 +0000
commit9a796de5c7b881d48b42101a22afb734397aadae (patch)
tree01f54cbf030c47893abdfc20d7e68e039ee18629 /src/main/java/com/google
parentcecd5f41d70d96a54b26330f25ef6c24d2d67ff6 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java44
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());
}