aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
diff options
context:
space:
mode:
authorGravatar Mark Schaller <mschaller@google.com>2015-07-07 16:36:09 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-07-08 11:40:48 +0000
commitd7311e0ddaf66857d5d7f332a6fad58e0bf7becb (patch)
treea011b8e8264d788e4d97baca22974edc3b2eb78f /src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
parent1314570a4d9094c6157f8e1cfe4b31e61b01a1fb (diff)
Activate interleaved package and transitive target loading
Hooks up the recently introduced interleaved loading functions to normal graph loading. -- MOS_MIGRATED_REVID=97679451
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java33
1 files changed, 19 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
index bf32843787..5230d09779 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.skyframe;
+import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.cmdline.ResolvedTargets;
@@ -62,10 +63,19 @@ public class PrepareDepsOfPatternFunction implements SkyFunction {
throws SkyFunctionException, InterruptedException {
TargetPatternValue.TargetPatternKey patternKey =
((TargetPatternValue.TargetPatternKey) key.argument());
+
+ // DepsOfPatternPreparer below expects to be able to ignore the filtering policy from the
+ // TargetPatternKey, which should be valid because PrepareDepsOfPatternValue.keys
+ // unconditionally creates TargetPatternKeys with the NO_FILTER filtering policy. (Compare
+ // with SkyframeTargetPatternEvaluator, which can create TargetPatternKeys with other
+ // filtering policies like FILTER_TESTS or FILTER_MANUAL.) This check makes sure that the
+ // key's filtering policy is NO_FILTER as expected.
+ Preconditions.checkState(patternKey.getPolicy().equals(FilteringPolicies.NO_FILTER),
+ patternKey.getPolicy());
+
try {
TargetPattern parsedPattern = patternKey.getParsedPattern();
- DepsOfPatternPreparer preparer =
- new DepsOfPatternPreparer(env, patternKey.getPolicy(), pkgPath.get());
+ DepsOfPatternPreparer preparer = new DepsOfPatternPreparer(env, pkgPath.get());
ImmutableSet<String> excludedSubdirectories = patternKey.getExcludedSubdirectories();
parsedPattern.eval(preparer, excludedSubdirectories);
} catch (TargetParsingException e) {
@@ -105,14 +115,11 @@ public class PrepareDepsOfPatternFunction implements SkyFunction {
private final EnvironmentBackedRecursivePackageProvider packageProvider;
private final Environment env;
- private final FilteringPolicy policy;
private final PathPackageLocator pkgPath;
- public DepsOfPatternPreparer(Environment env, FilteringPolicy policy,
- PathPackageLocator pkgPath) {
+ public DepsOfPatternPreparer(Environment env, PathPackageLocator pkgPath) {
this.env = env;
this.packageProvider = new EnvironmentBackedRecursivePackageProvider(env);
- this.policy = policy;
this.pkgPath = pkgPath;
}
@@ -153,10 +160,9 @@ public class PrepareDepsOfPatternFunction implements SkyFunction {
@Override
public ResolvedTargets<Void> getTargetsInPackage(String originalPattern, String packageName,
boolean rulesOnly) throws TargetParsingException, InterruptedException {
- FilteringPolicy actualPolicy = rulesOnly
- ? FilteringPolicies.and(FilteringPolicies.RULES_ONLY, policy)
- : policy;
- return getTargetsInPackage(originalPattern, new PathFragment(packageName), actualPolicy);
+ FilteringPolicy policy =
+ rulesOnly ? FilteringPolicies.RULES_ONLY : FilteringPolicies.NO_FILTER;
+ return getTargetsInPackage(originalPattern, new PathFragment(packageName), policy);
}
private ResolvedTargets<Void> getTargetsInPackage(String originalPattern,
@@ -203,16 +209,15 @@ public class PrepareDepsOfPatternFunction implements SkyFunction {
public ResolvedTargets<Void> findTargetsBeneathDirectory(String originalPattern,
String directory, boolean rulesOnly, ImmutableSet<String> excludedSubdirectories)
throws TargetParsingException, InterruptedException {
- FilteringPolicy actualPolicy = rulesOnly
- ? FilteringPolicies.and(FilteringPolicies.RULES_ONLY, policy)
- : policy;
+ FilteringPolicy policy =
+ rulesOnly ? FilteringPolicies.RULES_ONLY : FilteringPolicies.NO_FILTER;
ImmutableSet<PathFragment> excludedPathFragments =
TargetPatternResolverUtil.getPathFragments(excludedSubdirectories);
PathFragment pathFragment = TargetPatternResolverUtil.getPathFragment(directory);
for (Path root : pkgPath.getPathEntries()) {
RootedPath rootedPath = RootedPath.toRootedPath(root, pathFragment);
SkyValue token = env.getValue(PrepareDepsOfTargetsUnderDirectoryValue.key(rootedPath,
- excludedPathFragments, actualPolicy));
+ excludedPathFragments, policy));
if (token == null) {
// A null token value means there is a missing dependency, because RecursivePkgFunction
// never throws.