diff options
author | 2015-09-16 10:01:38 +0000 | |
---|---|---|
committer | 2015-09-16 10:19:10 +0000 | |
commit | 86bd4fdc16e0e71504dfe0428c188fdb9efab77f (patch) | |
tree | 24d079a3fd40b85ff4dc6d86be22987b70b86e1c /src/main/java/com/google/devtools/build/lib/skyframe | |
parent | 806130233d4d190dbfaf6a28feb84eb5a010f1c7 (diff) |
Add experimental flag, that partially disables loading phase (pattern evaluation, test_suite expansion and configuration creation is still there). Also remove some unused code.
--
MOS_MIGRATED_REVID=103177839
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
3 files changed, 24 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeAnalysisResult.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeAnalysisResult.java index 323dc3d88a..acd6d747ce 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeAnalysisResult.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeAnalysisResult.java @@ -14,7 +14,10 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.ConfiguredTarget; +import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.skyframe.WalkableGraph; import java.util.Collection; @@ -26,14 +29,17 @@ public class SkyframeAnalysisResult { private final ImmutableList<ConfiguredTarget> configuredTargets; private final WalkableGraph walkableGraph; private final ImmutableList<AspectValue> aspects; + private final ImmutableMap<PackageIdentifier, Path> packageRoots; public SkyframeAnalysisResult( ImmutableList<ConfiguredTarget> configuredTargets, WalkableGraph walkableGraph, - ImmutableList<AspectValue> aspects) { + ImmutableList<AspectValue> aspects, + ImmutableMap<PackageIdentifier, Path> packageRoots) { this.configuredTargets = configuredTargets; this.walkableGraph = walkableGraph; this.aspects = aspects; + this.packageRoots = packageRoots; } public Collection<ConfiguredTarget> getConfiguredTargets() { @@ -47,4 +53,8 @@ public class SkyframeAnalysisResult { public Collection<AspectValue> getAspects() { return aspects; } + + public ImmutableMap<PackageIdentifier, Path> getPackageRoots() { + return packageRoots; + } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java index e507d6697d..40bbeb4f9e 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java @@ -46,12 +46,15 @@ import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildIn import com.google.devtools.build.lib.analysis.config.BinTools; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; +import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.AspectParameters; import com.google.devtools.build.lib.packages.Attribute; +import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.packages.RuleClassProvider; import com.google.devtools.build.lib.packages.Target; +import com.google.devtools.build.lib.pkgcache.LoadingPhaseRunner; import com.google.devtools.build.lib.skyframe.ActionLookupValue.ActionLookupKey; import com.google.devtools.build.lib.skyframe.AspectValue.AspectKey; import com.google.devtools.build.lib.skyframe.BuildInfoCollectionValue.BuildInfoKeyAndConfig; @@ -205,6 +208,7 @@ public final class SkyframeBuildView { ImmutableMap<Action, ConflictException> badActions = skyframeExecutor.findArtifactConflicts(); Collection<AspectValue> goodAspects = Lists.newArrayListWithCapacity(values.size()); + NestedSetBuilder<Package> packages = NestedSetBuilder.stableOrder(); for (AspectKey aspectKey : aspectKeys) { AspectValue value = (AspectValue) result.get(AspectValue.key(aspectKey)); if (value == null) { @@ -212,6 +216,7 @@ public final class SkyframeBuildView { continue; } goodAspects.add(value); + packages.addTransitive(value.getTransitivePackages()); } // Filter out all CTs that have a bad action and convert to a list of configured targets. This @@ -225,15 +230,16 @@ public final class SkyframeBuildView { continue; } goodCts.add(ctValue.getConfiguredTarget()); + packages.addTransitive(ctValue.getTransitivePackages()); } - if (!result.hasError() && badActions.isEmpty()) { setDeserializedArtifactOwners(); return new SkyframeAnalysisResult( ImmutableList.copyOf(goodCts), result.getWalkableGraph(), - ImmutableList.copyOf(goodAspects)); + ImmutableList.copyOf(goodAspects), + LoadingPhaseRunner.collectPackageRoots(packages.build().toCollection())); } // --nokeep_going so we fail with an exception for the first error. @@ -341,7 +347,8 @@ public final class SkyframeBuildView { return new SkyframeAnalysisResult( ImmutableList.copyOf(goodCts), result.getWalkableGraph(), - ImmutableList.copyOf(goodAspects)); + ImmutableList.copyOf(goodAspects), + LoadingPhaseRunner.collectPackageRoots(packages.build().toCollection())); } @Nullable diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index 050497fc64..9a4f082abd 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -1287,17 +1287,16 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { /** Configures a given set of configured targets. */ public EvaluationResult<ActionLookupValue> configureTargets( List<ConfiguredTargetKey> values, List<AspectKey> aspectKeys, boolean keepGoing) - throws InterruptedException { + throws InterruptedException { checkActive(); List<SkyKey> keys = new ArrayList<>(ConfiguredTargetValue.keys(values)); for (AspectKey aspectKey : aspectKeys) { keys.add(AspectValue.key(aspectKey)); } - // Make sure to not run too many analysis threads. This can cause memory thrashing. - return buildDriver.evaluate( - keys, keepGoing, ResourceUsage.getAvailableProcessors(), errorEventListener); + return buildDriver.evaluate(keys, keepGoing, ResourceUsage.getAvailableProcessors(), + errorEventListener); } /** |