aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2016-02-10 11:39:31 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-02-10 16:34:40 +0000
commit4224fc020c94fb363cad0c0b5dfcc225cd8e2c1a (patch)
treed40727fb5c5404e0c5a432dc66822b08389e032e /src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
parentcaf1477087748b636b7be2bb112ea35f6f2140f4 (diff)
SkyframeLoadingPhaseRunner: implement --compile_one_dependency.
Also fix a bug in the LoadingPhaseRunner - we weren't printing an error for failed targets, duh! -- MOS_MIGRATED_REVID=114310591
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.java18
1 files changed, 15 insertions, 3 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 0f6476f577..ea30c0584c 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
@@ -22,10 +22,13 @@ import com.google.devtools.build.lib.cmdline.TargetParsingException;
import com.google.devtools.build.lib.events.Event;
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;
+import com.google.devtools.build.lib.skyframe.EnvironmentBackedRecursivePackageProvider.MissingDepException;
import com.google.devtools.build.lib.skyframe.TargetPatternPhaseValue.TargetPatternList;
import com.google.devtools.build.lib.skyframe.TargetPatternValue.TargetPatternKey;
import com.google.devtools.build.lib.skyframe.TargetPatternValue.TargetPatternSkyKeyOrException;
@@ -209,11 +212,20 @@ final class TargetPatternPhaseFunction implements SkyFunction {
}
}
+ ResolvedTargets<Target> result = builder.build();
if (compileOneDependency) {
- // TODO(ulfjack): Add support for compile_one_dependency before hooking this up.
- throw new UnsupportedOperationException();
+ TargetProvider targetProvider = new EnvironmentBackedRecursivePackageProvider(env);
+ try {
+ return new CompileOneDependencyTransformer(targetProvider)
+ .transformCompileOneDependency(env.getListener(), result);
+ } catch (MissingDepException e) {
+ return null;
+ } catch (TargetParsingException e) {
+ env.getListener().handle(Event.error(e.getMessage()));
+ return ResolvedTargets.failed();
+ }
}
- return builder.build();
+ return result;
}
/**