summaryrefslogtreecommitdiff
path: root/filesystem
diff options
context:
space:
mode:
authorJooyung Han <jooyung@google.com>2021-05-11 11:13:30 +0900
committerJooyung Han <jooyung@google.com>2021-05-11 11:56:54 +0900
commitdf09d173cad6bf652dc949698e48824248d59373 (patch)
tree8fd7edd3b3bb441249d58fd1731f24b1b95d472e /filesystem
parent564fce4578c774dc387912483211bfadccd5c4e6 (diff)
Generate linker config with packaged items.
Previously, we gather all deps without checking if a dep is actually one of packaged items (CopyDepsToZip contents) For example, following items shouldn't be listed. provideLibs: "platform-mainline-sdk_libartpalette-system@current.so" provideLibs: "platform-mainline-sdk_liblog@current.so" provideLibs: "runtime-module-sdk_libc@current.so" provideLibs: "runtime-module-sdk_libdl@current.so" provideLibs: "runtime-module-sdk_libdl_android@current.so" provideLibs: "runtime-module-sdk_libm@current.so" Now, we gather only those modules contributing CopyDepsToZip to generate linker config for android_system_image. Test: m nothing Test: m microdroid Test: conv_linker_config print -s .../microdroid/android_common/root/system/etc/linker.config.pb shouldn't list sdk members. Change-Id: Ife5d2193ab59970367d10e196aaaa922c6582862
Diffstat (limited to 'filesystem')
-rw-r--r--filesystem/system_image.go12
1 files changed, 7 insertions, 5 deletions
diff --git a/filesystem/system_image.go b/filesystem/system_image.go
index a7c914395..1d24d6d41 100644
--- a/filesystem/system_image.go
+++ b/filesystem/system_image.go
@@ -50,17 +50,19 @@ func (s *systemImage) buildExtraFiles(ctx android.ModuleContext, root android.Ou
func (s *systemImage) buildLinkerConfigFile(ctx android.ModuleContext, root android.OutputPath) android.OutputPath {
input := android.PathForModuleSrc(ctx, android.String(s.properties.Linker_config_src))
output := root.Join(ctx, "system", "etc", "linker.config.pb")
+
+ // we need "Module"s for packaging items
var otherModules []android.Module
+ deps := s.GatherPackagingSpecs(ctx)
ctx.WalkDeps(func(child, parent android.Module) bool {
- // Don't track direct dependencies that aren't not packaged
- if parent == s {
- if pi, ok := ctx.OtherModuleDependencyTag(child).(android.PackagingItem); !ok || !pi.IsPackagingItem() {
- return false
+ for _, ps := range child.PackagingSpecs() {
+ if _, ok := deps[ps.RelPathInPackage()]; ok {
+ otherModules = append(otherModules, child)
}
}
- otherModules = append(otherModules, child)
return true
})
+
builder := android.NewRuleBuilder(pctx, ctx)
linkerconfig.BuildLinkerConfig(ctx, builder, input, otherModules, output)
builder.Build("conv_linker_config", "Generate linker config protobuf "+output.String())