aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe
diff options
context:
space:
mode:
authorGravatar dslomov <dslomov@google.com>2017-08-01 20:47:59 +0200
committerGravatar Dmitry Lomov <dslomov@google.com>2017-08-02 10:40:02 +0200
commit7df851524497afd7b1833418cc639d9c8f417451 (patch)
tree5a8f0c12749fdda9731bc9571c7e4f780ef09c5c /src/main/java/com/google/devtools/build/lib/skyframe
parent71238601b8ca147cfd4f9498e11d8517b25ac69a (diff)
Automated rollback of commit c32e1b1efcd703b3780de47fba62974123593d71.
*** Reason for rollback *** Breaks depot b/64250728 *** Original change description *** Use RequiredProviders to validate rule prerequisites in RuleContext. We now use a unified way to check provider requirements everywhere. RELNOTES: None. PiperOrigin-RevId: 163862067
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index 1b783b9926..aa960a87d4 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Joiner;
+import com.google.common.base.Predicate;
import com.google.common.base.Supplier;
import com.google.common.base.Verify;
import com.google.common.base.VerifyException;
@@ -42,6 +43,7 @@ import com.google.devtools.build.lib.analysis.MergedConfiguredTarget;
import com.google.devtools.build.lib.analysis.MergedConfiguredTarget.DuplicateException;
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
import com.google.devtools.build.lib.analysis.ToolchainContext;
+import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
@@ -65,6 +67,7 @@ import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.RawAttributeMapper;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClassProvider;
+import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.skyframe.AspectFunction.AspectCreationException;
@@ -985,7 +988,20 @@ public final class ConfiguredTargetFunction implements SkyFunction {
if (!aspect.getDefinition().applyToFiles() && !(dep.getTarget() instanceof Rule)) {
return false;
}
- return dep.satisfies(aspect.getDefinition().getRequiredProviders());
+ return aspect.getDefinition().getRequiredProviders().isSatisfiedBy(
+ new Predicate<Class<?>>() {
+ @Override
+ public boolean apply(Class<?> provider) {
+ return dep.getProvider(provider.asSubclass(TransitiveInfoProvider.class)) != null;
+ }
+ },
+ new Predicate<SkylarkProviderIdentifier>() {
+ @Override
+ public boolean apply(SkylarkProviderIdentifier skylarkProviderIdentifier) {
+ return dep.get(skylarkProviderIdentifier) != null;
+ }
+ }
+ );
}
/**