Add getExec method to FragmentOptions.
This acts similarly to getHost, except:
1. It is intended to generate options for the exec transition, and
2. The default is to clone the options, not start with defaults.
Part of work on execution transitions, #7935.
PiperOrigin-RevId: 245418547
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
index ad6bf3c..c1b0945 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
@@ -95,6 +95,15 @@
return builder.addStarlarkOptions(skylarkOptionsMap).build();
}
+ /** Creates a new BuildOptions instance for exec. */
+ public BuildOptions createExecOptions() {
+ Builder builder = builder();
+ for (FragmentOptions options : fragmentOptionsMap.values()) {
+ builder.addFragmentOptions(options.getExec());
+ }
+ return builder.addStarlarkOptions(skylarkOptionsMap).build();
+ }
+
/**
* Returns {@code BuildOptions} that are otherwise identical to this one, but contain only options
* from the given {@link FragmentOptions} classes (plus build configuration options).
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java
index 2ff277d..815effc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentOptions.java
@@ -47,12 +47,19 @@
* Creates a new instance of this {@code FragmentOptions} with all flags adjusted as needed to
* represent the host platform.
*/
- @SuppressWarnings("unused")
public FragmentOptions getHost() {
return getDefault();
}
/**
+ * Creates a new instance of this {@code FragmentOptions} with all flags adjusted as needed to
+ * represent the execution platform.
+ */
+ public FragmentOptions getExec() {
+ return clone();
+ }
+
+ /**
* Returns an instance of {@code FragmentOptions} with all flags adjusted to be suitable for
* forming configurations.
*