aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2016-11-11 10:00:53 +0000
committerGravatar Klaus Aehlig <aehlig@google.com>2016-11-11 10:56:56 +0000
commit9f74dfbc7aba8e455150f8eba4b616c56467e598 (patch)
tree0fa37bdff01c4610c6b4adc982caa0980e5b0569 /src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
parent279a061eb0873df4e8ea71755684037b4bdd511f (diff)
Implement build tag filtering.
If the --build_tag_filters option is specified, targets built will be filtered according to their tags (at least one included, none excluded) -- MOS_MIGRATED_REVID=138856195
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
index 60600caa1a..7a87ba202b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
@@ -25,7 +25,6 @@ import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.pkgcache.CompileOneDependencyTransformer;
import com.google.devtools.build.lib.pkgcache.FilteringPolicies;
-import com.google.devtools.build.lib.pkgcache.LoadingOptions;
import com.google.devtools.build.lib.pkgcache.LoadingPhaseRunner;
import com.google.devtools.build.lib.pkgcache.TargetProvider;
import com.google.devtools.build.lib.pkgcache.TestFilter;
@@ -73,8 +72,7 @@ final class TargetPatternPhaseFunction implements SkyFunction {
}
// Determine targets to build:
- ResolvedTargets<Target> targets = getTargetsToBuild(env,
- options.getTargetPatterns(), options.getOffset(), options.getCompileOneDependency());
+ ResolvedTargets<Target> targets = getTargetsToBuild(env, options);
// If the --build_tests_only option was specified or we want to run tests, we need to determine
// the list of targets to test. For that, we remove manual tests and apply the command-line
@@ -185,16 +183,14 @@ final class TargetPatternPhaseFunction implements SkyFunction {
/**
* Interpret the command-line arguments.
*
- * @param targetPatterns the list of command-line target patterns specified by the user
- * @param compileOneDependency if true, enables alternative interpretation of targetPatterns; see
- * {@link LoadingOptions#compileOneDependency}
+ * @param options the command-line arguments in structured form
*/
private static ResolvedTargets<Target> getTargetsToBuild(
- Environment env, List<String> targetPatterns, String offset, boolean compileOneDependency)
- throws InterruptedException {
+ Environment env, TargetPatternList options) throws InterruptedException {
List<SkyKey> patternSkyKeys = new ArrayList<>();
for (TargetPatternSkyKeyOrException keyOrException :
- TargetPatternValue.keys(targetPatterns, FilteringPolicies.FILTER_MANUAL, offset)) {
+ TargetPatternValue.keys(options.getTargetPatterns(), FilteringPolicies.FILTER_MANUAL,
+ options.getOffset())) {
try {
patternSkyKeys.add(keyOrException.getSkyKey());
} catch (TargetParsingException e) {
@@ -231,8 +227,10 @@ final class TargetPatternPhaseFunction implements SkyFunction {
}
}
- ResolvedTargets<Target> result = builder.build();
- if (compileOneDependency) {
+ ResolvedTargets<Target> result = builder
+ .filter(TargetUtils.tagFilter(options.getBuildTargetFilter()))
+ .build();
+ if (options.getCompileOneDependency()) {
TargetProvider targetProvider = new EnvironmentBackedRecursivePackageProvider(env);
try {
return new CompileOneDependencyTransformer(targetProvider)