$ blaze cquery --show_config_fragments: include aspects
Aspects can add new rule dependencies via implicit label
attributes (see
https://docs.bazel.build/versions/2.0.0/skylark/aspects.html#aspect-definition-1).
We need to make sure these are included in whatever the rule the aspect
attaches to.
Note that *native* aspects can also declare *direct* fragment dependencies (
Starlark aspects can't). This change doesn't handle that. TBD.
Supports https://github.com/bazelbuild/bazel/issues/10613.
PiperOrigin-RevId: 293669124
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 0e07c6d..696e930 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
@@ -26,6 +26,8 @@
import com.google.devtools.build.lib.actions.Actions.GeneratingActions;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
+import com.google.devtools.build.lib.analysis.config.CoreOptions;
+import com.google.devtools.build.lib.analysis.config.CoreOptions.IncludeConfigFragmentsEnum;
import com.google.devtools.build.lib.analysis.skylark.SkylarkApiProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -281,6 +283,18 @@
ruleContext.getOwner(),
/*outputFiles=*/ null);
+ if (ruleContext
+ .getConfiguration()
+ .getOptions()
+ .get(CoreOptions.class)
+ .includeRequiredConfigFragmentsProvider
+ != IncludeConfigFragmentsEnum.OFF) {
+ // This guarantees aspects pass through the requirements of their dependencies. But native
+ // aspects can also declare direct requirements.
+ // TODO(gregce): support native aspect direct requirements.
+ addProvider(new RequiredConfigFragmentsProvider(ruleContext.getRequiredConfigFragments()));
+ }
+
return new ConfiguredAspect(
descriptor,
generatingActions.getActions(),