aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java11
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java25
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java3
7 files changed, 49 insertions, 29 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
index c04365a903..3d970bb7ee 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -275,11 +275,6 @@ public final class ConfiguredTargetFactory {
@Nullable ToolchainContext toolchainContext)
throws InterruptedException, ActionConflictException {
- // Load the requested toolchains into the ToolchainContext.
- if (toolchainContext != null) {
- toolchainContext.resolveToolchains(prerequisiteMap);
- }
-
// Visibility computation and checking is done for every rule.
RuleContext ruleContext =
new RuleContext.Builder(
@@ -392,11 +387,6 @@ public final class ConfiguredTargetFactory {
BuildConfiguration hostConfiguration)
throws AspectFunctionException, InterruptedException {
- // Load the requested toolchains into the ToolchainContext.
- if (toolchainContext != null) {
- toolchainContext.resolveToolchains(prerequisiteMap);
- }
-
RuleContext.Builder builder =
new RuleContext.Builder(
env,
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index e1339795f5..027323239c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -434,7 +434,9 @@ public final class AspectFunction implements SkyFunction {
originalTargetAndAspectConfiguration,
aspectPath,
configConditions,
- toolchainContext,
+ toolchainContext == null
+ ? ImmutableSet.of()
+ : toolchainContext.resolvedToolchainLabels(),
ruleClassProvider,
view.getHostConfiguration(originalTargetAndAspectConfiguration.getConfiguration()),
transitivePackagesForPackageRootResolution,
@@ -451,6 +453,11 @@ public final class AspectFunction implements SkyFunction {
new AspectCreationException("Loading failed", transitiveRootCauses.build()));
}
+ // Load the requested toolchains into the ToolchainContext, now that we have dependencies.
+ if (toolchainContext != null) {
+ toolchainContext.resolveToolchains(depValueMap);
+ }
+
return createAspect(
env,
key,
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index 0598feb03e..938ce5e51b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -294,7 +294,9 @@ public final class ConfiguredTargetFunction implements SkyFunction {
ctgValue,
ImmutableList.<Aspect>of(),
configConditions,
- toolchainContext,
+ toolchainContext == null
+ ? ImmutableSet.of()
+ : toolchainContext.resolvedToolchainLabels(),
ruleClassProvider,
view.getHostConfiguration(configuration),
transitivePackagesForPackageRootResolution,
@@ -309,6 +311,12 @@ public final class ConfiguredTargetFunction implements SkyFunction {
"Analysis failed", configuration, transitiveRootCauses.build()));
}
Preconditions.checkNotNull(depValueMap);
+
+ // Load the requested toolchains into the ToolchainContext, now that we have dependencies.
+ if (toolchainContext != null) {
+ toolchainContext.resolveToolchains(depValueMap);
+ }
+
ConfiguredTargetValue ans =
createConfiguredTarget(
view,
@@ -416,7 +424,7 @@ public final class ConfiguredTargetFunction implements SkyFunction {
* @param ctgValue the label and the configuration of the node
* @param aspects
* @param configConditions the configuration conditions for evaluating the attributes of the node
- * @param toolchainContext context information for required toolchains
+ * @param toolchainLabels labels of required toolchain dependencies
* @param ruleClassProvider rule class provider for determining the right configuration fragments
* to apply to deps
* @param hostConfiguration the host configuration. There's a noticeable performance hit from
@@ -433,7 +441,7 @@ public final class ConfiguredTargetFunction implements SkyFunction {
TargetAndConfiguration ctgValue,
Iterable<Aspect> aspects,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
- @Nullable ToolchainContext toolchainContext,
+ ImmutableSet<Label> toolchainLabels,
RuleClassProvider ruleClassProvider,
BuildConfiguration hostConfiguration,
@Nullable NestedSetBuilder<Package> transitivePackagesForPackageRootResolution,
@@ -450,9 +458,7 @@ public final class ConfiguredTargetFunction implements SkyFunction {
hostConfiguration,
aspects,
configConditions,
- toolchainContext == null
- ? ImmutableSet.of()
- : toolchainContext.resolvedToolchainLabels(),
+ toolchainLabels,
transitiveRootCauses,
defaultBuildOptions,
((ConfiguredRuleClassProvider) ruleClassProvider).getTrimmingTransitionFactory());
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java
index e56942b2fd..9e05215db8 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java
@@ -125,7 +125,7 @@ public class PostConfiguredTargetFunction implements SkyFunction {
hostConfiguration,
/*aspect=*/ null,
configConditions,
- /*toolchainLabels*/ ImmutableSet.of(),
+ /*toolchainLabels=*/ ImmutableSet.of(),
defaultBuildOptions,
((ConfiguredRuleClassProvider) ruleClassProvider).getTrimmingTransitionFactory());
if (configuredTargetAndData.getConfiguration() != null) {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
index 25e0c83f65..471c742ba6 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.fail;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@@ -376,8 +377,14 @@ public class BuildViewTest extends BuildViewTestBase {
"filegroup(name='top', srcs=[':inner', 'file'])",
"sh_binary(name='inner', srcs=['script.sh'])");
ConfiguredTarget top = Iterables.getOnlyElement(update("//package:top").getTargetsToBuild());
- Iterable<Dependency> targets = getView().getDirectPrerequisiteDependenciesForTesting(
- reporter, top, getBuildConfigurationCollection(), /*toolchainContext=*/ null).values();
+ Iterable<Dependency> targets =
+ getView()
+ .getDirectPrerequisiteDependenciesForTesting(
+ reporter,
+ top,
+ getBuildConfigurationCollection(),
+ /*toolchainLabels=*/ ImmutableSet.of())
+ .values();
Dependency innerDependency =
Dependency.withTransitionAndAspects(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java
index 14a3cc5386..7ab4d65212 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java
@@ -262,7 +262,7 @@ public class BuildViewForTesting {
configuration,
ImmutableSet.copyOf(
getDirectPrerequisiteDependenciesForTesting(
- eventHandler, ct, configurations, /*toolchainContext=*/ null)
+ eventHandler, ct, configurations, /*toolchainLabels=*/ ImmutableSet.of())
.values()));
}
@@ -271,7 +271,7 @@ public class BuildViewForTesting {
final ExtendedEventHandler eventHandler,
final ConfiguredTarget ct,
BuildConfigurationCollection configurations,
- ToolchainContext toolchainContext)
+ ImmutableSet<Label> toolchainLabels)
throws EvalException, InvalidConfigurationException, InterruptedException,
InconsistentAspectOrderException {
@@ -352,7 +352,7 @@ public class BuildViewForTesting {
configurations.getHostConfiguration(),
/*aspect=*/ null,
getConfigurableAttributeKeysForTesting(eventHandler, ctgNode),
- toolchainContext == null ? ImmutableSet.of() : toolchainContext.resolvedToolchainLabels(),
+ toolchainLabels,
skyframeExecutor.getDefaultBuildOptions(),
ruleClassProvider.getTrimmingTransitionFactory());
}
@@ -386,12 +386,12 @@ public class BuildViewForTesting {
final ExtendedEventHandler eventHandler,
ConfiguredTarget target,
BuildConfigurationCollection configurations,
- ToolchainContext toolchainContext)
+ ImmutableSet<Label> toolchainLabels)
throws EvalException, InvalidConfigurationException, InterruptedException,
InconsistentAspectOrderException {
OrderedSetMultimap<Attribute, Dependency> depNodeNames =
getDirectPrerequisiteDependenciesForTesting(
- eventHandler, target, configurations, toolchainContext);
+ eventHandler, target, configurations, toolchainLabels);
ImmutableMultimap<Dependency, ConfiguredTargetAndData> cts =
skyframeExecutor.getConfiguredTargetMapForTesting(
@@ -495,7 +495,10 @@ public class BuildViewForTesting {
requiredToolchains, targetConfig, eventHandler);
OrderedSetMultimap<Attribute, ConfiguredTargetAndData> prerequisiteMap =
getPrerequisiteMapForTesting(
- eventHandler, configuredTarget, configurations, toolchainContext);
+ eventHandler,
+ configuredTarget,
+ configurations,
+ toolchainContext.resolvedToolchainLabels());
toolchainContext.resolveToolchains(prerequisiteMap);
return new RuleContext.Builder(
@@ -512,7 +515,10 @@ public class BuildViewForTesting {
PackageGroupContents.create(ImmutableList.of(PackageSpecification.everything()))))
.setPrerequisites(
getPrerequisiteMapForTesting(
- eventHandler, configuredTarget, configurations, toolchainContext))
+ eventHandler,
+ configuredTarget,
+ configurations,
+ toolchainContext.resolvedToolchainLabels()))
.setConfigConditions(ImmutableMap.<Label, ConfigMatchingProvider>of())
.setUniversalFragments(ruleClassProvider.getUniversalFragments())
.setToolchainContext(toolchainContext)
@@ -534,7 +540,10 @@ public class BuildViewForTesting {
InconsistentAspectOrderException {
Collection<ConfiguredTargetAndData> configuredTargets =
getPrerequisiteMapForTesting(
- eventHandler, dependentTarget, configurations, /*toolchainContext=*/ null)
+ eventHandler,
+ dependentTarget,
+ configurations,
+ /*toolchainLabels=*/ ImmutableSet.of())
.values();
for (ConfiguredTargetAndData ct : configuredTargets) {
if (ct.getTarget().getLabel().equals(desiredTarget)) {
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java
index 79fdc5f56e..31091267d3 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java
@@ -24,6 +24,7 @@ import com.google.common.collect.Collections2;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimap;
@@ -145,7 +146,7 @@ public class ConfigurationsForTargetsTest extends AnalysisTestCase {
(TargetAndConfiguration) skyKey.argument(),
ImmutableList.<Aspect>of(),
ImmutableMap.<Label, ConfigMatchingProvider>of(),
- /*toolchainContext=*/ null,
+ /*toolchainLabels=*/ ImmutableSet.of(),
stateProvider.lateBoundRuleClassProvider(),
stateProvider.lateBoundHostConfig(),
NestedSetBuilder.<Package>stableOrder(),