diff options
author | Ulf Adams <ulfjack@google.com> | 2016-02-10 11:39:31 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-02-10 16:34:40 +0000 |
commit | 4224fc020c94fb363cad0c0b5dfcc225cd8e2c1a (patch) | |
tree | d40727fb5c5404e0c5a432dc66822b08389e032e /src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java | |
parent | caf1477087748b636b7be2bb112ea35f6f2140f4 (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.java | 18 |
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; } /** |