Automated rollback of commit 0365843d2f1cf0d4f0a695608cd3819960580a97.
*** Reason for rollback ***
Breaks a large number of targets, see b/169745163.
*** Original change description ***
Propagate linkstamp information through `objc_library` rules
A previous change (https://github.com/bazelbuild/bazel/commit/3a28c96814e54d8e95f132a82cf501cf137d918e) made
`apple_binary` support the `stamp` attribute in the same way as
`cc_binary` does: Read linkstamp data from its dependencies’ `CcInfo`s
and add linkstamp objects to the final link. However, `objc_library` did
not propagate the linkstamp attributes from C++ dependencies into its
`CcInfo` output, so
apple_binary(
name = "binary",
platform_type = "macos",
stamp = 1,...
***
ROLLBACK_OF=334173406
PiperOrigin-RevId: 334848655
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java
index bbeaf84..2a8c200 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingContext.java
@@ -524,7 +524,7 @@
return this;
}
- public Builder addLinkstamps(List<Linkstamp> linkstamps) {
+ Builder addLinkstamps(List<Linkstamp> linkstamps) {
hasDirectLinkerInput = true;
linkerInputBuilder.addLinkstamps(linkstamps);
return this;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index 85a0753..6396937 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -24,7 +24,6 @@
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LIBRARY;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LINKED_BINARY;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LINKOPT;
-import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LINKSTAMP;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.MODULE_MAP;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_DYLIB;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_FRAMEWORK;
@@ -403,8 +402,7 @@
CC_LIBRARY,
NestedSetBuilder.<LibraryToLink>linkOrder()
.addTransitive(linkProvider.getLibraries())
- .build())
- .addAll(LINKSTAMP, linkProvider.getLinkstamps());
+ .build());
}
if (compilationAttributes.isPresent()) {
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 8156d97..af76e31 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
@@ -131,8 +131,7 @@
CcLinkingContext.Builder ccLinkingContext =
CcLinkingContext.builder()
.setOwner(label)
- .addLibraries(libraries.build().asList())
- .addLinkstamps(objcProvider.get(ObjcProvider.LINKSTAMP).toList());
+ .addLibraries(ImmutableList.copyOf(libraries.build()));
ImmutableList.Builder<LinkOptions> userLinkFlags = ImmutableList.builder();
for (SdkFramework sdkFramework : objcProvider.get(ObjcProvider.SDK_FRAMEWORK).toList()) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
index 3a21624..3268de5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
@@ -255,13 +255,6 @@
public static final Key<LibraryToLink> CC_LIBRARY =
new Key<>(LINK_ORDER, "cc_library", LibraryToLink.class);
- /** Linkstamps from cc dependencies. */
- // This key exists only to facilitate passing linkstamp data from ObjcLibrary's input CcInfos to
- // its output CcInfo. Other consumers should look at ObjcLibrary's output CcInfo rather than the
- // data behind this key.
- static final Key<CcLinkingContext.Linkstamp> LINKSTAMP =
- new Key<>(STABLE_ORDER, "linkstamp", CcLinkingContext.Linkstamp.class);
-
/**
* Linking options from dependencies.
*/
@@ -629,8 +622,6 @@
CC_LIBRARY,
// Flag enum is not exposed to Starlark.
FLAG,
- // Linkstamp is not exposed to Starlark. See commentary at its definition.
- LINKSTAMP,
// CppModuleMap is not exposed to Starlark.
TOP_LEVEL_MODULE_MAP);
@@ -655,7 +646,6 @@
INCLUDE_SYSTEM,
IQUOTE,
LINKOPT,
- LINKSTAMP,
LINK_INPUTS,
SDK_DYLIB,
SDK_FRAMEWORK,
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
index 92b17aa..e5d808f 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
@@ -54,7 +54,6 @@
import com.google.devtools.build.lib.rules.cpp.CcCompilationContext;
import com.google.devtools.build.lib.rules.cpp.CcCompilationHelper;
import com.google.devtools.build.lib.rules.cpp.CcInfo;
-import com.google.devtools.build.lib.rules.cpp.CcLinkingContext;
import com.google.devtools.build.lib.rules.cpp.CppCompileAction;
import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
import com.google.devtools.build.lib.rules.cpp.CppModuleMapAction;
@@ -2245,32 +2244,4 @@
.isEqualTo("ObjcCompile");
}
- protected List<String> linkstampExecPaths(NestedSet<CcLinkingContext.Linkstamp> linkstamps) {
- return ActionsTestUtil.execPaths(
- ActionsTestUtil.transform(linkstamps.toList(), CcLinkingContext.Linkstamp::getArtifact));
- }
-
- @Test
- public void testPassesThroughLinkstamps() throws Exception {
- useConfiguration("--crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL);
-
- scratch.file(
- "x/BUILD",
- "objc_library(",
- " name = 'foo',",
- " deps = [':bar'],",
- ")",
- "cc_library(",
- " name = 'bar',",
- " linkstamp = 'bar.cc',",
- ")");
-
- assertThat(
- linkstampExecPaths(
- getConfiguredTarget("//x:foo")
- .get(CcInfo.PROVIDER)
- .getCcLinkingContext()
- .getLinkstamps()))
- .containsExactly("x/bar.cc");
- }
}