Build a `RequiredConfigFragmentsProvider` directly from the builder.
PiperOrigin-RevId: 391794612
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index e70669e..b6b9d63 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -1312,14 +1312,9 @@
return constraintSemantics;
}
- /**
- * Returns the configuration fragments this rule uses.
- *
- * <p>Returned results are alphabetically ordered.
- */
- public ImmutableSortedSet<String> getRequiredConfigFragments() {
- ImmutableSortedSet.Builder<String> ans = ImmutableSortedSet.naturalOrder();
- ans.addAll(requiredConfigFragments.getRequiredConfigFragments());
+ /** Returns the configuration fragments this rule uses. */
+ public RequiredConfigFragmentsProvider getRequiredConfigFragments() {
+ RequiredConfigFragmentsProvider.Builder merged = null;
for (Expander makeVariableExpander : makeVariableExpanders) {
for (String makeVariable : makeVariableExpander.lookedUpVariables()) {
// User-defined make values may be set either in "--define foo=bar" or in a vardef in the
@@ -1327,11 +1322,14 @@
// "--define foo=bar" impacts the rule's output.
if (rule.getPackage().getMakeEnvironment().containsKey(makeVariable)
|| getConfiguration().getCommandLineBuildVariables().containsKey(makeVariable)) {
- ans.add("--define:" + makeVariable);
+ if (merged == null) {
+ merged = RequiredConfigFragmentsProvider.builder().merge(requiredConfigFragments);
+ }
+ merged.addDefine(makeVariable);
}
}
}
- return ans.build();
+ return merged == null ? requiredConfigFragments : merged.build();
}
private void checkAttributeIsDependency(String attributeName) {