Use new C++ toolchain API in internal Go rules This cl makes sure go rules use the supported API to get information about C++ toolchain. Hopefully this cl is practically noop, but it can happen that more flags are now passed to the C++ compiler and linker than before. It also makes go rules aware of C++ features enabled/disabled by `--features` option. RELNOTES: None. PiperOrigin-RevId: 210533647
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java index b525c95..0d00e1e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -567,7 +567,7 @@ CcLinkParams linkParams, boolean linkCompileOutputSeparately, CppSemantics cppSemantics) - throws InterruptedException { + throws InterruptedException, RuleErrorException { CppLinkActionBuilder builder = new CppLinkActionBuilder( context, binary, toolchain, fdoProvider, featureConfiguration, cppSemantics)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java index 5fca15a..14925a6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
@@ -1239,7 +1239,7 @@ return envBuilder.build(); } - String getToolPathForAction(String actionName) { + public String getToolPathForAction(String actionName) { Preconditions.checkArgument( actionConfigByActionName.containsKey(actionName), "Action %s does not have an enabled configuration in the toolchain.",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java index f0627c0..67a937a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
@@ -39,6 +39,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.packages.RuleErrorConsumer; import com.google.devtools.build.lib.rules.cpp.CcLinkParams.Linkstamp; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration; @@ -1490,7 +1491,8 @@ * #addLibraries}, and {@link #addLinkstamps}. */ public CppLinkActionBuilder addLinkParams( - CcLinkParams linkParams, RuleErrorConsumer errorListener) throws InterruptedException { + CcLinkParams linkParams, RuleErrorConsumer errorListener) + throws InterruptedException, RuleErrorException { addLinkopts(linkParams.flattenedLinkopts()); addLibraries(linkParams.getLibraries()); ExtraLinkTimeLibraries extraLinkTimeLibraries = linkParams.getExtraLinkTimeLibraries();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java index 9c04dc9..fa98dcc 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java
@@ -16,6 +16,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSet; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink; /** @@ -30,7 +31,8 @@ */ public interface ExtraLinkTimeLibrary { /** Build the LibraryToLink inputs to pass to the C++ linker. */ - NestedSet<LibraryToLink> buildLibraries(RuleContext context) throws InterruptedException; + NestedSet<LibraryToLink> buildLibraries(RuleContext context) + throws InterruptedException, RuleErrorException; /** * Get a new Builder for this ExtraLinkTimeLibrary class. This acts
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java index 2d5e1c7..44539bc 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
@@ -38,6 +38,7 @@ import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault; import com.google.devtools.build.lib.packages.Attribute.LabelListLateBoundDefault; import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.java.DeployArchiveBuilder.Compression; import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider.ClasspathType; import com.google.devtools.build.lib.rules.java.JavaConfiguration.JavaOptimizationMode; @@ -462,7 +463,7 @@ List<String> jvmFlags, JavaTargetAttributes.Builder attributesBuilder, boolean shouldStrip) - throws InterruptedException; + throws InterruptedException, RuleErrorException; /** * Add a source artifact to a {@link JavaTargetAttributes.Builder}. It is called when a source
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java index 70a1613..aa6376b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
@@ -54,8 +54,9 @@ return builder.build(); } - static RuleConfiguredTargetBuilder init(RuleContext ruleContext, PythonSemantics semantics, - PyCommon common) throws InterruptedException { + static RuleConfiguredTargetBuilder init( + RuleContext ruleContext, PythonSemantics semantics, PyCommon common) + throws InterruptedException, RuleErrorException { ruleContext.initConfigurationMakeVariableContext(new CcFlagsSupplier(ruleContext)); List<Artifact> srcs = common.validateSrcs();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonSemantics.java index 2ca0bc2..fb53beb 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonSemantics.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec; import com.google.devtools.build.lib.collect.nestedset.NestedSet; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.Collection; @@ -78,7 +79,7 @@ PyCommon common, CcLinkingInfo ccLinkingInfo, NestedSet<PathFragment> imports) - throws InterruptedException; + throws InterruptedException, RuleErrorException; /** * Called at the end of the analysis of {@code py_binary} rules.