From 24f4ab06be65db13036d0353771e20c470f25f1a Mon Sep 17 00:00:00 2001 From: Googler Date: Fri, 27 Apr 2018 04:46:25 -0700 Subject: Add --experimental_use_late_bound_option_defauts flag to toggle usage of late bound option defaults BuildConfiguration.Fragment#lateBoundOptionDefaults() is going away soon, this flag is added to decouple its removal with the release process. PiperOrigin-RevId: 194527657 --- .../lib/analysis/config/BuildConfiguration.java | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java index 9c33df8865..777bfc9579 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java @@ -910,6 +910,16 @@ public class BuildConfiguration { NOTRIM, } + @Option( + name = "experimental_use_late_bound_option_defaults", + defaultValue = "true", + documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, + effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS, OptionEffectTag.AFFECTS_OUTPUTS}, + help = + "Allow using late bound option defaults. The purpose of this option is to help with " + + "removal of late bound option defaults.") + public boolean useLateBoundOptionDefaults; + /** * Converter for --experimental_dynamic_configs. */ @@ -1310,7 +1320,8 @@ public class BuildConfiguration { this.testTimeout = ImmutableMap.copyOf(options.testTimeout); - this.transitiveOptionDetails = computeOptionsMap(buildOptions, fragments.values()); + this.transitiveOptionDetails = + computeOptionsMap(buildOptions, fragments.values(), options.useLateBoundOptionDefaults); ImmutableMap.Builder globalMakeEnvBuilder = ImmutableMap.builder(); for (Fragment fragment : fragments.values()) { @@ -1410,12 +1421,14 @@ public class BuildConfiguration { /** Computes and returns the {@link TransitiveOptionDetails} for this configuration. */ private static TransitiveOptionDetails computeOptionsMap( - BuildOptions buildOptions, Iterable fragments) { + BuildOptions buildOptions, Iterable fragments, boolean useLateBoundOptionDefaults) { // Collect from our fragments "alternative defaults" for options where the default // should be something other than what's specified in Option.defaultValue. Map lateBoundDefaults = Maps.newHashMap(); - for (Fragment fragment : fragments) { - lateBoundDefaults.putAll(fragment.lateBoundOptionDefaults()); + if (useLateBoundOptionDefaults) { + for (Fragment fragment : fragments) { + lateBoundDefaults.putAll(fragment.lateBoundOptionDefaults()); + } } return TransitiveOptionDetails.forOptionsWithDefaults( -- cgit v1.2.3