aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe
diff options
context:
space:
mode:
authorGravatar Marian Lobur <loburm@google.com>2015-09-16 10:01:38 +0000
committerGravatar Florian Weikert <fwe@google.com>2015-09-16 10:19:10 +0000
commit86bd4fdc16e0e71504dfe0428c188fdb9efab77f (patch)
tree24d079a3fd40b85ff4dc6d86be22987b70b86e1c /src/main/java/com/google/devtools/build/lib/skyframe
parent806130233d4d190dbfaf6a28feb84eb5a010f1c7 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeAnalysisResult.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java7
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);
}
/**