Automated rollback of commit 240af807c935225d98b630666000cc03934f2ce7. PiperOrigin-RevId: 440825604
diff --git a/src/main/java/com/google/devtools/build/docgen/templates/be/functions.vm b/src/main/java/com/google/devtools/build/docgen/templates/be/functions.vm index a8c6d3f..24d3188 100644 --- a/src/main/java/com/google/devtools/build/docgen/templates/be/functions.vm +++ b/src/main/java/com/google/devtools/build/docgen/templates/be/functions.vm
@@ -616,8 +616,10 @@ </li> <li>If multiple conditions match and one is a specialization of the others, the specialization takes precedence. Condition B is considered a - specialization of condition A if B has all the same flags and constraint - values as A plus some additional flags and constraint values. + specialization of condition A if B has all the same flags as A plus some + additional flags. However, the number of constraint values that A and B have + are not considered in this comparison -- one condition cannot match a + platform <i>more than</i> another condition does. </li> <li>If multiple conditions match and one is not a specialization of all the others, Bazel fails with an error.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java index 2784da5..a70351e 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigMatchingProvider.java
@@ -50,15 +50,9 @@ ImmutableMultimap<String, String> settingsMap, ImmutableMap<Label, String> flagSettingsMap, RequiredConfigFragmentsProvider requiredFragmentOptions, - ImmutableSet<Label> constraintValueSettings, boolean matches) { return new AutoValue_ConfigMatchingProvider( - label, - settingsMap, - flagSettingsMap, - requiredFragmentOptions, - constraintValueSettings, - matches); + label, settingsMap, flagSettingsMap, requiredFragmentOptions, matches); } /** The target's label. */ @@ -70,8 +64,6 @@ public abstract RequiredConfigFragmentsProvider requiredFragmentOptions(); - abstract ImmutableSet<Label> constraintValuesSetting(); - /** * Whether or not the configuration criteria defined by this target match its actual * configuration. @@ -89,18 +81,11 @@ ImmutableSet<Map.Entry<Label, String>> flagSettings = flagSettingsMap().entrySet(); ImmutableSet<Map.Entry<Label, String>> otherFlagSettings = other.flagSettingsMap().entrySet(); - ImmutableSet<Label> constraintValueSettings = constraintValuesSetting(); - ImmutableSet<Label> otherConstraintValueSettings = other.constraintValuesSetting(); - - if (!settings.containsAll(otherSettings) - || !flagSettings.containsAll(otherFlagSettings) - || !constraintValueSettings.containsAll(otherConstraintValueSettings)) { + if (!settings.containsAll(otherSettings) || !flagSettings.containsAll(otherFlagSettings)) { return false; // Not a superset. } - return settings.size() > otherSettings.size() - || flagSettings.size() > otherFlagSettings.size() - || constraintValueSettings.size() > otherConstraintValueSettings.size(); + return settings.size() > otherSettings.size() || flagSettings.size() > otherFlagSettings.size(); } /** Format this provider as its label. */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java index f7bb04f..f36231b 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java
@@ -16,7 +16,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.analysis.RequiredConfigFragmentsProvider; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.cmdline.Label; @@ -83,7 +82,6 @@ // the owning target already depends on PlatformConfiguration. And we can't reference // PlatformConfiguration.class here without a build dependency cycle. RequiredConfigFragmentsProvider.EMPTY, - ImmutableSet.of(), platformInfo.constraints().hasConstraintValue(this)); }
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 301429a..361bd27 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
@@ -23,7 +23,6 @@ import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.ListMultimap; import com.google.common.collect.Lists; @@ -131,7 +130,6 @@ ruleContext.shouldIncludeRequiredConfigFragmentsProvider() ? ruleContext.getRequiredConfigFragments() : RequiredConfigFragmentsProvider.EMPTY, - ImmutableSet.copyOf(constraintValueSettings), nativeFlagsMatch && userDefinedFlags.matches() && constraintValuesMatch); return new RuleConfiguredTargetBuilder(ruleContext)
diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java index d01358d..19315ff 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigSettingTest.java
@@ -841,16 +841,13 @@ } @Test - public void doesNotRefineSettingWithSameValuesAndSameFlagValuesAndSameConstraintValues() - throws Exception { + public void doesNotRefineSettingWithSameValuesAndSameFlagValues() throws Exception { useConfiguration( "--copt=-Dright", "--javacopt=-Dgood", "--enforce_transitive_configs_for_config_feature_flag"); scratch.file( "test/BUILD", - "constraint_setting(name = 'setting_a')", - "constraint_value(name = 'value_a', constraint_setting = 'setting_a')", "config_setting(", " name = 'refined',", " flag_values = {", @@ -861,9 +858,6 @@ " 'copt': '-Dright',", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_a',", - " ],", " transitive_configs = [':flag', ':flag2'],", ")", "config_setting(", @@ -876,9 +870,6 @@ " 'copt': '-Dright',", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_a',", - " ],", " transitive_configs = [':flag', ':flag2'],", ")", "config_feature_flag(", @@ -898,16 +889,13 @@ } @Test - public void doesNotRefineSettingWithDifferentValuesAndSameFlagValuesAndSameConstraintValues() - throws Exception { + public void doesNotRefineSettingWithDifferentValuesAndSameFlagValues() throws Exception { useConfiguration( "--copt=-Dright", "--javacopt=-Dgood", "--enforce_transitive_configs_for_config_feature_flag"); scratch.file( "test/BUILD", - "constraint_setting(name = 'setting_a')", - "constraint_value(name = 'value_a', constraint_setting = 'setting_a')", "config_setting(", " name = 'refined',", " flag_values = {", @@ -917,9 +905,6 @@ " values = {", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_a',", - " ],", " transitive_configs = [':flag', ':flag2'],", ")", "config_setting(", @@ -931,9 +916,6 @@ " values = {", " 'copt': '-Dright',", " },", - " constraint_values = [", - " ':value_a',", - " ],", " transitive_configs = [':flag', ':flag2'],", ")", "config_feature_flag(", @@ -953,16 +935,13 @@ } @Test - public void doesNotRefineSettingWithSameValuesAndSameConstraintValuesAndDifferentFlagValues() - throws Exception { + public void doesNotRefineSettingWithSameValuesAndDifferentFlagValues() throws Exception { useConfiguration( "--copt=-Dright", "--javacopt=-Dgood", "--enforce_transitive_configs_for_config_feature_flag"); scratch.file( "test/BUILD", - "constraint_setting(name = 'setting_a')", - "constraint_value(name = 'value_a', constraint_setting = 'setting_a')", "config_setting(", " name = 'refined',", " flag_values = {", @@ -972,9 +951,6 @@ " 'copt': '-Dright',", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_a',", - " ],", " transitive_configs = [':flag'],", ")", "config_setting(", @@ -986,9 +962,6 @@ " 'copt': '-Dright',", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_a',", - " ],", " transitive_configs = [':flag2'],", ")", "config_feature_flag(", @@ -1008,19 +981,13 @@ } @Test - public void - doesNotRefineSettingWithDifferentValuesAndDifferentFlagValuesAndDifferentConstraintValues() - throws Exception { + public void doesNotRefineSettingWithDifferentValuesAndDifferentFlagValues() throws Exception { useConfiguration( "--copt=-Dright", "--javacopt=-Dgood", "--enforce_transitive_configs_for_config_feature_flag"); scratch.file( "test/BUILD", - "constraint_setting(name = 'setting_a')", - "constraint_value(name = 'value_a', constraint_setting = 'setting_a')", - "constraint_setting(name = 'setting_b')", - "constraint_value(name = 'value_b', constraint_setting = 'setting_b')", "config_setting(", " name = 'refined',", " flag_values = {", @@ -1029,9 +996,6 @@ " values = {", " 'copt': '-Dright',", " },", - " constraint_values = [", - " ':value_a',", - " ],", " transitive_configs = [':flag'],", ")", "config_setting(", @@ -1042,9 +1006,6 @@ " values = {", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_b',", - " ],", " transitive_configs = [':flag2'],", ")", "config_feature_flag(", @@ -1064,18 +1025,13 @@ } @Test - public void doesNotRefineSettingWithDifferentValuesAndSubsetFlagValuesAndSubsetConstraintValues() - throws Exception { + public void doesNotRefineSettingWithDifferentValuesAndSubsetFlagValues() throws Exception { useConfiguration( "--copt=-Dright", "--javacopt=-Dgood", "--enforce_transitive_configs_for_config_feature_flag"); scratch.file( "test/BUILD", - "constraint_setting(name = 'setting_a')", - "constraint_value(name = 'value_a', constraint_setting = 'setting_a')", - "constraint_setting(name = 'setting_b')", - "constraint_value(name = 'value_b', constraint_setting = 'setting_b')", "config_setting(", " name = 'refined',", " flag_values = {", @@ -1085,10 +1041,6 @@ " values = {", " 'copt': '-Dright',", " },", - " constraint_values = [", - " ':value_a',", - " ':value_b',", - " ],", " transitive_configs = [':flag', ':flag2'],", ")", "config_setting(", @@ -1099,9 +1051,6 @@ " values = {", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_a',", - " ],", " transitive_configs = [':flag'],", ")", "config_feature_flag(", @@ -1121,76 +1070,13 @@ } @Test - public void doesNotRefineSettingWithSubsetValuesAndSubsetFlagValuesAndDifferentConstraintValues() - throws Exception { + public void doesNotRefineSettingWithSubsetValuesAndDifferentFlagValues() throws Exception { useConfiguration( "--copt=-Dright", "--javacopt=-Dgood", "--enforce_transitive_configs_for_config_feature_flag"); scratch.file( "test/BUILD", - "constraint_setting(name = 'setting_a')", - "constraint_value(name = 'value_a', constraint_setting = 'setting_a')", - "constraint_setting(name = 'setting_b')", - "constraint_value(name = 'value_b', constraint_setting = 'setting_b')", - "config_setting(", - " name = 'refined',", - " flag_values = {", - " ':flag': 'right',", - " ':flag2': 'good',", - " },", - " values = {", - " 'copt': '-Dright',", - " 'javacopt': '-Dgood',", - " },", - " constraint_values = [", - " ':value_a',", - " ],", - " transitive_configs = [':flag', ':flag2'],", - ")", - "config_setting(", - " name = 'other',", - " flag_values = {", - " ':flag': 'right',", - " ':flag2': 'good',", - " },", - " values = {", - " 'copt': '-Dright',", - " },", - " constraint_values = [", - " ':value_b',", - " ],", - " transitive_configs = [':flag', ':flag2'],", - ")", - "config_feature_flag(", - " name = 'flag',", - " allowed_values = ['right', 'wrong'],", - " default_value = 'right',", - ")", - "config_feature_flag(", - " name = 'flag2',", - " allowed_values = ['good', 'bad'],", - " default_value = 'good',", - ")"); - assertThat( - getConfigMatchingProvider("//test:refined") - .refines(getConfigMatchingProvider("//test:other"))) - .isFalse(); - } - - @Test - public void doesNotRefineSettingWithSubsetValuesAndSubsetConstraintValuesAndDifferentFlagValues() - throws Exception { - useConfiguration( - "--copt=-Dright", - "--javacopt=-Dgood", - "--enforce_transitive_configs_for_config_feature_flag"); - scratch.file( - "test/BUILD", - "constraint_setting(name = 'setting_a')", - "constraint_value(name = 'value_a', constraint_setting = 'setting_a')", - "constraint_setting(name = 'setting_b')", - "constraint_value(name = 'value_b', constraint_setting = 'setting_b')", "config_setting(", " name = 'refined',", " flag_values = {", @@ -1200,10 +1086,6 @@ " 'copt': '-Dright',", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_a',", - " ':value_b',", - " ],", " transitive_configs = [':flag'],", ")", "config_setting(", @@ -1214,9 +1096,6 @@ " values = {", " 'copt': '-Dright',", " },", - " constraint_values = [", - " ':value_a',", - " ],", " transitive_configs = [':flag2'],", ")", "config_feature_flag(", @@ -1236,18 +1115,13 @@ } @Test - public void refinesSettingWithSubsetValuesAndSubsetConstraintValuesAndSameFlagValues() - throws Exception { + public void refinesSettingWithSubsetValuesAndSameFlagValues() throws Exception { useConfiguration( "--copt=-Dright", "--javacopt=-Dgood", "--enforce_transitive_configs_for_config_feature_flag"); scratch.file( "test/BUILD", - "constraint_setting(name = 'setting_a')", - "constraint_value(name = 'value_a', constraint_setting = 'setting_a')", - "constraint_setting(name = 'setting_b')", - "constraint_value(name = 'value_b', constraint_setting = 'setting_b')", "config_setting(", " name = 'refined',", " flag_values = {", @@ -1258,10 +1132,6 @@ " 'copt': '-Dright',", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_a',", - " ':value_b',", - " ],", " transitive_configs = [':flag', ':flag2'],", ")", "config_setting(", @@ -1273,9 +1143,6 @@ " values = {", " 'copt': '-Dright',", " },", - " constraint_values = [", - " ':value_b',", - " ],", " transitive_configs = [':flag', ':flag2'],", ")", "config_feature_flag(", @@ -1295,18 +1162,13 @@ } @Test - public void refinesSettingWithSameValuesAndSubsetFlagValuesAndSubsetConstraintValues() - throws Exception { + public void refinesSettingWithSameValuesAndSubsetFlagValues() throws Exception { useConfiguration( "--copt=-Dright", "--javacopt=-Dgood", "--enforce_transitive_configs_for_config_feature_flag"); scratch.file( "test/BUILD", - "constraint_setting(name = 'setting_a')", - "constraint_value(name = 'value_a', constraint_setting = 'setting_a')", - "constraint_setting(name = 'setting_b')", - "constraint_value(name = 'value_b', constraint_setting = 'setting_b')", "config_setting(", " name = 'refined',", " flag_values = {", @@ -1317,10 +1179,6 @@ " 'copt': '-Dright',", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_a',", - " ':value_b',", - " ],", " transitive_configs = [':flag', ':flag2'],", ")", "config_setting(", @@ -1332,9 +1190,6 @@ " 'copt': '-Dright',", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_a',", - " ],", " transitive_configs = [':flag'],", ")", "config_feature_flag(", @@ -1354,18 +1209,13 @@ } @Test - public void refinesSettingWithSubsetValuesAndSubsetFlagValuesAndConstraintValues() - throws Exception { + public void refinesSettingWithSubsetValuesAndSubsetFlagValues() throws Exception { useConfiguration( "--copt=-Dright", "--javacopt=-Dgood", "--enforce_transitive_configs_for_config_feature_flag"); scratch.file( "test/BUILD", - "constraint_setting(name = 'setting_a')", - "constraint_value(name = 'value_a', constraint_setting = 'setting_a')", - "constraint_setting(name = 'setting_b')", - "constraint_value(name = 'value_b', constraint_setting = 'setting_b')", "config_setting(", " name = 'refined',", " flag_values = {", @@ -1376,10 +1226,6 @@ " 'copt': '-Dright',", " 'javacopt': '-Dgood',", " },", - " constraint_values = [", - " ':value_a',", - " ':value_b',", - " ],", " transitive_configs = [':flag', ':flag2'],", ")", "config_setting(", @@ -1390,9 +1236,6 @@ " values = {", " 'copt': '-Dright',", " },", - " constraint_values = [", - " ':value_a',", - " ],", " transitive_configs = [':flag'],", ")", "config_feature_flag(", @@ -1412,53 +1255,6 @@ } @Test - public void refinesSettingWithSubsetConstraintValues() throws Exception { - scratch.file( - "test/BUILD", - "constraint_setting(name = 'setting_a')", - "constraint_value(name = 'value_a', constraint_setting = 'setting_a')", - "constraint_setting(name = 'setting_b')", - "constraint_value(name = 'value_b', constraint_setting = 'setting_b')", - "constraint_setting(name = 'setting_c')", - "constraint_value(name = 'value_c', constraint_setting = 'setting_c')", - "platform(", - " name = 'refined_platform',", - " constraint_values = [", - " ':value_a',", - " ':value_b',", - " ':value_c',", - " ],", - ")", - "platform(", - " name = 'other_platform',", - " constraint_values = [", - " ':value_a',", - " ':value_b',", - " ],", - ")", - "config_setting(", - " name = 'refined',", - " constraint_values = [", - " ':value_a',", - " ':value_b',", - " ':value_c',", - " ],", - ")", - "config_setting(", - " name = 'other',", - " constraint_values = [", - " ':value_a',", - " ':value_b',", - " ],", - ");"); - useConfiguration("--platforms=//test:refined_platform"); - assertThat( - getConfigMatchingProvider("//test:refined") - .refines(getConfigMatchingProvider("//test:other"))) - .isTrue(); - } - - @Test public void matchesAliasedFlagsInFlagValues() throws Exception { useConfiguration("--enforce_transitive_configs_for_config_feature_flag"); scratch.file(