From 25e75dc2f15c8fd405226fd3a3f68a3a7f857392 Mon Sep 17 00:00:00 2001 From: ruperts Date: Fri, 27 Jul 2018 13:08:41 -0700 Subject: Automated rollback of commit 71479d3ef1627a30b9ec75ca50e6a90cf7db6377. *** Reason for rollback *** http://https://github.com/bazelbuild/bazel/commit/71479d3ef1627a30b9ec75ca50e6a90cf7db6377 broke thousands of targets in the nightly, notably: //abuse/ares/rulesystem/generator/python/rule_set:main (x1754) //net/encapdecap/common/templates:gen_dr_scopes (x903) //testing/cloud/vex/public:vex_main_internal (x782) //wireless/android/play/playlog/server:playlog_server (x401) *** Original change description *** C++: Removes calls to setCcLinkparamsStore of CcLinkingInfo.Builder This is in preparation for deleting CcLinkParamsStore. All remaining calls to the setCcLinkparamsStore method of the CcLinkingInfo builder have been removed. RELNOTES:none PiperOrigin-RevId: 206361808 --- .../devtools/build/lib/rules/objc/ObjcLibrary.java | 42 ++------------- .../rules/objc/ObjcLibraryCcLinkParamsStore.java | 61 ++++++++++++++++++++++ 2 files changed, 66 insertions(+), 37 deletions(-) create mode 100644 src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryCcLinkParamsStore.java (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc') diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java index ff8e381864..42741b573b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java @@ -15,7 +15,6 @@ package com.google.devtools.build.lib.rules.objc; 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.actions.MutableActionGraph.ActionConflictException; import com.google.devtools.build.lib.analysis.ConfiguredTarget; @@ -25,16 +24,12 @@ import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTa import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; -import com.google.devtools.build.lib.rules.cpp.ArtifactCategory; import com.google.devtools.build.lib.rules.cpp.CcCompilationContext; import com.google.devtools.build.lib.rules.cpp.CcCompilationInfo; -import com.google.devtools.build.lib.rules.cpp.CcLinkParams; +import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore; import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo; -import com.google.devtools.build.lib.rules.cpp.LinkerInputs; -import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink; import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes; import com.google.devtools.build.lib.syntax.Type; -import com.google.devtools.build.lib.vfs.FileSystemUtils; import java.util.Map; import java.util.TreeMap; @@ -110,14 +105,9 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory { CcCompilationInfo.Builder ccCompilationInfoBuilder = CcCompilationInfo.Builder.create(); ccCompilationInfoBuilder.setCcCompilationContext(ccCompilationContext); - CcLinkParams ccLinkParams = buildCcLinkParams(common); - CcLinkingInfo ccLinkingInfo = - CcLinkingInfo.Builder.create() - .setStaticModeParamsForDynamicLibrary(ccLinkParams) - .setStaticModeParamsForExecutable(ccLinkParams) - .setDynamicModeParamsForDynamicLibrary(ccLinkParams) - .setDynamicModeParamsForExecutable(ccLinkParams) - .build(); + CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create(); + ccLinkingInfoBuilder.setCcLinkParamsStore( + new CcLinkParamsStore(new ObjcLibraryCcLinkParamsStore(common))); return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build()) .addNativeDeclaredProvider(common.getObjcProvider()) @@ -127,33 +117,11 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory { .addProvider( InstrumentedFilesProvider.class, compilationSupport.getInstrumentedFilesProvider(objectFilesCollector.build())) - .addNativeDeclaredProvider(ccLinkingInfo) + .addNativeDeclaredProvider(ccLinkingInfoBuilder.build()) .addOutputGroups(outputGroupCollector) .build(); } - public CcLinkParams buildCcLinkParams(ObjcCommon common) { - ImmutableSet.Builder libraries = new ImmutableSet.Builder<>(); - ObjcProvider objcProvider = common.getObjcProvider(); - for (Artifact library : objcProvider.get(ObjcProvider.LIBRARY)) { - libraries.add( - LinkerInputs.opaqueLibraryToLink( - library, - ArtifactCategory.STATIC_LIBRARY, - FileSystemUtils.removeExtension(library.getRootRelativePathString()))); - } - libraries.addAll(objcProvider.get(ObjcProvider.CC_LIBRARY)); - - CcLinkParams.Builder builder = CcLinkParams.builder(); - builder.addLibraries(libraries.build()); - - for (SdkFramework sdkFramework : objcProvider.get(ObjcProvider.SDK_FRAMEWORK)) { - builder.addLinkOpts(ImmutableList.of("-framework", sdkFramework.getName())); - } - - return builder.build(); - } - /** Throws errors or warnings for bad attribute state. */ private static void validateAttributes(RuleContext ruleContext) { for (String copt : ObjcCommon.getNonCrosstoolCopts(ruleContext)) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryCcLinkParamsStore.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryCcLinkParamsStore.java new file mode 100644 index 0000000000..a97ba8403d --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryCcLinkParamsStore.java @@ -0,0 +1,61 @@ +// Copyright 2016 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.lib.rules.objc; + +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.rules.cpp.AbstractCcLinkParamsStore; +import com.google.devtools.build.lib.rules.cpp.ArtifactCategory; +import com.google.devtools.build.lib.rules.cpp.CcLinkParams; +import com.google.devtools.build.lib.rules.cpp.LinkerInputs; +import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink; +import com.google.devtools.build.lib.vfs.FileSystemUtils; + +/** + * A {@link AbstractCcLinkParamsStore} to be propagated to dependent cc_{library, binary} targets. + */ +class ObjcLibraryCcLinkParamsStore extends AbstractCcLinkParamsStore { + + private final ObjcCommon common; + + /** + * Create a params store. + * + * @param common the {@link ObjcCommon} instance for this target. + */ + public ObjcLibraryCcLinkParamsStore(ObjcCommon common) { + this.common = common; + } + + @Override + protected void collect( + CcLinkParams.Builder builder, boolean linkingStatically, boolean linkShared) { + ObjcProvider objcProvider = common.getObjcProvider(); + + ImmutableSet.Builder libraries = new ImmutableSet.Builder<>(); + for (Artifact library : objcProvider.get(ObjcProvider.LIBRARY)) { + libraries.add(LinkerInputs.opaqueLibraryToLink( + library, ArtifactCategory.STATIC_LIBRARY, + FileSystemUtils.removeExtension(library.getRootRelativePathString()))); + } + libraries.addAll(objcProvider.get(ObjcProvider.CC_LIBRARY)); + builder.addLibraries(libraries.build()); + + for (SdkFramework sdkFramework : objcProvider.get(ObjcProvider.SDK_FRAMEWORK)) { + builder.addLinkOpts(ImmutableList.of("-framework", sdkFramework.getName())); + } + } +} \ No newline at end of file -- cgit v1.2.3