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 0cf556a44e14c7..7eef65543dab78 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD +++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD @@ -52,6 +52,7 @@ java_library( ":common_prerequisite_validator", ":config/auto_cpu_converter", ":config/build_configuration", + ":config/build_option_details", ":config/build_options", ":config/build_options_cache", ":config/compilation_mode", @@ -78,7 +79,6 @@ java_library( ":config/transitions/patch_transition", ":config/transitions/split_transition", ":config/transitions/transition_factory", - ":config/transitive_option_details", ":configurations_collector", ":configured_object_value", ":configured_target", @@ -283,6 +283,7 @@ java_library( ":buildinfo/build_info_collection", ":buildinfo/build_info_key", ":config/build_configuration", + ":config/build_option_details", ":config/build_options", ":config/config_conditions", ":config/config_matching_provider", @@ -307,7 +308,6 @@ java_library( ":config/transitions/split_transition", ":config/transitions/starlark_exposed_rule_transition_factory", ":config/transitions/transition_factory", - ":config/transitive_option_details", ":configurations_collector", ":configured_target", ":constraints/constraint_constants", @@ -1517,6 +1517,7 @@ java_library( ], deps = [ ":blaze_directories", + ":config/build_option_details", ":config/build_options", ":config/compilation_mode", ":config/core_options", @@ -1524,7 +1525,6 @@ java_library( ":config/fragment_class_set", ":config/invalid_configuration_exception", ":config/run_under", - ":config/transitive_option_details", ":platform_options", ":starlark/function_transition_util", "//src/main/java/com/google/devtools/build/lib/actions", @@ -1819,8 +1819,8 @@ java_library( ) java_library( - name = "config/transitive_option_details", - srcs = ["config/TransitiveOptionDetails.java"], + name = "config/build_option_details", + srcs = ["config/BuildOptionDetails.java"], deps = [ ":config/fragment_options", "//src/main/java/com/google/devtools/build/lib/cmdline", @@ -1835,11 +1835,11 @@ java_library( name = "config/transitions/composing_transition", srcs = ["config/transitions/ComposingTransition.java"], deps = [ + ":config/build_option_details", ":config/build_options", ":config/transitions/configuration_transition", ":config/transitions/no_transition", ":config/transitions/null_transition", - ":config/transitive_option_details", ":required_config_fragments_provider", "//src/main/java/com/google/devtools/build/lib/events", "//third_party:guava", @@ -1867,9 +1867,9 @@ java_library( "config/transitions/TransitionUtil.java", ], deps = [ + ":config/build_option_details", ":config/build_options", ":config/fragment_options", - ":config/transitive_option_details", ":required_config_fragments_provider", "//src/main/java/com/google/devtools/build/lib/events", "//third_party:guava", diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java index 5f5303120b49f9..91f328245129a0 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java @@ -123,7 +123,7 @@ public interface ActionEnvironmentProvider { private final ImmutableMap commandLineBuildVariables; /** Data for introspecting the options used by this configuration. */ - private final TransitiveOptionDetails transitiveOptionDetails; + private final BuildOptionDetails buildOptionDetails; private final Supplier buildEventSupplier; @@ -199,8 +199,8 @@ public BuildConfigurationValue( this.actionEnv = actionEnvironment; this.testEnv = setupTestEnvironment(); - this.transitiveOptionDetails = - TransitiveOptionDetails.forOptions( + this.buildOptionDetails = + BuildOptionDetails.forOptions( buildOptions.getNativeOptions(), buildOptions.getStarlarkOptions()); // These should be documented in the build encyclopedia. @@ -244,11 +244,9 @@ public BuildConfigurationKey getKey() { return BuildConfigurationKey.withoutPlatformMapping(fragmentClassSet, buildOptions); } - /** - * Retrieves the {@link TransitiveOptionDetails} containing data on this configuration's options. - */ - public TransitiveOptionDetails getTransitiveOptionDetails() { - return transitiveOptionDetails; + /** Retrieves the {@link BuildOptionDetails} containing data on this configuration's options. */ + public BuildOptionDetails getBuildOptionDetails() { + return buildOptionDetails; } /** Returns the output directory for this build configuration. */ diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetails.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetails.java similarity index 82% rename from src/main/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetails.java rename to src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetails.java index e5d401827ef683..129b5d5fc57eaf 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetails.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetails.java @@ -27,34 +27,33 @@ import javax.annotation.Nullable; /** - * Introspector for option details, to be used when {@code select()}-ing over the options. + * Maps build option names as they appear to the user (e.g. {@code compilation_mode}) to structured + * metadata. * - *

For native options, this tracks: + *

For native options ({@code @Option} defined in a {@link FragmentOptions} implementation), this + * tracks: * *

* - *

For Starlark options, this tracks their value in built-in Starlark-object form (post-parse, - * pre-implementation function form). - * - *

This is "transitive" in that it includes *all* options recognizable by a given configuration, - * including those defined in child fragments. + *

For Starlark options (defined in a Starlark {@code build_setting)}, this tracks their value + * in built-in Starlark-object form (post-parse, pre-implementation function form). */ -public final class TransitiveOptionDetails implements Serializable { +public final class BuildOptionDetails { - /** Builds a {@code TransitiveOptionsDetails} for the given set of native options */ + /** Builds a {@code BuildOptionDetails} for the given set of native options */ @VisibleForTesting - static TransitiveOptionDetails forOptionsForTesting( + static BuildOptionDetails forOptionsForTesting( Iterable buildOptions) { return forOptions(buildOptions, ImmutableMap.of()); } - /** Builds a {@code TransitiveOptionDetails} for the given set of native and Starlark options. */ - static TransitiveOptionDetails forOptions( + /** Builds a {@code BuildOptionDetails} for the given set of native and Starlark options. */ + static BuildOptionDetails forOptions( Iterable buildOptions, Map starlarkOptions) { ImmutableMap.Builder map = ImmutableMap.builder(); try { @@ -88,7 +87,7 @@ static TransitiveOptionDetails forOptions( throw new IllegalStateException( "Unexpected illegal access trying to create this configuration's options map: ", e); } - return new TransitiveOptionDetails(map.build(), ImmutableMap.copyOf(starlarkOptions)); + return new BuildOptionDetails(map.build(), ImmutableMap.copyOf(starlarkOptions)); } private static final class OptionDetails implements Serializable { @@ -130,15 +129,15 @@ private OptionDetails( *

  • Parse alternative values for the option. * */ - private final ImmutableMap transitiveNativeOptionsMap; + private final ImmutableMap nativeOptionsMap; /** Maps Starlark option labels to values */ private final ImmutableMap starlarkOptionsMap; - private TransitiveOptionDetails( - ImmutableMap transitiveNativeOptionsMap, + private BuildOptionDetails( + ImmutableMap nativeOptionsMap, ImmutableMap starlarkOptionsMap) { - this.transitiveNativeOptionsMap = transitiveNativeOptionsMap; + this.nativeOptionsMap = nativeOptionsMap; this.starlarkOptionsMap = starlarkOptionsMap; } @@ -151,7 +150,7 @@ private TransitiveOptionDetails( */ @Nullable public Class getOptionClass(String optionName) { - OptionDetails optionDetails = transitiveNativeOptionsMap.get(optionName); + OptionDetails optionDetails = nativeOptionsMap.get(optionName); return optionDetails == null ? null : optionDetails.optionsClass; } @@ -165,7 +164,7 @@ public Class getOptionClass(String optionName) { */ @Nullable public Object getOptionValue(String optionName) { - OptionDetails optionDetails = transitiveNativeOptionsMap.get(optionName); + OptionDetails optionDetails = nativeOptionsMap.get(optionName); return (optionDetails == null) ? null : optionDetails.value; } @@ -184,7 +183,7 @@ public Object getOptionValue(Label optionName) { * to be of type {@code List}. */ public boolean allowsMultipleValues(String optionName) { - OptionDetails optionDetails = transitiveNativeOptionsMap.get(optionName); + OptionDetails optionDetails = nativeOptionsMap.get(optionName); return optionDetails != null && optionDetails.allowsMultiple; } @@ -195,7 +194,7 @@ public boolean allowsMultipleValues(String optionName) { */ @Nullable public SelectRestriction getSelectRestriction(String optionName) { - OptionDetails optionDetails = transitiveNativeOptionsMap.get(optionName); + OptionDetails optionDetails = nativeOptionsMap.get(optionName); return optionDetails == null ? null : optionDetails.selectRestriction; } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java index c863b803d18ef0..cdf4fe200684b2 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java @@ -107,7 +107,7 @@ public static RequiredConfigFragmentsProvider getRuleRequiredFragmentsIfEnabled( .addRuleImplSpecificRequiredConfigFragments(requiredFragments, attributes, configuration); } addRequiredFragmentsFromRuleTransitions( - requiredFragments, target, attributes, configuration.getTransitiveOptionDetails()); + requiredFragments, target, attributes, configuration.getBuildOptionDetails()); // We consider build settings (which are both targets and configuration) to require themselves. if (target.isBuildSetting()) { @@ -157,7 +157,7 @@ public static RequiredConfigFragmentsProvider getAspectRequiredFragmentsIfEnable requiredFragments, aspect, ConfiguredAttributeMapper.of(associatedTarget, configConditions, configuration.checksum()), - configuration.getTransitiveOptionDetails()); + configuration.getBuildOptionDetails()); return requiredFragments.build(); } @@ -212,7 +212,7 @@ private static void addRequiredFragmentsFromRuleTransitions( RequiredConfigFragmentsProvider.Builder requiredFragments, Rule target, ConfiguredAttributeMapper attributeMap, - TransitiveOptionDetails optionDetails) { + BuildOptionDetails optionDetails) { if (target.getRuleClassObject().getTransitionFactory() != null) { target .getRuleClassObject() @@ -245,7 +245,7 @@ private static void addRequiredFragmentsFromAspectTransitions( RequiredConfigFragmentsProvider.Builder requiredFragments, Aspect aspect, ConfiguredAttributeMapper attributeMap, - TransitiveOptionDetails optionDetails) { + BuildOptionDetails optionDetails) { AttributeTransitionData attributeTransitionData = AttributeTransitionData.builder().attributes(attributeMap).build(); for (Attribute attribute : aspect.getDefinition().getAttributes().values()) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingTransition.java index 8dc32bdcd9090b..4dc035a0b2cfc6 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingTransition.java @@ -17,9 +17,9 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.RequiredConfigFragmentsProvider; +import com.google.devtools.build.lib.analysis.config.BuildOptionDetails; 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.TransitiveOptionDetails; import com.google.devtools.build.lib.events.EventHandler; import java.util.Map; import java.util.Objects; @@ -50,8 +50,7 @@ public final class ComposingTransition implements ConfigurationTransition { @Override public void addRequiredFragments( - RequiredConfigFragmentsProvider.Builder requiredFragments, - TransitiveOptionDetails optionDetails) { + RequiredConfigFragmentsProvider.Builder requiredFragments, BuildOptionDetails optionDetails) { // At first glance this code looks wrong. A composing transition applies transition2 over // transition1's outputs, not the original options. We don't have to worry about that here // because the reason we pass the options is so Starlark transitions can map individual flags diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ConfigurationTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ConfigurationTransition.java index 6080002bb64a67..851b2bc510dfa2 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ConfigurationTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ConfigurationTransition.java @@ -16,10 +16,10 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.analysis.RequiredConfigFragmentsProvider; +import com.google.devtools.build.lib.analysis.config.BuildOptionDetails; 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.FragmentOptions; -import com.google.devtools.build.lib.analysis.config.TransitiveOptionDetails; import com.google.devtools.build.lib.events.EventHandler; import java.util.Map; @@ -47,15 +47,14 @@ default ImmutableSet> requiresOptionFragments() * Adds required configuration fragments to the given {@link * RequiredConfigFragmentsProvider.Builder}. * - *

    A {@link TransitiveOptionDetails} instance is provided for Starlark transitions, which need - * to map required options to their {@link FragmentOptions}. + *

    A {@link BuildOptionDetails} instance is provided for Starlark transitions, which need to + * map required options to their {@link FragmentOptions}. * *

    Non-Starlark transitions should override {@link #requiresOptionFragments} and keep the * default implementation of this method. */ default void addRequiredFragments( - RequiredConfigFragmentsProvider.Builder requiredFragments, - TransitiveOptionDetails optionDetails) { + RequiredConfigFragmentsProvider.Builder requiredFragments, BuildOptionDetails optionDetails) { requiredFragments.addOptionsClasses(requiresOptionFragments()); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/FunctionTransitionUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/FunctionTransitionUtil.java index 00428ab466b9c1..b0ce7bc56785e2 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/FunctionTransitionUtil.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/FunctionTransitionUtil.java @@ -87,7 +87,7 @@ static ImmutableMap applyAndValidate( checkForDenylistedOptions(starlarkTransition); // TODO(waltl): Consider building this once and using it across different split transitions, - // or reusing TransitiveOptionDetails. + // or reusing BuildOptionDetails. Map optionInfoMap = buildOptionInfo(buildOptions); Dict settings = buildSettings(buildOptions, optionInfoMap, starlarkTransition); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkTransition.java index 0358e8f714cf71..ebf8f7cd03bb49 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkTransition.java @@ -24,11 +24,11 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.google.devtools.build.lib.analysis.RequiredConfigFragmentsProvider; +import com.google.devtools.build.lib.analysis.config.BuildOptionDetails; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.FragmentOptions; import com.google.devtools.build.lib.analysis.config.StarlarkDefinedConfigTransition; import com.google.devtools.build.lib.analysis.config.StarlarkDefinedConfigTransition.Settings; -import com.google.devtools.build.lib.analysis.config.TransitiveOptionDetails; import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.BuildType.SelectorList; @@ -84,8 +84,7 @@ private ImmutableList getOutputs() { @Override public void addRequiredFragments( - RequiredConfigFragmentsProvider.Builder requiredFragments, - TransitiveOptionDetails optionDetails) { + RequiredConfigFragmentsProvider.Builder requiredFragments, BuildOptionDetails optionDetails) { for (String optionStarlarkName : Iterables.concat(getInputs(), getOutputs())) { if (!optionStarlarkName.startsWith(COMMAND_LINE_OPTION_PREFIX)) { requiredFragments.addStarlarkOption(Label.parseAbsoluteUnchecked(optionStarlarkName)); diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/BUILD b/src/main/java/com/google/devtools/build/lib/rules/config/BUILD index 89b99485ad71e5..5082d064f75d23 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/config/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/config/BUILD @@ -28,6 +28,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster", "//src/main/java/com/google/devtools/build/lib/analysis:build_setting_provider", "//src/main/java/com/google/devtools/build/lib/analysis:config/build_configuration", + "//src/main/java/com/google/devtools/build/lib/analysis:config/build_option_details", "//src/main/java/com/google/devtools/build/lib/analysis:config/build_options", "//src/main/java/com/google/devtools/build/lib/analysis:config/config_matching_provider", "//src/main/java/com/google/devtools/build/lib/analysis:config/core_option_converters", @@ -40,7 +41,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/patch_transition", "//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/starlark_exposed_rule_transition_factory", "//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/transition_factory", - "//src/main/java/com/google/devtools/build/lib/analysis:config/transitive_option_details", "//src/main/java/com/google/devtools/build/lib/analysis:configured_target", "//src/main/java/com/google/devtools/build/lib/analysis:file_provider", "//src/main/java/com/google/devtools/build/lib/analysis:platform_configuration", diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java index 64e0558e5da199..f0816a7c265b16 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java +++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java @@ -42,10 +42,10 @@ import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; +import com.google.devtools.build.lib.analysis.config.BuildOptionDetails; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.FragmentOptions; import com.google.devtools.build.lib.analysis.config.FragmentOptions.SelectRestriction; -import com.google.devtools.build.lib.analysis.config.TransitiveOptionDetails; import com.google.devtools.build.lib.analysis.platform.ConstraintCollection; import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo; import com.google.devtools.build.lib.analysis.platform.PlatformProviderUtils; @@ -108,8 +108,7 @@ public ConfiguredTarget create(RuleContext ruleContext) return null; } - TransitiveOptionDetails optionDetails = - ruleContext.getConfiguration().getTransitiveOptionDetails(); + BuildOptionDetails optionDetails = ruleContext.getConfiguration().getBuildOptionDetails(); boolean nativeFlagsMatch = matchesConfig(nativeFlagSettings.entries(), optionDetails, ruleContext); @@ -158,7 +157,7 @@ public void addRuleImplSpecificRequiredConfigFragments( equalsIndex > 0 ? value.substring(0, equalsIndex) : value); } else { Class optionsClass = - configuration.getTransitiveOptionDetails().getOptionClass(optionName); + configuration.getBuildOptionDetails().getOptionClass(optionName); if (optionsClass != null) { requiredFragments.addOptionsClass(optionsClass); } @@ -277,7 +276,7 @@ private static boolean valuesAreSet( */ private static boolean matchesConfig( Collection> expectedSettings, - TransitiveOptionDetails options, + BuildOptionDetails options, RuleContext ruleContext) { // Rather than returning fast when we find a mismatch, continue looking at the other flags // to check they're indeed valid flag specifications. @@ -353,7 +352,7 @@ private static boolean matchesConfig( * 'foo=1,bar=2' } expands to { "foo": "1,bar=2" }, not {"foo": 1, "bar": "2"}. */ private static boolean optionMatches( - TransitiveOptionDetails options, String optionName, Object expectedValue) { + BuildOptionDetails options, String optionName, Object expectedValue) { Object actualValue = options.getOptionValue(optionName); if (actualValue == null) { return expectedValue == null; @@ -435,7 +434,7 @@ private static ListMultimap collectAliases( */ static UserDefinedFlagMatch fromAttributeValueAndPrerequisites( Map attributeValue, - TransitiveOptionDetails optionDetails, + BuildOptionDetails optionDetails, RuleContext ruleContext) { Map specifiedFlagValues = new LinkedHashMap<>(); boolean matches = true; diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/BUILD index 25de638695e10d..1031ed623e2cdb 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/BUILD +++ b/src/test/java/com/google/devtools/build/lib/analysis/BUILD @@ -61,6 +61,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/analysis:blaze_directories", "//src/main/java/com/google/devtools/build/lib/analysis:build_view", "//src/main/java/com/google/devtools/build/lib/analysis:config/build_configuration", + "//src/main/java/com/google/devtools/build/lib/analysis:config/build_option_details", "//src/main/java/com/google/devtools/build/lib/analysis:config/build_options", "//src/main/java/com/google/devtools/build/lib/analysis:config/build_options_cache", "//src/main/java/com/google/devtools/build/lib/analysis:config/compilation_mode", @@ -84,7 +85,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/patch_transition", "//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/split_transition", "//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/transition_factory", - "//src/main/java/com/google/devtools/build/lib/analysis:config/transitive_option_details", "//src/main/java/com/google/devtools/build/lib/analysis:configured_target", "//src/main/java/com/google/devtools/build/lib/analysis:dependency", "//src/main/java/com/google/devtools/build/lib/analysis:dependency_key", diff --git a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java index 97b107f5e296d6..4ba6086c0ef8b8 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkAttrTransitionProviderTest.java @@ -1981,7 +1981,7 @@ public void starlarkSplitTransitionRequiredFragments() throws Exception { RequiredConfigFragmentsProvider.Builder requiredFragments = RequiredConfigFragmentsProvider.builder(); attrTransition.addRequiredFragments( - requiredFragments, ct.getConfiguration().getTransitiveOptionDetails()); + requiredFragments, ct.getConfiguration().getBuildOptionDetails()); assertThat(requiredFragments.build().getOptionsClasses()).containsExactly(CppOptions.class); } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java index f643dbedc5fdda..60c17901db8d90 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java @@ -1422,7 +1422,7 @@ public void starlarkPatchTransitionRequiredFragments() throws Exception { RequiredConfigFragmentsProvider.Builder requiredFragments = RequiredConfigFragmentsProvider.builder(); ruleTransition.addRequiredFragments( - requiredFragments, ct.getConfiguration().getTransitiveOptionDetails()); + requiredFragments, ct.getConfiguration().getBuildOptionDetails()); assertThat(requiredFragments.build().getOptionsClasses()).containsExactly(CppOptions.class); } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValueTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValueTest.java index 9334314a60ce6b..b7f1c784e31b0e 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValueTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValueTest.java @@ -179,21 +179,21 @@ public void testGlobalMakeVariableOverride() throws Exception { } @Test - public void testGetTransitiveOptionDetails() throws Exception { + public void testGetBuildOptionDetails() throws Exception { // Directly defined options: - assertThat(create("-c", "dbg").getTransitiveOptionDetails().getOptionValue("compilation_mode")) + assertThat(create("-c", "dbg").getBuildOptionDetails().getOptionValue("compilation_mode")) .isEqualTo(CompilationMode.DBG); - assertThat(create("-c", "opt").getTransitiveOptionDetails().getOptionValue("compilation_mode")) + assertThat(create("-c", "opt").getBuildOptionDetails().getOptionValue("compilation_mode")) .isEqualTo(CompilationMode.OPT); // Options defined in a fragment: - assertThat(create("--force_pic").getTransitiveOptionDetails().getOptionValue("force_pic")) + assertThat(create("--force_pic").getBuildOptionDetails().getOptionValue("force_pic")) .isEqualTo(Boolean.TRUE); - assertThat(create("--noforce_pic").getTransitiveOptionDetails().getOptionValue("force_pic")) + assertThat(create("--noforce_pic").getBuildOptionDetails().getOptionValue("force_pic")) .isEqualTo(Boolean.FALSE); // Legitimately null option: - assertThat(create().getTransitiveOptionDetails().getOptionValue("test_filter")).isNull(); + assertThat(create().getBuildOptionDetails().getOptionValue("test_filter")).isNull(); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetailsTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetailsTest.java similarity index 77% rename from src/test/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetailsTest.java rename to src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetailsTest.java index 92cdc5f3ea6c52..b1d21d213300bf 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/config/TransitiveOptionDetailsTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionDetailsTest.java @@ -32,9 +32,9 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** Tests for {@link TransitiveOptionDetails}. */ +/** Tests for {@link BuildOptionDetails}. */ @RunWith(JUnit4.class) -public class TransitiveOptionDetailsTest { +public class BuildOptionDetailsTest { /** Instantiates the given options classes, parsing the given options as well. */ public Iterable parseOptions( Iterable> optionsClasses, String... options) @@ -156,15 +156,15 @@ public static final class MoreOptions extends FragmentOptions { @Test public void getOptionClass_ReturnsClassOfPresentOptions() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getOptionClass("boolean_option")).isEqualTo(Options.class); } @Test public void getOptionClass_SelectsCorrectClassWhenMultipleArePresent() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting( + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting( parseOptions(ImmutableList.of(Options.class, MoreOptions.class))); assertThat(details.getOptionClass("boolean_option")).isEqualTo(Options.class); assertThat(details.getOptionClass("other_option")).isEqualTo(MoreOptions.class); @@ -172,59 +172,59 @@ public void getOptionClass_SelectsCorrectClassWhenMultipleArePresent() throws Ex @Test public void getOptionClass_ReturnsNullIfOptionsClassIsNotPartOfOptionDetails() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getOptionClass("other_option")).isNull(); } @Test public void getOptionClass_SelectsCorrectClassEvenWhenValueIsNull() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getOptionClass("null_default")).isEqualTo(Options.class); } @Test public void getOptionClass_ReturnsNullWhenOptionIsUndefined() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getOptionClass("undefined_option")).isNull(); } @Test public void getOptionClass_ReturnsNullIfOptionIsInternal() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getOptionClass("internal option")).isNull(); } @Test public void getOptionValue_ReturnsDefaultValueIfNotSet() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getOptionValue("boolean_option")).isEqualTo(true); } @Test public void getOptionValue_ReturnsCommandLineValueIfSet() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting( + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting( parseOptions(ImmutableList.of(Options.class), "--noboolean_option")); assertThat(details.getOptionValue("boolean_option")).isEqualTo(false); } @Test public void getOptionValue_ReturnsEmptyListForUnspecifiedMultiOptions() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting( + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting( parseOptions(ImmutableList.of(Options.class), "--noboolean_option")); assertThat(details.getOptionValue("multi_option")).isEqualTo(ImmutableList.of()); } @Test public void getOptionValue_ReturnsListOfValuesForSpecifiedMultiOptions() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting( + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting( parseOptions( ImmutableList.of(Options.class), "--multi_option=one", @@ -236,125 +236,125 @@ public void getOptionValue_ReturnsListOfValuesForSpecifiedMultiOptions() throws @Test public void getOptionValue_DrawsValuesFromAllOptionsClasses() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting( + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting( parseOptions(ImmutableList.of(Options.class, MoreOptions.class), "--other_option=set")); assertThat(details.getOptionValue("other_option")).isEqualTo("set"); } @Test public void getOptionValue_UsesConvertersIfSpecified() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting( + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting( parseOptions(ImmutableList.of(Options.class), "--convertible_option=Set")); assertThat(details.getOptionValue("convertible_option")).isEqualTo(Optional.of("Set")); } @Test public void getOptionValue_UsesConvertersForDefaultsIfSpecified() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getOptionValue("convertible_option")).isEqualTo(Optional.absent()); } @Test public void getOptionValue_ReturnsNullIfOptionIsNotDefined() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getOptionValue("undefined_option")).isNull(); } @Test public void getOptionValue_ReturnsNullIfOptionIsInternal() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getOptionValue("internal option")).isNull(); } @Test public void getOptionValue_ReturnsNullIfOptionIsDefinedInNonIncludedOptionsClass() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getOptionValue("other_option")).isNull(); } @Test public void getOptionValue_ReturnsNullIfOptionDefaultValueIsNull() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getOptionValue("null_option")).isNull(); } @Test public void allowsMultipleValues_ReturnsFalseForUndefinedOption() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.allowsMultipleValues("undefined_option")).isFalse(); } @Test public void allowsMultipleValues_ReturnsFalseForNonMultiOption() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.allowsMultipleValues("boolean_option")).isFalse(); } @Test public void allowsMultipleValues_ReturnsFalseForInternalNonMultiOption() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.allowsMultipleValues("internal option")).isFalse(); } @Test public void allowsMultipleValues_ReturnsFalseForInternalMultiOption() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.allowsMultipleValues("internal multi option")).isFalse(); } @Test public void allowsMultipleValues_ReturnsTrueForMultiOption() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.allowsMultipleValues("multi_option")).isTrue(); } @Test public void getSelectRestrictions_ReturnsNullByDefault() throws Exception { // This is also a test of the default behavior of FragmentOptions#getSelectRestrictions. - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting( + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting( parseOptions(ImmutableList.of(MoreOptions.class))); assertThat(details.getSelectRestriction("other_option")).isNull(); } @Test public void getSelectRestriction_RetrievesRestrictionObject() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getSelectRestriction("nonselectable_option")).isNotNull(); } @Test public void getSelectRestriction_ReturnsNullForUndefinedOption() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getSelectRestriction("undefined_option")).isNull(); } @Test public void isSelectable_ReturnsNullForInternalOption() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); + BuildOptionDetails details = + BuildOptionDetails.forOptionsForTesting(parseOptions(ImmutableList.of(Options.class))); assertThat(details.getSelectRestriction("internal option")).isNull(); } @Test public void starlarkOptions() throws Exception { - TransitiveOptionDetails details = - TransitiveOptionDetails.forOptions( + BuildOptionDetails details = + BuildOptionDetails.forOptions( parseOptions(ImmutableList.of(Options.class)), ImmutableMap.of(Label.parseAbsoluteUnchecked("//test:setting"), "value")); assertThat(details.getOptionValue(Label.parseAbsoluteUnchecked("//test:setting")))