From 04be3f816aa36c5b80a519daa572659e69945fa9 Mon Sep 17 00:00:00 2001 From: John Cater Date: Thu, 7 Nov 2019 12:20:25 -0800 Subject: [PATCH] Remove the ExecutionPlatformConstraintsAllowed enum entirely. Fixes #8134. Closes #10182. PiperOrigin-RevId: 279141108 --- .../build/lib/analysis/BaseRuleClasses.java | 8 +- .../skylark/SkylarkRuleClassFunctions.java | 9 +- .../build/lib/packages/RuleClass.java | 82 +------------ .../lib/rules/platform/ToolchainRule.java | 2 +- .../skyframe/ConfiguredTargetFunction.java | 6 +- .../build/lib/packages/RuleClassTest.java | 114 +----------------- .../SkylarkRuleClassFunctionsTest.java | 14 --- .../lib/skylark/SkylarkRuleContextTest.java | 3 +- 8 files changed, 18 insertions(+), 220 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java index 94764bfdee950f..451c3bd42b6923 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java @@ -40,9 +40,9 @@ import com.google.devtools.build.lib.packages.Attribute.LabelListLateBoundDefault; import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault.Resolver; import com.google.devtools.build.lib.packages.AttributeMap; +import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; -import com.google.devtools.build.lib.packages.RuleClass.ExecutionPlatformConstraintsAllowed; import com.google.devtools.build.lib.packages.TestSize; import com.google.devtools.build.lib.packages.Type; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; @@ -423,8 +423,12 @@ public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) attr("data", LABEL_LIST) .allowedFileTypes(FileTypeSet.ANY_FILE) .dontCheckConstraints()) - .executionPlatformConstraintsAllowed(ExecutionPlatformConstraintsAllowed.PER_TARGET) .add(attr(RuleClass.EXEC_PROPERTIES, Type.STRING_DICT).value(ImmutableMap.of())) + .add( + attr(RuleClass.EXEC_COMPATIBLE_WITH_ATTR, BuildType.LABEL_LIST) + .allowedFileTypes() + .nonconfigurable("Used in toolchain resolution") + .value(ImmutableList.of())) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java index 8ea1427bbb6a5a..0628a1534f06d1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java @@ -63,7 +63,6 @@ import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; -import com.google.devtools.build.lib.packages.RuleClass.ExecutionPlatformConstraintsAllowed; import com.google.devtools.build.lib.packages.RuleFactory; import com.google.devtools.build.lib.packages.RuleFactory.BuildLangTypedAttributeValuesMap; import com.google.devtools.build.lib.packages.RuleFactory.InvalidRuleException; @@ -139,6 +138,11 @@ public Label load(String from) throws Exception { .mandatoryProviders(ImmutableList.of(TemplateVariableInfo.PROVIDER.id())) .dontCheckConstraints()) .add(attr(RuleClass.EXEC_PROPERTIES, Type.STRING_DICT).value(ImmutableMap.of())) + .add( + attr(RuleClass.EXEC_COMPATIBLE_WITH_ATTR, BuildType.LABEL_LIST) + .allowedFileTypes() + .nonconfigurable("Used in toolchain resolution") + .value(ImmutableList.of())) .build(); /** Parent rule class for executable non-test Skylark rules. */ @@ -227,7 +231,6 @@ public static final RuleClass getTestBaseRule(RuleDefinitionContext env) { toolsRepository + BaseRuleClasses.DEFAULT_COVERAGE_REPORT_GENERATOR_VALUE)))) .add(attr(":run_under", LABEL).value(RUN_UNDER)) - .executionPlatformConstraintsAllowed(ExecutionPlatformConstraintsAllowed.PER_TARGET) .build(); } @@ -404,8 +407,6 @@ public BaseFunction rule( bazelContext.getRepoMapping())); } - builder.executionPlatformConstraintsAllowed(ExecutionPlatformConstraintsAllowed.PER_TARGET); - return new SkylarkRuleFunction(builder, type, attributes, ast.getLocation()); } diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java index f4e1d18ccae4c6..af803b040b3dd4 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java +++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java @@ -220,44 +220,6 @@ public RuleErrorException(String message) { } } - /** - * Describes in which way a rule implementation allows additional execution platform constraints. - */ - public enum ExecutionPlatformConstraintsAllowed { - /** - * Allows additional execution platform constraints to be added in the rule definition, which - * apply to all targets of that rule. - */ - PER_RULE(1), - /** - * Users are allowed to specify additional execution platform constraints for each target, using - * the 'exec_compatible_with' attribute. This also allows setting constraints in the rule - * definition, like PER_RULE. - */ - PER_TARGET(2); - - private final int priority; - - ExecutionPlatformConstraintsAllowed(int priority) { - this.priority = priority; - } - - public int priority() { - return priority; - } - - public static ExecutionPlatformConstraintsAllowed highestPriority( - ExecutionPlatformConstraintsAllowed first, ExecutionPlatformConstraintsAllowed... rest) { - ExecutionPlatformConstraintsAllowed result = first; - for (ExecutionPlatformConstraintsAllowed value : rest) { - if (result == null || result.priority() < value.priority()) { - result = value; - } - } - return result; - } - } - /** * For Bazel's constraint system: the attribute that declares the set of environments a rule * supports, overriding the defaults for their respective groups. @@ -724,8 +686,6 @@ public enum ThirdPartyLicenseExistencePolicy { private final Map attributes = new LinkedHashMap<>(); private final Set