From 006a80425e7dd521634c5735d2730f40e9e82e06 Mon Sep 17 00:00:00 2001 From: Googler Date: Tue, 9 May 2017 11:26:14 -0400 Subject: Make the cc_toolchain libc_top use the target configuration The removes redundancy from the logic around calculating the sysroot (and was been a TODO since 2014!) RELNOTES: None PiperOrigin-RevId: 155506682 --- .../com/google/devtools/build/lib/analysis/AnalysisUtils.java | 8 ++++---- .../com/google/devtools/build/lib/rules/SkylarkRuleContext.java | 2 +- .../devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java | 3 ++- .../java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java | 8 ++++---- .../com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java | 4 +--- .../java/com/google/devtools/build/lib/rules/java/JavaHelper.java | 3 ++- 6 files changed, 14 insertions(+), 14 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib') diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java index 715939500e..209eb226ae 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java @@ -120,11 +120,11 @@ public final class AnalysisUtils { } /** - * Returns the middleman artifact on the specified attribute of the specified rule, or an empty - * set if it does not exist. + * Returns the middleman artifact on the specified attribute of the specified rule for the + * specified mode, or an empty set if it does not exist. */ - public static NestedSet getMiddlemanFor(RuleContext rule, String attribute) { - TransitiveInfoCollection prereq = rule.getPrerequisite(attribute, Mode.HOST); + public static NestedSet getMiddlemanFor(RuleContext rule, String attribute, Mode mode) { + TransitiveInfoCollection prereq = rule.getPrerequisite(attribute, mode); if (prereq == null) { return NestedSetBuilder.emptySet(Order.STABLE_ORDER); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java index 7ab8097ed9..009b6e437f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java @@ -947,7 +947,7 @@ public final class SkylarkRuleContext implements SkylarkValue { @SkylarkCallable(documented = false) public NestedSet middleMan(String attribute) throws EvalException { checkMutable("middle_man"); - return AnalysisUtils.getMiddlemanFor(ruleContext, attribute); + return AnalysisUtils.getMiddlemanFor(ruleContext, attribute, Mode.HOST); } @SkylarkCallable(documented = false) diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java index 92902bcac7..fd679c969b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java @@ -17,6 +17,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.AnalysisUtils; +import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -110,7 +111,7 @@ public class AppleCcToolchain extends CcToolchain { RuleContext ruleContext, NestedSet link) { return NestedSetBuilder.stableOrder() .addTransitive(link) - .addTransitive(AnalysisUtils.getMiddlemanFor(ruleContext, ":libc_top")) + .addTransitive(AnalysisUtils.getMiddlemanFor(ruleContext, ":libc_top", Mode.TARGET)) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java index da27ada49e..2b0b66cde0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java @@ -385,7 +385,7 @@ public class CcToolchain implements RuleConfiguredTargetFactory { } private NestedSet inputsForLibc(RuleContext ruleContext) { - TransitiveInfoCollection libc = ruleContext.getPrerequisite(":libc_top", Mode.HOST); + TransitiveInfoCollection libc = ruleContext.getPrerequisite(":libc_top", Mode.TARGET); return libc != null ? libc.getProvider(FileProvider.class).getFilesToBuild() : NestedSetBuilder.emptySet(Order.STABLE_ORDER); @@ -395,7 +395,7 @@ public class CcToolchain implements RuleConfiguredTargetFactory { NestedSet crosstoolMiddleman) { return NestedSetBuilder.stableOrder() .addTransitive(crosstoolMiddleman) - .addTransitive(AnalysisUtils.getMiddlemanFor(ruleContext, ":libc_top")) + .addTransitive(AnalysisUtils.getMiddlemanFor(ruleContext, ":libc_top", Mode.TARGET)) .build(); } @@ -407,7 +407,7 @@ public class CcToolchain implements RuleConfiguredTargetFactory { RuleContext ruleContext, NestedSet link) { return NestedSetBuilder.stableOrder() .addTransitive(link) - .addTransitive(AnalysisUtils.getMiddlemanFor(ruleContext, ":libc_top")) + .addTransitive(AnalysisUtils.getMiddlemanFor(ruleContext, ":libc_top", Mode.TARGET)) .add(ruleContext.getPrerequisiteArtifact("$interface_library_builder", Mode.HOST)) .add(ruleContext.getPrerequisiteArtifact("$link_dynamic_library_tool", Mode.HOST)) .build(); @@ -493,7 +493,7 @@ public class CcToolchain implements RuleConfiguredTargetFactory { private PathFragment calculateSysroot(RuleContext ruleContext) { - TransitiveInfoCollection sysrootTarget = ruleContext.getPrerequisite(":sysroot", Mode.TARGET); + TransitiveInfoCollection sysrootTarget = ruleContext.getPrerequisite(":libc_top", Mode.TARGET); if (sysrootTarget == null) { CppConfiguration cppConfiguration = Preconditions.checkNotNull(ruleContext.getFragment(CppConfiguration.class)); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java index 8b7dbe92ff..f7414408f8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java @@ -85,9 +85,7 @@ public final class CcToolchainRule implements RuleDefinition { .cfg(HOST) .singleArtifact() .value(env.getToolsLabel("//tools/cpp:link_dynamic_library"))) - // TODO(bazel-team): Should be using the TARGET configuration. - .add(attr(":libc_top", LABEL).cfg(HOST).value(LIBC_TOP)) - .add(attr(":sysroot", LABEL).value(LIBC_TOP)) + .add(attr(":libc_top", LABEL).value(LIBC_TOP)) .add( attr(":lipo_context_collector", LABEL) .cfg(LipoTransition.LIPO_COLLECTOR) diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java index fc44f09b70..5984de833e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java @@ -145,7 +145,8 @@ public abstract class JavaHelper { /** Returns the artifacts required to invoke {@code javahome} relative binary in the action. */ public static NestedSet getHostJavabaseInputs( RuleContext ruleContext, String implicitAttributesSuffix) { - return AnalysisUtils.getMiddlemanFor(ruleContext, ":host_jdk" + implicitAttributesSuffix); + return AnalysisUtils.getMiddlemanFor( + ruleContext, ":host_jdk" + implicitAttributesSuffix, Mode.HOST); } /** -- cgit v1.2.3