Introduce configuration transition fragment declarations.
See https://github.com/bazelbuild/bazel/issues/11258 for context.
This essentially converts ConfigurationTransition.apply(BuildOptions...)
to ConfigurationTransition.apply(RestrictedBuildOptions...). The new
BuildOptionsView wraps BuildOptions while only allowing access
to options fragments the transitions declare.
Because there are a *lot* of uses of PatchTransition and SplitTransition,
this change only adds a parallel interface to PatchTransition.patch and
SplitTransition.split. Implementers continue to work as-is with the
BuildOptions variant, while we can incrementally switch them over to
the RestrictedBuildOptions variant at whatever pace we desire.
This helps decouple risk of failing CI if/when we accidentally forget
to migrate a few implementers or get their set of declared fragments wrong.
This implements step 1 of https://github.com/bazelbuild/bazel/issues/11258.
PiperOrigin-RevId: 312311815
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
index d22f09e..0fa4dad 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
@@ -1468,7 +1468,10 @@
java_library(
name = "config/build_options",
- srcs = ["config/BuildOptions.java"],
+ srcs = [
+ "config/BuildOptions.java",
+ "config/BuildOptionsView.java",
+ ],
deps = [
":config/fragment_options",
"//src/main/java/com/google/devtools/build/lib/cmdline",
@@ -1625,11 +1628,13 @@
deps = [
":config/build_options",
":config/core_options",
+ ":config/fragment_options",
":config/transitions/patch_transition",
":config/transitions/transition_factory",
"//src/main/java/com/google/devtools/build/lib/events",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//third_party:auto_value",
+ "//third_party:guava",
],
)
@@ -1720,6 +1725,7 @@
srcs = ["config/transitions/ComposingTransition.java"],
deps = [
":config/build_options",
+ ":config/fragment_options",
":config/transitions/configuration_transition",
":config/transitions/no_transition",
":config/transitions/null_transition",
@@ -1745,10 +1751,15 @@
java_library(
name = "config/transitions/configuration_transition",
- srcs = ["config/transitions/ConfigurationTransition.java"],
+ srcs = [
+ "config/transitions/ConfigurationTransition.java",
+ "config/transitions/TransitionUtil.java",
+ ],
deps = [
":config/build_options",
+ ":config/fragment_options",
"//src/main/java/com/google/devtools/build/lib/events",
+ "//third_party:guava",
],
)
@@ -2190,6 +2201,7 @@
srcs = ["test/TestTrimmingTransitionFactory.java"],
deps = [
":config/build_options",
+ ":config/fragment_options",
":config/transitions/no_transition",
":config/transitions/patch_transition",
":config/transitions/transition_factory",