diff options
author | Greg Estren <gregce@google.com> | 2016-12-02 19:28:36 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-12-05 10:19:47 +0000 |
commit | 5f95b858e3737fbbc28eed0bb6f67b79a22d4ff1 (patch) | |
tree | 3ec48bd3cddb23e39ce18acae3a956d776c10cbc /src/main | |
parent | 7a668370e350f602ec863eb4169729885e1c7c93 (diff) |
Make a rogue test case honor --experimental_dynamic_configs=notrim_partial like everywhere else.
Unfortunately this doesn't use ConfiguredRuleClassProvider to prepare its configuration's BuildOptions like every other code path does.
--
PiperOrigin-RevId: 140873428
MOS_MIGRATED_REVID=140873428
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java | 13 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java | 19 |
2 files changed, 21 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java index 0bab371346..568e773d81 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java @@ -703,22 +703,13 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { * Creates a BuildOptions class for the given options taken from an optionsProvider. */ public BuildOptions createBuildOptions(OptionsClassProvider optionsProvider) { - BuildOptions buildOptions = BuildOptions.of(configurationOptions, optionsProvider); // Possibly disable dynamic configurations if they won't work with this build. It's // best to do this as early in the build as possible, because as the build goes on the number // of BuildOptions references grows and the more dangerous it becomes to modify them. We do // this here instead of in BlazeRuntime because tests and production logic don't use // BlazeRuntime the same way. - if (buildOptions.useStaticConfigurationsOverride() - && buildOptions.get(BuildConfiguration.Options.class).useDynamicConfigurations - == BuildConfiguration.Options.DynamicConfigsMode.NOTRIM_PARTIAL) { - // It's not, generally speaking, safe to mutate BuildOptions instances when the original - // reference might persist. - buildOptions = buildOptions.clone(); - buildOptions.get(BuildConfiguration.Options.class).useDynamicConfigurations = - BuildConfiguration.Options.DynamicConfigsMode.OFF; - } - return buildOptions; + return BuildOptions.applyStaticConfigOverride( + BuildOptions.of(configurationOptions, optionsProvider)); } private Environment.Frame createGlobals( 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 4fdae568b1..f32977e69e 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 @@ -149,6 +149,25 @@ public final class BuildOptions implements Cloneable, Serializable { } /** + * Returns a cloned instance that disables dynamic configurations if both + * {@link BuildConfiguration.Options.DynamicConfigsMode} is {@code NOTRIM_PARTIAL} and + * {@link #useStaticConfigurationsOverride()} is true. Otherwise it returns the input + * instance unchanged. + */ + public static BuildOptions applyStaticConfigOverride(BuildOptions buildOptions) { + if (buildOptions.useStaticConfigurationsOverride() + && buildOptions.get(BuildConfiguration.Options.class).useDynamicConfigurations + == BuildConfiguration.Options.DynamicConfigsMode.NOTRIM_PARTIAL) { + // It's not, generally speaking, safe to mutate BuildOptions instances when the original + // reference might persist. + buildOptions = buildOptions.clone(); + buildOptions.get(BuildConfiguration.Options.class).useDynamicConfigurations = + BuildConfiguration.Options.DynamicConfigsMode.OFF; + } + return buildOptions; + } + + /** * Returns the actual instance of a FragmentOptions class. */ public <T extends FragmentOptions> T get(Class<T> optionsClass) { |