Emit extra-actions for actions registered by Aspects.
A prerequisite is to pass RuleContext to ConfiguredAspect, so we can read from it the registered actions when we build() the aspect.
--
MOS_MIGRATED_REVID=107997593
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
index d5ef9e8..8ffb94d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
@@ -14,10 +14,14 @@
package com.google.devtools.build.lib.analysis;
+import static com.google.devtools.build.lib.analysis.ExtraActionUtils.createExtraActionProvider;
+
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.UnmodifiableIterator;
+import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -93,9 +97,11 @@
private final ImmutableMap.Builder<String, Object> skylarkProviderBuilder =
ImmutableMap.builder();
private final String name;
+ private final RuleContext ruleContext;
- public Builder(String name) {
+ public Builder(String name, RuleContext ruleContext) {
this.name = name;
+ this.ruleContext = ruleContext;
}
/**
@@ -159,6 +165,10 @@
providers.put(SkylarkProviders.class, new SkylarkProviders(skylarkProvidersMap));
}
+ addProvider(createExtraActionProvider(
+ ImmutableSet.<Action>of() /* actionsWithoutExtraAction */,
+ ruleContext));
+
return new ConfiguredAspect(name, ImmutableMap.copyOf(providers));
}
}