C++: Make linking_context libraries_to_link return depset
Triggered by the flag: --incompatible_depset_for_libraries_to_link_getter
GitHub tracking issue: https://github.com/bazelbuild/bazel/issues/8118
RELNOTES:none
PiperOrigin-RevId: 245747705
diff --git a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java
index bc9fbb1..5ce9cf7 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java
@@ -133,6 +133,7 @@
"--experimental_platforms_api=" + rand.nextBoolean(),
"--experimental_starlark_config_transitions=" + rand.nextBoolean(),
"--incompatible_bzl_disallow_load_after_statement=" + rand.nextBoolean(),
+ "--incompatible_depset_for_libraries_to_link_getter=" + rand.nextBoolean(),
"--incompatible_depset_is_not_iterable=" + rand.nextBoolean(),
"--incompatible_depset_union=" + rand.nextBoolean(),
"--incompatible_disable_deprecated_attr_params=" + rand.nextBoolean(),
@@ -148,6 +149,7 @@
"--incompatible_disallow_old_style_args_add=" + rand.nextBoolean(),
"--incompatible_disallow_struct_provider_syntax=" + rand.nextBoolean(),
"--incompatible_disallow_rule_execution_platform_constraints_allowed=" + rand.nextBoolean(),
+ "--incompatible_do_not_split_linking_cmdline=" + rand.nextBoolean(),
"--incompatible_expand_directories=" + rand.nextBoolean(),
"--incompatible_new_actions_api=" + rand.nextBoolean(),
"--incompatible_no_attr_license=" + rand.nextBoolean(),
@@ -163,8 +165,7 @@
"--incompatible_restrict_named_params=" + rand.nextBoolean(),
"--incompatible_static_name_resolution_in_build_files=" + rand.nextBoolean(),
"--incompatible_string_join_requires_strings=" + rand.nextBoolean(),
- "--internal_skylark_flag_test_canary=" + rand.nextBoolean(),
- "--incompatible_do_not_split_linking_cmdline=" + rand.nextBoolean());
+ "--internal_skylark_flag_test_canary=" + rand.nextBoolean());
}
/**
@@ -185,6 +186,7 @@
.experimentalPlatformsApi(rand.nextBoolean())
.experimentalStarlarkConfigTransitions(rand.nextBoolean())
.incompatibleBzlDisallowLoadAfterStatement(rand.nextBoolean())
+ .incompatibleDepsetForLibrariesToLinkGetter(rand.nextBoolean())
.incompatibleDepsetIsNotIterable(rand.nextBoolean())
.incompatibleDepsetUnion(rand.nextBoolean())
.incompatibleDisableDeprecatedAttrParams(rand.nextBoolean())
@@ -200,6 +202,7 @@
.incompatibleDisallowOldStyleArgsAdd(rand.nextBoolean())
.incompatibleDisallowStructProviderSyntax(rand.nextBoolean())
.incompatibleDisallowRuleExecutionPlatformConstraintsAllowed(rand.nextBoolean())
+ .incompatibleDoNotSplitLinkingCmdline(rand.nextBoolean())
.incompatibleExpandDirectories(rand.nextBoolean())
.incompatibleNewActionsApi(rand.nextBoolean())
.incompatibleNoAttrLicense(rand.nextBoolean())
@@ -216,7 +219,6 @@
.incompatibleStaticNameResolutionInBuildFiles(rand.nextBoolean())
.incompatibleStringJoinRequiresStrings(rand.nextBoolean())
.internalSkylarkFlagTestCanary(rand.nextBoolean())
- .incompatibleDoNotSplitLinkingCmdline(rand.nextBoolean())
.build();
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
index 6004210..5f7385b 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
@@ -1142,6 +1142,46 @@
ImmutableList.of("a.so", "liba_Slibdep2.so", "b.so", "e.so", "liba_Slibdep1.so"));
}
+ /** TODO(#8118): This test can go away once flag is flipped. */
+ @Test
+ public void testIncompatibleDepsetForLibrariesToLinkGetter() throws Exception {
+ AnalysisMock.get()
+ .ccSupport()
+ .setupCcToolchainConfig(
+ mockToolsConfig,
+ CcToolchainConfig.builder()
+ .withFeatures(
+ CppRuleClasses.PIC,
+ CppRuleClasses.SUPPORTS_PIC,
+ CppRuleClasses.SUPPORTS_DYNAMIC_LINKER));
+ setSkylarkSemanticsOptions("--incompatible_depset_for_libraries_to_link_getter");
+ setUpCcLinkingContextTest();
+ ConfiguredTarget a = getConfiguredTarget("//a:a");
+ StructImpl info = ((StructImpl) getMyInfoFromTarget(a).getValue("info"));
+
+ @SuppressWarnings("unchecked")
+ SkylarkNestedSet librariesToLink = info.getValue("libraries_to_link", SkylarkNestedSet.class);
+ assertThat(
+ librariesToLink.toCollection(LibraryToLink.class).stream()
+ .filter(x -> x.getStaticLibrary() != null)
+ .map(x -> x.getStaticLibrary().getFilename())
+ .collect(ImmutableList.toImmutableList()))
+ .containsExactly("a.a", "b.a", "c.a", "d.a");
+ assertThat(
+ librariesToLink.toCollection(LibraryToLink.class).stream()
+ .filter(x -> x.getPicStaticLibrary() != null)
+ .map(x -> x.getPicStaticLibrary().getFilename())
+ .collect(ImmutableList.toImmutableList()))
+ .containsExactly("a.pic.a", "libdep2.a", "b.pic.a", "c.pic.a", "e.pic.a", "libdep1.a");
+ assertThat(
+ librariesToLink.toCollection(LibraryToLink.class).stream()
+ .filter(x -> x.getDynamicLibrary() != null)
+ .map(x -> x.getDynamicLibrary().getFilename())
+ .collect(ImmutableList.toImmutableList()))
+ .containsExactly("a.so", "liba_Slibdep2.so", "b.so", "e.so", "liba_Slibdep1.so");
+ }
+
+ @Deprecated
private void doTestCcLinkingContext(
List<String> staticLibraryList,
List<String> picStaticLibraryList,