From 32def7092155a0fcdb138cfd80c51608a7326bcb Mon Sep 17 00:00:00 2001 From: Googler Date: Wed, 17 Apr 2024 10:07:44 -0700 Subject: [PATCH] No public description PiperOrigin-RevId: 625722242 Change-Id: I74cc04a29cb230f9c6ad771c063a3ecc4a596891 --- .../lib/packages/PredicatesWithMessage.java | 42 ---------- .../devtools/build/lib/packages/Rule.java | 10 --- .../build/lib/packages/RuleClass.java | 82 ------------------- .../build/lib/packages/RuleClassTest.java | 16 ---- 4 files changed, 150 deletions(-) delete mode 100644 src/main/java/com/google/devtools/build/lib/packages/PredicatesWithMessage.java diff --git a/src/main/java/com/google/devtools/build/lib/packages/PredicatesWithMessage.java b/src/main/java/com/google/devtools/build/lib/packages/PredicatesWithMessage.java deleted file mode 100644 index aa553d1e7b631d..00000000000000 --- a/src/main/java/com/google/devtools/build/lib/packages/PredicatesWithMessage.java +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -package com.google.devtools.build.lib.packages; - -import com.google.devtools.build.lib.skyframe.serialization.VisibleForSerialization; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationConstant; - -/** - * A helper class for PredicateWithMessage with default predicates. - */ -public abstract class PredicatesWithMessage implements PredicateWithMessage { - - @SerializationConstant @VisibleForSerialization - static final PredicateWithMessage ALWAYS_TRUE = - new PredicateWithMessage() { - @Override - public boolean apply(Object input) { - return true; - } - - @Override - public String getErrorReason(Object param) { - throw new UnsupportedOperationException(); - } - }; - - @SuppressWarnings("unchecked") - public static PredicateWithMessage alwaysTrue() { - return (PredicateWithMessage) ALWAYS_TRUE; - } -} diff --git a/src/main/java/com/google/devtools/build/lib/packages/Rule.java b/src/main/java/com/google/devtools/build/lib/packages/Rule.java index 7570de4643cd30..5499e4b4656b46 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Rule.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Rule.java @@ -903,16 +903,6 @@ public SetMultimap getTransitions(DependencyFilter filter) { return transitions; } - /** - * Check if this rule is valid according to the validityPredicate of its RuleClass. - */ - void checkValidityPredicate(EventHandler eventHandler) { - PredicateWithMessage predicate = ruleClass.getValidityPredicate(); - if (!predicate.apply(this)) { - reportError(predicate.getErrorReason(this), eventHandler); - } - } - /** * Collects the output files (both implicit and explicit). Must be called before the output * accessors methods can be used, and must be called only once. 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 e64c286874e51e..f263e8f317fdc3 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 @@ -14,7 +14,6 @@ package com.google.devtools.build.lib.packages; -import static com.google.common.collect.Streams.stream; import static com.google.devtools.build.lib.packages.Attribute.attr; import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST; import static com.google.devtools.build.lib.packages.Type.BOOLEAN; @@ -165,66 +164,6 @@ public class RuleClass implements RuleClassData { public static final String APPLICABLE_METADATA_ATTR_ALT = "applicable_licenses"; - /** A constraint for the package name of the Rule instances. */ - public static class PackageNameConstraint implements PredicateWithMessage { - - public static final int ANY_SEGMENT = 0; - - private final int pathSegment; - - private final Set values; - - /** - * The pathSegment-th segment of the package must be one of the specified values. The path - * segment indexing starts from 1. - */ - public PackageNameConstraint(int pathSegment, String... values) { - this.values = ImmutableSet.copyOf(values); - this.pathSegment = pathSegment; - } - - @Override - public boolean apply(Rule input) { - PathFragment path = input.getLabel().getPackageFragment(); - if (pathSegment == ANY_SEGMENT) { - return stream(path.segments()).anyMatch(values::contains); - } else { - return path.segmentCount() >= pathSegment - && values.contains(path.getSegment(pathSegment - 1)); - } - } - - @Override - public String getErrorReason(Rule param) { - if (pathSegment == ANY_SEGMENT) { - return param.getRuleClass() - + " rules have to be under a " - + StringUtil.joinEnglishList(values, "or", "'") - + " directory"; - } else if (pathSegment == 1) { - return param.getRuleClass() - + " rules are only allowed in " - + StringUtil.joinEnglishList(Iterables.transform(values, s -> "//" + s), "or"); - } else { - return param.getRuleClass() - + " rules are only allowed in packages which " - + StringUtil.ordinal(pathSegment) - + " is " - + StringUtil.joinEnglishList(values, "or"); - } - } - - @VisibleForTesting - public int getPathSegment() { - return pathSegment; - } - - @VisibleForTesting - public Collection getValues() { - return values; - } - } - /** Possible values for setting whether a rule uses toolchain resolution. */ public enum ToolchainResolutionMode { /** The rule should use toolchain resolution. */ @@ -783,7 +722,6 @@ public String toString() { private ImplicitOutputsFunction implicitOutputsFunction = SafeImplicitOutputsFunction.NONE; @Nullable private TransitionFactory transitionFactory; private ConfiguredTargetFactory configuredTargetFactory = null; - private PredicateWithMessage validityPredicate = PredicatesWithMessage.alwaysTrue(); private final AdvertisedProviderSet.Builder advertisedProviders = AdvertisedProviderSet.builder(); private StarlarkCallable configuredTargetFunction = null; @@ -850,9 +788,6 @@ public Builder(String name, RuleClassType type, boolean starlark, RuleClass... p Preconditions.checkArgument(starlarkParent.isExtendable()); } for (RuleClass parent : parents) { - if (parent.getValidityPredicate() != PredicatesWithMessage.alwaysTrue()) { - setValidityPredicate(parent.getValidityPredicate()); - } configurationFragmentPolicy.includeConfigurationFragmentsFrom( parent.getConfigurationFragmentPolicy()); supportsConstraintChecking = parent.supportsConstraintChecking; @@ -997,7 +932,6 @@ public RuleClass build(String name, String key) { implicitOutputsFunction, transitionFactory, configuredTargetFactory, - validityPredicate, advertisedProviders.build(), configuredTargetFunction, externalBindingsFunction, @@ -1213,12 +1147,6 @@ public Builder factory(ConfiguredTargetFactory factory) { return this; } - @CanIgnoreReturnValue - public Builder setValidityPredicate(PredicateWithMessage predicate) { - this.validityPredicate = predicate; - return this; - } - /** * State that the rule class being built possibly supplies the specified provider to its direct * dependencies. @@ -1747,9 +1675,6 @@ public Attribute.Builder copy(String name) { /** The factory that creates configured targets from this rule. */ private final ConfiguredTargetFactory configuredTargetFactory; - /** The constraint the package name of the rule instance must fulfill */ - private final PredicateWithMessage validityPredicate; - /** The list of transitive info providers this class advertises to aspects. */ private final AdvertisedProviderSet advertisedProviders; @@ -1855,7 +1780,6 @@ public Attribute.Builder copy(String name) { ImplicitOutputsFunction implicitOutputsFunction, @Nullable TransitionFactory transitionFactory, ConfiguredTargetFactory configuredTargetFactory, - PredicateWithMessage validityPredicate, AdvertisedProviderSet advertisedProviders, @Nullable StarlarkCallable configuredTargetFunction, Function> externalBindingsFunction, @@ -1893,7 +1817,6 @@ public Attribute.Builder copy(String name) { this.implicitOutputsFunction = implicitOutputsFunction; this.transitionFactory = transitionFactory; this.configuredTargetFactory = configuredTargetFactory; - this.validityPredicate = validityPredicate; this.advertisedProviders = advertisedProviders; this.configuredTargetFunction = configuredTargetFunction; this.externalBindingsFunction = externalBindingsFunction; @@ -2084,10 +2007,6 @@ List getNonConfigurableAttributes() { return nonConfigurableAttributes; } - public PredicateWithMessage getValidityPredicate() { - return validityPredicate; - } - /** * Returns the set of advertised transitive info providers. * @@ -2152,7 +2071,6 @@ Rule createRule( checkForDuplicateLabels(rule, eventHandler); checkForValidSizeAndTimeoutValues(rule, eventHandler); - rule.checkValidityPredicate(eventHandler); return rule; } diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java index 46eefb328eddfa..b17329ed3c193f 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java @@ -111,7 +111,6 @@ private static RuleClass createRuleClassA() throws LabelSyntaxException { SafeImplicitOutputsFunction.NONE, null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -144,7 +143,6 @@ private static RuleClass createRuleClassB(RuleClass ruleClassA) { SafeImplicitOutputsFunction.NONE, null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -295,7 +293,6 @@ public void testDuplicatedDeps() throws Exception { SafeImplicitOutputsFunction.NONE, null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -338,7 +335,6 @@ public void testDuplicatedDepsWithinSingleSelectConditionError() throws Exceptio SafeImplicitOutputsFunction.NONE, null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -375,7 +371,6 @@ public void testDuplicatedDepsWithinConditionMultipleSelectsErrors() throws Exce SafeImplicitOutputsFunction.NONE, null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -424,7 +419,6 @@ public void testSameDepAcrossMultipleSelectsNoDuplicateNoError() throws Exceptio SafeImplicitOutputsFunction.NONE, null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -467,7 +461,6 @@ public void testSameDepAcrossMultipleSelectsIsDuplicateNoError() throws Exceptio SafeImplicitOutputsFunction.NONE, null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -510,7 +503,6 @@ public void testSameDepAcrossConditionsInSelectNoError() throws Exception { SafeImplicitOutputsFunction.NONE, null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -608,7 +600,6 @@ public void testImplicitOutputs() throws Exception { "foo-%{name}.bar", "lib%{name}-wazoo-%{name}.mumble", "stuff-%{outs}-bar"), null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -644,7 +635,6 @@ public void testImplicitOutsWithBasenameDirname() throws Exception { ImplicitOutputsFunction.fromTemplates("%{dirname}lib%{basename}.bar"), null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -675,7 +665,6 @@ private static RuleClass getRuleClassWithComputedDefault(Attribute computedDefau ImplicitOutputsFunction.fromTemplates("empty"), null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -844,7 +833,6 @@ public void testOutputsAreOrdered() throws Exception { ImplicitOutputsFunction.fromTemplates("first-%{name}", "second-%{name}", "out-%{outs}"), null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -882,7 +870,6 @@ public void testSubstitutePlaceholderIntoTemplate() throws Exception { SafeImplicitOutputsFunction.NONE, null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(), @@ -1032,7 +1019,6 @@ private static RuleClass newRuleClass( ImplicitOutputsFunction implicitOutputsFunction, TransitionFactory transitionFactory, ConfiguredTargetFactory configuredTargetFactory, - PredicateWithMessage validityPredicate, AdvertisedProviderSet advertisedProviders, @Nullable StarlarkFunction configuredTargetFunction, Set> allowedConfigurationFragments, @@ -1061,7 +1047,6 @@ private static RuleClass newRuleClass( implicitOutputsFunction, transitionFactory, configuredTargetFactory, - validityPredicate, advertisedProviders, configuredTargetFunction, NO_EXTERNAL_BINDINGS, @@ -1101,7 +1086,6 @@ private static RuleClass createParentRuleClass() { SafeImplicitOutputsFunction.NONE, null, DUMMY_CONFIGURED_TARGET_FACTORY, - PredicatesWithMessage.alwaysTrue(), AdvertisedProviderSet.EMPTY, null, ImmutableSet.of(DummyFragment.class),