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));
     }
   }