Report fragments Starlark transitions use.
Also add some straggler native transitions.
With all transitions converted, also remove legacy
PatchTransition.patch(BuildOptions) and
SplitTransition.split(BuildOptions).
In service of https://github.com/bazelbuild/bazel/issues/11258.
PiperOrigin-RevId: 317383960
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java b/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
index 47f1fcb..077af5b 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
@@ -23,9 +23,12 @@
import static org.junit.Assert.assertThrows;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.analysis.config.BuildOptionsView;
import com.google.devtools.build.lib.analysis.config.CoreOptions;
+import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition;
import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
@@ -268,17 +271,24 @@
@Override
public SplitTransition create(AttributeTransitionData data) {
return new SplitTransition() {
+
+ @Override
+ public ImmutableSet<Class<? extends FragmentOptions>>
+ requiresOptionFragments() {
+ return ImmutableSet.of(CoreOptions.class);
+ }
+
@Override
public Map<String, BuildOptions> split(
- BuildOptions options, EventHandler eventHandler) {
+ BuildOptionsView options, EventHandler eventHandler) {
String define = data.attributes().get("define", STRING);
- BuildOptions newOptions = options.clone();
+ BuildOptionsView newOptions = options.clone();
CoreOptions optionsFragment = newOptions.get(CoreOptions.class);
optionsFragment.commandLineBuildVariables =
optionsFragment.commandLineBuildVariables.stream()
.filter((pair) -> !pair.getKey().equals(define))
.collect(toImmutableList());
- return ImmutableMap.of("define_cleaner", newOptions);
+ return ImmutableMap.of("define_cleaner", newOptions.underlying());
}
};
}