diff options
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 |