Dedupe logic to generate linker.config.pb
Between android_filesystem and generic_system_image.
`getLibsForLinkerConfig` will return a list of provideLibs and
requireLibs for the fileystem. `linkerConfig.BuildLinkerConfig` will
then filer out the non-stub libraries.
For `android_filesystem`, requireLibs is ignored for now to match the
logic in the kati built vendor.img
Test: m nothing --no-skip-soong-tests
Test: no diff in out/soong/.intermediates/build/make/target/product/generic/generic_system_image/android_common/gen/root-extra/system/etc/linker.config.pb
paste of cmd: https://diff.googleplex.com/#key=KAqqP9bhKZMD
Change-Id: I1f1d626a3a161fb2e12597909fd287533cbb8482
diff --git a/filesystem/filesystem_test.go b/filesystem/filesystem_test.go
index cb27f64..8fe5dac 100644
--- a/filesystem/filesystem_test.go
+++ b/filesystem/filesystem_test.go
@@ -670,18 +670,21 @@
android_filesystem {
name: "myfilesystem",
deps: ["libfoo_has_no_stubs", "libfoo_has_stubs"],
- linker_config_srcs: ["linker.config.json"]
+ linker_config_srcs: ["linker.config.json"],
+ partition_type: "vendor",
}
cc_library {
name: "libfoo_has_no_stubs",
+ vendor: true,
}
cc_library {
name: "libfoo_has_stubs",
stubs: {symbol_file: "libfoo.map.txt"},
+ vendor: true,
}
`)
linkerConfigCmd := result.ModuleForTests("myfilesystem", "android_common").Rule("build_filesystem_image").RuleParams.Command
- android.AssertStringDoesContain(t, "", linkerConfigCmd, "conv_linker_config proto --force -s linker.config.json")
- android.AssertStringDoesContain(t, "", linkerConfigCmd, "--key provideLibs --value libfoo_has_stubs.so")
+ android.AssertStringDoesContain(t, "Could not find linker.config.json file in cmd", linkerConfigCmd, "conv_linker_config proto --force -s linker.config.json")
+ android.AssertStringDoesContain(t, "Could not find stub in `provideLibs`", linkerConfigCmd, "--key provideLibs --value libfoo_has_stubs.so")
}