diff options
author | fwe <fwe@google.com> | 2017-06-12 19:07:05 +0200 |
---|---|---|
committer | Yun Peng <pcloudy@google.com> | 2017-06-13 09:37:52 +0200 |
commit | 9000e61fc1737444392ffe251727e8331fab3cf2 (patch) | |
tree | 6c6d3934959bc9b5c8335184d913e6a453936e81 /src/main/java/com/google/devtools | |
parent | af70ce59ac6e0c2651a09cf5f1aaba94a71e9a4b (diff) |
Automated g4 rollback of commit 29ec1b89989db411d2038e2df8657b6435f80403.
*** Reason for rollback ***
Breaks the classroom_ios TAP project [1] in the presence of --experimental_objc_crosstool=all, which was added to the global .blazerc last week.
[1] []
*** Original change description ***
Change ProtobufSupport to use CrosstoolCompilationSupport if experimental_objc_crosstool=all
PiperOrigin-RevId: 158727100
Diffstat (limited to 'src/main/java/com/google/devtools')
7 files changed, 37 insertions, 95 deletions
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 a231754922..0ffe8b17de 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 @@ -117,8 +117,7 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory { protosToAvoid, ImmutableList.<ProtoSourcesProvider>of(), objcProtoProviders, - ProtobufSupport.getTransitivePortableProtoFilters(objcProtoProviders), - childConfigurationsAndToolchains.get(childConfig)) + ProtobufSupport.getTransitivePortableProtoFilters(objcProtoProviders)) .registerGenerationActions() .registerCompilationActions(); 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 576d9022a9..5018e98b34 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 @@ -304,7 +304,6 @@ public abstract class CompilationSupport { protected final IntermediateArtifacts intermediateArtifacts; protected final boolean useDeps; protected final Map<String, NestedSet<Artifact>> outputGroupCollector; - protected final CcToolchainProvider toolchain; protected final boolean isTestRule; /** @@ -327,7 +326,6 @@ public abstract class CompilationSupport { CompilationAttributes compilationAttributes, boolean useDeps, Map<String, NestedSet<Artifact>> outputGroupCollector, - CcToolchainProvider toolchain, boolean isTestRule) { this.ruleContext = ruleContext; this.buildConfiguration = buildConfiguration; @@ -338,18 +336,6 @@ public abstract class CompilationSupport { this.useDeps = useDeps; this.isTestRule = isTestRule; this.outputGroupCollector = outputGroupCollector; - // 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)) { - if (toolchain == null) { - toolchain = CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext); - } - this.toolchain = toolchain; - } else { - // Since the rule context doesn't have a toolchain at all, ignore any provided override. - this.toolchain = null; - } } /** Builder for {@link CompilationSupport} */ @@ -361,7 +347,6 @@ public abstract class CompilationSupport { private boolean useDeps = true; private Map<String, NestedSet<Artifact>> outputGroupCollector; private boolean isObjcLibrary = false; - private CcToolchainProvider toolchain; private boolean isTestRule = false; /** Sets the {@link RuleContext} for the calling target. */ @@ -428,17 +413,6 @@ public abstract class CompilationSupport { } /** - * Sets {@link CcToolchainProvider} for the calling target. - * - * <p>This is needed if it can't correctly be inferred directly from the rule context. Setting - * to null causes the default to be used as if this was never called. - */ - public Builder setToolchainProvider(CcToolchainProvider toolchain) { - this.toolchain = toolchain; - return this; - } - - /** * Returns a {@link CompilationSupport} instance. This is either a {@link * CrosstoolCompilationSupport} or {@link LegacyCompilationSupport} depending on the value of * --experimental_objc_crosstool. @@ -474,7 +448,6 @@ public abstract class CompilationSupport { compilationAttributes, useDeps, outputGroupCollector, - toolchain, isTestRule); } else { return new LegacyCompilationSupport( @@ -484,7 +457,6 @@ public abstract class CompilationSupport { compilationAttributes, useDeps, outputGroupCollector, - toolchain, isTestRule); } } @@ -506,7 +478,7 @@ public abstract class CompilationSupport { objcProvider, ExtraCompileArgs.NONE, ImmutableList.<PathFragment>of(), - toolchain, + maybeGetCcToolchain(), maybeGetFdoSupport()); } @@ -587,7 +559,7 @@ public abstract class CompilationSupport { return registerFullyLinkAction( objcProvider, outputArchive, - toolchain, + maybeGetCcToolchain(), maybeGetFdoSupport()); } @@ -645,7 +617,7 @@ public abstract class CompilationSupport { objcProvider, inputArtifacts, outputArchive, - toolchain, + maybeGetCcToolchain(), maybeGetFdoSupport()); } @@ -774,7 +746,7 @@ public abstract class CompilationSupport { common.getObjcProvider(), extraCompileArgs, priorityHeaders, - toolchain, + maybeGetCcToolchain(), maybeGetFdoSupport()); } return this; @@ -1450,6 +1422,18 @@ public abstract class CompilationSupport { } @Nullable + private CcToolchainProvider maybeGetCcToolchain() { + // TODO(rduan): Remove this check once all rules are using the crosstool support. + if (ruleContext + .attributes() + .has(CcToolchain.CC_TOOLCHAIN_DEFAULT_ATTRIBUTE_NAME, BuildType.LABEL)) { + return CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext); + } else { + return null; + } + } + + @Nullable private FdoSupportProvider maybeGetFdoSupport() { // TODO(rduan): Remove this check once all rules are using the crosstool support. if (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 5c06156207..d87616a1ad 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 @@ -134,7 +134,6 @@ public class CrosstoolCompilationSupport extends CompilationSupport { CompilationAttributes.Builder.fromRuleContext(ruleContext).build(), /*useDeps=*/ true, outputGroupCollector, - null, /*isTestRule=*/ false); } @@ -146,7 +145,6 @@ public class CrosstoolCompilationSupport extends CompilationSupport { * @param intermediateArtifacts IntermediateArtifacts for deriving artifact paths * @param compilationAttributes attributes of the calling target * @param useDeps true if deps should be used - * @param toolchain if not null overrides the default toolchain from the ruleContext. */ public CrosstoolCompilationSupport( RuleContext ruleContext, @@ -155,7 +153,6 @@ public class CrosstoolCompilationSupport extends CompilationSupport { CompilationAttributes compilationAttributes, boolean useDeps, Map<String, NestedSet<Artifact>> outputGroupCollector, - CcToolchainProvider toolchain, boolean isTestRule) { super( ruleContext, @@ -164,7 +161,6 @@ public class CrosstoolCompilationSupport extends CompilationSupport { compilationAttributes, useDeps, outputGroupCollector, - toolchain, isTestRule); } @@ -191,28 +187,18 @@ public class CrosstoolCompilationSupport extends CompilationSupport { // TODO(b/30783125): Signal the need for this action in the CROSSTOOL. registerObjFilelistAction(getObjFiles(compilationArtifacts, intermediateArtifacts), objList); - + extension.addVariableCategory(VariableCategory.ARCHIVE_VARIABLES); - + helper = createCcLibraryHelper( - objcProvider, - compilationArtifacts, - extension.build(), - ccToolchain, - fdoSupport, - priorityHeaders) + objcProvider, compilationArtifacts, extension.build(), ccToolchain, fdoSupport) .setLinkType(LinkTargetType.OBJC_ARCHIVE) .addLinkActionInput(objList); } else { helper = createCcLibraryHelper( - objcProvider, - compilationArtifacts, - extension.build(), - ccToolchain, - fdoSupport, - priorityHeaders); + objcProvider, compilationArtifacts, extension.build(), ccToolchain, fdoSupport); } Info info = helper.build(); @@ -392,8 +378,7 @@ public class CrosstoolCompilationSupport extends CompilationSupport { CompilationArtifacts compilationArtifacts, VariablesExtension extension, CcToolchainProvider ccToolchain, - FdoSupportProvider fdoSupport, - Iterable<PathFragment> priorityHeaders) { + FdoSupportProvider fdoSupport) { PrecompiledFiles precompiledFiles = new PrecompiledFiles(ruleContext); Collection<Artifact> arcSources = ImmutableSortedSet.copyOf(compilationArtifacts.getSrcs()); Collection<Artifact> nonArcSources = @@ -412,8 +397,7 @@ public class CrosstoolCompilationSupport extends CompilationSupport { createIncludeProcessing(privateHdrs, objcProvider, pchHdr), ruleContext.getFragment(ObjcConfiguration.class), isHeaderThinningEnabled(), - intermediateArtifacts, - buildConfiguration); + intermediateArtifacts); CcLibraryHelper result = new CcLibraryHelper( ruleContext, @@ -436,7 +420,6 @@ public class CrosstoolCompilationSupport extends CompilationSupport { // generate C++ protos. .setCheckDepsGenerateCpp(false) .addCopts(getCompileRuleCopts()) - .addIncludeDirs(priorityHeaders) .addIncludeDirs(objcProvider.get(INCLUDE)) .addCopts(ruleContext.getFragment(ObjcConfiguration.class).getCoptsForCompilationMode()) .addSystemIncludeDirs(objcProvider.get(INCLUDE_SYSTEM)) diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java index c0cb7ef940..b013fbf863 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/LegacyCompilationSupport.java @@ -147,7 +147,6 @@ public class LegacyCompilationSupport extends CompilationSupport { CompilationAttributes compilationAttributes, boolean useDeps, Map<String, NestedSet<Artifact>> outputGroupCollector, - CcToolchainProvider toolchain, boolean isTestRule) { super( ruleContext, @@ -156,7 +155,6 @@ public class LegacyCompilationSupport extends CompilationSupport { compilationAttributes, useDeps, outputGroupCollector, - toolchain, isTestRule); } 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 1b3d53f89e..8130c4e525 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 @@ -243,8 +243,7 @@ public class MultiArchBinarySupport { protosToAvoid, ImmutableList.<ProtoSourcesProvider>of(), objcProtoProviders, - ProtobufSupport.getTransitivePortableProtoFilters(objcProtoProviders), - childConfigurationsAndToolchains.get(childConfig)) + ProtobufSupport.getTransitivePortableProtoFilters(objcProtoProviders)) .registerGenerationActions() .registerCompilationActions(); protosObjcProvider = protoSupport.getObjcProvider(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java index 51d4c7c9a6..f936d43881 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java @@ -22,7 +22,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.rules.cpp.CppCompilationContext.Builder; import com.google.devtools.build.lib.rules.cpp.CppCompileActionBuilder; @@ -47,7 +46,6 @@ public class ObjcCppSemantics implements CppSemantics { private final ObjcConfiguration config; private final boolean isHeaderThinningEnabled; private final IntermediateArtifacts intermediateArtifacts; - private final BuildConfiguration buildConfiguration; /** * Set of {@link com.google.devtools.build.lib.util.FileType} of source artifacts that are @@ -71,21 +69,18 @@ public class ObjcCppSemantics implements CppSemantics { * @param isHeaderThinningEnabled true if headers_list artifacts should be generated and added as * input to compiling actions * @param intermediateArtifacts used to create headers_list artifacts - * @param buildConfiguration the build configuration for this build */ public ObjcCppSemantics( ObjcProvider objcProvider, IncludeProcessing includeProcessing, ObjcConfiguration config, boolean isHeaderThinningEnabled, - IntermediateArtifacts intermediateArtifacts, - BuildConfiguration buildConfiguration) { + IntermediateArtifacts intermediateArtifacts) { this.objcProvider = objcProvider; this.includeProcessing = includeProcessing; this.config = config; this.isHeaderThinningEnabled = isHeaderThinningEnabled; this.intermediateArtifacts = intermediateArtifacts; - this.buildConfiguration = buildConfiguration; } @Override @@ -139,14 +134,6 @@ public class ObjcCppSemantics implements CppSemantics { ObjcCommon.userHeaderSearchPaths(objcProvider, ruleContext.getConfiguration())) { contextBuilder.addQuoteIncludeDir(iquotePath); } - - // ProtoSupport creates multiple compilation contexts for a single rule, potentially multiple - // archives per build configuration. This covers that worst case. - contextBuilder.setPurpose( - "ObjcCppSemantics_build_arch_" - + buildConfiguration.getMnemonic() - + "_with_suffix_" - + intermediateArtifacts.archiveFileNameSuffix()); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java index f0e835747f..080716af52 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java @@ -34,12 +34,12 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; -import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider; import com.google.devtools.build.lib.rules.proto.ProtoSourcesProvider; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.HashMap; import java.util.Set; +import java.util.TreeMap; /** * Support for generating Objective C proto static libraries that registers actions which generate @@ -72,7 +72,6 @@ final class ProtobufSupport { private final Set<Artifact> dylibHandledProtos; private final Iterable<ObjcProtoProvider> objcProtoProviders; private final NestedSet<Artifact> portableProtoFilters; - private final CcToolchainProvider toolchain; // Each entry of this map represents a generation action and a compilation action. The input set // are dependencies of the output set. The output set is always a subset of, or the same set as, @@ -114,8 +113,7 @@ final class ProtobufSupport { NestedSetBuilder.<Artifact>stableOrder().build(), protoProviders, objcProtoProviders, - portableProtoFilters, - null); + portableProtoFilters); } /** @@ -132,8 +130,6 @@ final class ProtobufSupport { * symbols * @param protoProviders the list of ProtoSourcesProviders that this proto support should process * @param objcProtoProviders the list of ObjcProtoProviders that this proto support should process - * @param toolchain if not null, the toolchain to override the default toolchain for the rule - * context. */ public ProtobufSupport( RuleContext ruleContext, @@ -141,8 +137,7 @@ final class ProtobufSupport { NestedSet<Artifact> dylibHandledProtos, Iterable<ProtoSourcesProvider> protoProviders, Iterable<ObjcProtoProvider> objcProtoProviders, - NestedSet<Artifact> portableProtoFilters, - CcToolchainProvider toolchain) { + NestedSet<Artifact> portableProtoFilters) { this.ruleContext = ruleContext; this.buildConfiguration = buildConfiguration; this.attributes = new ProtoAttributes(ruleContext); @@ -152,7 +147,6 @@ final class ProtobufSupport { this.intermediateArtifacts = ObjcRuleClasses.intermediateArtifacts(ruleContext, buildConfiguration); this.inputsToOutputsMap = getInputsToOutputsMap(attributes, protoProviders, objcProtoProviders); - this.toolchain = toolchain; } /** @@ -211,17 +205,15 @@ final class ProtobufSupport { ObjcCommon common = getCommon(intermediateArtifacts, compilationArtifacts); - CompilationSupport compilationSupport = - new CompilationSupport.Builder() - .setRuleContext(ruleContext) - .setConfig(buildConfiguration) - .setIntermediateArtifacts(intermediateArtifacts) - .setCompilationAttributes(new CompilationAttributes.Builder().build()) - .setToolchainProvider(toolchain) - .doNotUseDeps() - .build(); - - compilationSupport.registerCompileAndArchiveActions(common, userHeaderSearchPaths); + new LegacyCompilationSupport( + ruleContext, + buildConfiguration, + intermediateArtifacts, + new CompilationAttributes.Builder().build(), + /*useDeps=*/ false, + new TreeMap<String, NestedSet<Artifact>>(), + /*isTestRule=*/ false) + .registerCompileAndArchiveActions(common, userHeaderSearchPaths); actionId++; } |