diff options
author | 2017-11-02 16:37:33 -0400 | |
---|---|---|
committer | 2017-11-03 09:53:14 -0400 | |
commit | 10fb950253d3e947b07dcd18a42777a47e5de695 (patch) | |
tree | bdbb034eca45b05f1805c2485bc9539d4c9f5e85 | |
parent | 7bf7483d0853c753905bd6c582da7dcf878b183d (diff) |
Automated rollback of commit 5d42ae10195cd1acb9612df3a3d520f09b0c3e39.
*** Reason for rollback ***
Breaks alphago targets.
*** Original change description ***
Remove CppConfiguration#getFeatures in favor of
CcToolchainProvider#getFeatures.
PiperOrigin-RevId: 174373331
9 files changed, 30 insertions, 29 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java index 30ef49edb0..72c1749bd0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java @@ -300,7 +300,7 @@ public final class CcToolchainProvider extends ToolchainInfo { */ @Nullable public CcToolchainFeatures getFeatures() { - return toolchainInfo.getFeatures(); + return cppConfiguration == null ? null : cppConfiguration.getFeatures(); } /** diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java index 3a28981443..8fad25b074 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java @@ -39,7 +39,7 @@ public final class CppCompileActionTemplate implements ActionTemplate<CppCompile private final CppCompileActionBuilder cppCompileActionBuilder; private final Artifact sourceTreeArtifact; private final Artifact outputTreeArtifact; - private final CcToolchainProvider toolchain; + private final CppConfiguration cppConfiguration; private final Iterable<ArtifactCategory> categories; private final ActionOwner actionOwner; private final NestedSet<Artifact> mandatoryInputs; @@ -49,25 +49,25 @@ public final class CppCompileActionTemplate implements ActionTemplate<CppCompile * Creates an CppCompileActionTemplate. * @param sourceTreeArtifact the TreeArtifact that contains source files to compile. * @param outputTreeArtifact the TreeArtifact that contains compilation outputs. - * @param cppCompileActionBuilder An almost completely configured {@link CppCompileActionBuilder} + * @param cppCompileActionBuilder An almost completely configured {@link CppCompileActionBuilder} * without the input and output files set. It is used as a template to instantiate expanded * {CppCompileAction}s. - * @param toolchain the CcToolchainProvider representing the c++ toolchain for this action - * @param categories A list of {@link ArtifactCategory} used to calculate output file name from a - * source file name. + * @param cppConfiguration configuration for cpp. + * @param categories A list of {@link ArtifactCategory} used to calculate output file name from + * a source file name. * @param actionOwner the owner of this {@link ActionTemplate}. */ CppCompileActionTemplate( Artifact sourceTreeArtifact, Artifact outputTreeArtifact, CppCompileActionBuilder cppCompileActionBuilder, - CcToolchainProvider toolchain, + CppConfiguration cppConfiguration, Iterable<ArtifactCategory> categories, ActionOwner actionOwner) { this.cppCompileActionBuilder = cppCompileActionBuilder; this.sourceTreeArtifact = sourceTreeArtifact; this.outputTreeArtifact = outputTreeArtifact; - this.toolchain = toolchain; + this.cppConfiguration = cppConfiguration; this.categories = categories; this.actionOwner = actionOwner; this.mandatoryInputs = cppCompileActionBuilder.buildMandatoryInputs(); @@ -124,7 +124,7 @@ public final class CppCompileActionTemplate implements ActionTemplate<CppCompile String outputName = FileSystemUtils.removeExtension( inputTreeFileArtifact.getParentRelativePath().getPathString()); for (ArtifactCategory category : categories) { - outputName = toolchain.getFeatures().getArtifactNameForCategory(category, outputName); + outputName = cppConfiguration.getFeatures().getArtifactNameForCategory(category, outputName); } return outputName; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java index b48b0e6a61..187d0fc552 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java @@ -612,6 +612,14 @@ public class CppConfiguration extends BuildConfiguration.Fragment { } /** + * Returns the configured features of the toolchain. Rules should not call this directly, but + * instead use {@code CcToolchainProvider.getFeatures}. + */ + public CcToolchainFeatures getFeatures() { + return cppToolchainInfo.getFeatures(); + } + + /** * Returns the configured current compilation mode. Rules should not call this directly, but * instead use {@code CcToolchainProvider.getCompilationMode}. */ diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java index c4bf33f17a..3a1c3d8e8e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java @@ -1165,14 +1165,13 @@ public final class CppModel { coptsFilter, features); // Make sure this builder doesn't reference ruleContext outside of analysis phase. - CppCompileActionTemplate actionTemplate = - new CppCompileActionTemplate( - sourceArtifact, - outputFiles, - builder, - ccToolchain, - outputCategories, - ruleContext.getActionOwner()); + CppCompileActionTemplate actionTemplate = new CppCompileActionTemplate( + sourceArtifact, + outputFiles, + builder, + cppConfiguration, + outputCategories, + ruleContext.getActionOwner()); env.registerAction(actionTemplate); return outputFiles; diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java index 8b8a27ea8e..f90aa1883e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java @@ -40,7 +40,6 @@ import com.google.devtools.build.lib.rules.objc.ObjcProvider.Key; import com.google.devtools.build.lib.rules.proto.ProtoSourcesProvider; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.TreeMap; /** @@ -106,10 +105,7 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory { ruleContext.getPrerequisitesByConfiguration("deps", Mode.SPLIT, ObjcProtoProvider.class); Map<String, NestedSet<Artifact>> outputGroupCollector = new TreeMap<>(); - for (Entry<BuildConfiguration, CcToolchainProvider> childConfigAndToolchain : - childConfigurationsAndToolchains.entrySet()) { - BuildConfiguration childConfig = childConfigAndToolchain.getKey(); - CcToolchainProvider childToolchain = childConfigAndToolchain.getValue(); + for (BuildConfiguration childConfig : childConfigurationsAndToolchains.keySet()) { Iterable<ObjcProtoProvider> objcProtoProviders = objcProtoProvidersMap.get(childConfig); ProtobufSupport protoSupport = new ProtobufSupport( @@ -145,7 +141,6 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory { new CompilationSupport.Builder() .setRuleContext(ruleContext) .setConfig(childConfig) - .setToolchainProvider(childToolchain) .setOutputGroupCollector(outputGroupCollector) .build(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java index f098da5744..7a9282e7ce 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java @@ -342,9 +342,8 @@ public abstract class CompilationSupport { this.usePch = usePch; // TODO(b/62143697): Remove this check once all rules are using the crosstool support. if (ruleContext - .attributes() - .has(CcToolchain.CC_TOOLCHAIN_DEFAULT_ATTRIBUTE_NAME, BuildType.LABEL) - || ruleContext.attributes().has(":j2objc_cc_toolchain", BuildType.LABEL)) { + .attributes() + .has(CcToolchain.CC_TOOLCHAIN_DEFAULT_ATTRIBUTE_NAME, BuildType.LABEL)) { if (toolchain == null) { toolchain = CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java index c1c72602dd..958e025f68 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java @@ -50,6 +50,7 @@ import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfig import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables.VariablesExtension; import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider; import com.google.devtools.build.lib.rules.cpp.CppCompileAction; +import com.google.devtools.build.lib.rules.cpp.CppConfiguration; import com.google.devtools.build.lib.rules.cpp.CppHelper; import com.google.devtools.build.lib.rules.cpp.CppLinkAction; import com.google.devtools.build.lib.rules.cpp.CppLinkActionBuilder; @@ -550,7 +551,8 @@ public class CrosstoolCompilationSupport extends CompilationSupport { activatedCrosstoolSelectables.addAll(ruleContext.getFeatures()); try { - return toolchain + return configuration + .getFragment(CppConfiguration.class) .getFeatures() .getFeatureConfiguration( FeatureSpecification.create( diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java index 5b508c2366..998e8ded0c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java @@ -262,7 +262,6 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF CompilationSupport compilationSupport = new CompilationSupport.Builder() .setRuleContext(ruleContext) - .setToolchainProvider(ccToolchain) .setIntermediateArtifacts(ObjcRuleClasses.j2objcIntermediateArtifacts(ruleContext)) .doNotUsePch() .build(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java index f71d4ff67c..523d23363b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java @@ -176,7 +176,6 @@ public class MultiArchBinarySupport { new CompilationSupport.Builder() .setRuleContext(ruleContext) .setConfig(dependencySpecificConfiguration.config()) - .setToolchainProvider(dependencySpecificConfiguration.toolchain()) .setOutputGroupCollector(outputMapCollector) .build(); |