aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java26
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetFunction.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java3
5 files changed, 22 insertions, 18 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index e9657f8ae0..c788f56861 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -1052,7 +1052,9 @@ public class BuildView {
configurations.getHostConfiguration(),
/*aspect=*/ null,
getConfigurableAttributeKeysForTesting(eventHandler, ctgNode),
- toolchainContext);
+ toolchainContext == null
+ ? ImmutableSet.of()
+ : toolchainContext.getResolvedToolchainLabels());
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index 14b7dcce69..77fe0add2f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -90,7 +90,7 @@ public abstract class DependencyResolver {
* This is needed to support {@link LateBoundDefault#useHostConfiguration()}.
* @param aspect the aspect applied to this target (if any)
* @param configConditions resolver for config_setting labels
- * @param toolchainContext {@link ToolchainContext} for this target
+ * @param toolchainLabels required toolchain labels
* @return a mapping of each attribute in this rule or aspects to its dependent nodes
*/
public final OrderedSetMultimap<Attribute, Dependency> dependentNodeMap(
@@ -98,7 +98,7 @@ public abstract class DependencyResolver {
BuildConfiguration hostConfig,
@Nullable Aspect aspect,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
- ToolchainContext toolchainContext)
+ ImmutableSet<Label> toolchainLabels)
throws EvalException, InvalidConfigurationException, InterruptedException,
InconsistentAspectOrderException {
NestedSetBuilder<Label> rootCauses = NestedSetBuilder.<Label>stableOrder();
@@ -108,7 +108,7 @@ public abstract class DependencyResolver {
hostConfig,
aspect != null ? ImmutableList.of(aspect) : ImmutableList.<Aspect>of(),
configConditions,
- toolchainContext,
+ toolchainLabels,
rootCauses);
if (!rootCauses.isEmpty()) {
throw new IllegalStateException(rootCauses.build().iterator().next().toString());
@@ -141,7 +141,7 @@ public abstract class DependencyResolver {
* This is needed to support {@link LateBoundDefault#useHostConfiguration()}.
* @param aspects the aspects applied to this target (if any)
* @param configConditions resolver for config_setting labels
- * @param toolchainContext context information for required toolchains
+ * @param toolchainLabels required toolchain labels
* @param rootCauses collector for dep labels that can't be (loading phase) loaded @return a
* mapping of each attribute in this rule or aspects to its dependent nodes
*/
@@ -150,7 +150,7 @@ public abstract class DependencyResolver {
BuildConfiguration hostConfig,
Iterable<Aspect> aspects,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
- @Nullable ToolchainContext toolchainContext,
+ ImmutableSet<Label> toolchainLabels,
NestedSetBuilder<Label> rootCauses)
throws EvalException, InvalidConfigurationException, InterruptedException,
InconsistentAspectOrderException {
@@ -168,7 +168,7 @@ public abstract class DependencyResolver {
visitTargetVisibility(node, rootCauses, outgoingEdges.get(null));
} else if (target instanceof Rule) {
visitRule(
- node, hostConfig, aspects, configConditions, toolchainContext, rootCauses, outgoingEdges);
+ node, hostConfig, aspects, configConditions, toolchainLabels, rootCauses, outgoingEdges);
} else if (target instanceof PackageGroup) {
visitPackageGroup(node, (PackageGroup) target, rootCauses, outgoingEdges.get(null));
} else {
@@ -183,7 +183,7 @@ public abstract class DependencyResolver {
BuildConfiguration hostConfig,
Iterable<Aspect> aspects,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
- @Nullable ToolchainContext toolchainContext,
+ ImmutableSet<Label> toolchainLabels,
NestedSetBuilder<Label> rootCauses,
OrderedSetMultimap<Attribute, Dependency> outgoingEdges)
throws EvalException, InvalidConfigurationException, InconsistentAspectOrderException,
@@ -201,11 +201,9 @@ public abstract class DependencyResolver {
resolveEarlyBoundAttributes(depResolver);
resolveLateBoundAttributes(depResolver, ruleConfig, hostConfig);
- if (toolchainContext != null) {
- Attribute toolchainsAttribute =
- attributeMap.getAttributeDefinition(PlatformSemantics.TOOLCHAINS_ATTR);
- resolveToolchainDependencies(outgoingEdges.get(toolchainsAttribute), toolchainContext);
- }
+ Attribute toolchainsAttribute =
+ attributeMap.getAttributeDefinition(PlatformSemantics.TOOLCHAINS_ATTR);
+ resolveToolchainDependencies(outgoingEdges.get(toolchainsAttribute), toolchainLabels);
}
/**
@@ -405,8 +403,8 @@ public abstract class DependencyResolver {
}
private void resolveToolchainDependencies(
- Set<Dependency> dependencies, ToolchainContext toolchainContext) {
- for (Label label : toolchainContext.getResolvedToolchainLabels()) {
+ Set<Dependency> dependencies, ImmutableSet<Label> toolchainLabels) {
+ for (Label label : toolchainLabels) {
Dependency dependency =
Dependency.withTransitionAndAspects(
label, HostTransition.INSTANCE, AspectCollection.EMPTY);
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 ea70f6ebdc..2df73d1791 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
@@ -404,7 +404,9 @@ public final class ConfiguredTargetFunction implements SkyFunction {
hostConfiguration,
aspects,
configConditions,
- toolchainContext,
+ toolchainContext == null
+ ? ImmutableSet.of()
+ : toolchainContext.getResolvedToolchainLabels(),
transitiveLoadingRootCauses);
} catch (EvalException e) {
// EvalException can only be thrown by computed Skylark attributes in the current rule.
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 27d9a3dd1f..c8e61fe10a 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
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.skyframe;
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
@@ -124,7 +125,7 @@ public class PostConfiguredTargetFunction implements SkyFunction {
hostConfiguration,
/*aspect=*/ null,
configConditions,
- /*toolchainContext=*/ null);
+ /*toolchainLabels=*/ ImmutableSet.of());
if (ct.getConfiguration() != null) {
deps = ConfigurationResolver.resolveConfigurations(env, ctgValue, deps, hostConfiguration,
ruleClassProvider);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java b/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
index 419f042ce4..4069c9aea1 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/DependencyResolverTest.java
@@ -17,6 +17,7 @@ import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
@@ -108,7 +109,7 @@ public class DependencyResolverTest extends AnalysisTestCase {
getHostConfiguration(),
aspect != null ? Aspect.forNative(aspect) : null,
ImmutableMap.<Label, ConfigMatchingProvider>of(),
- /*toolchainContext=*/ null);
+ /*toolchainLabels=*/ ImmutableSet.of());
}
@SafeVarargs