From 73e5babafe5249565d8672463ea39ff24c19ca4f Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Fri, 5 Apr 2024 13:37:21 +0900 Subject: [PATCH] fix: required property doesn't track deps to java, apex, ... This change fixes a bug that the required property doesn't track dependencies to modules whose arch is common. Bug: 321000103 Bug: 321626681 Test: go test ./... Change-Id: I3d2b3ad8cb2a9f1c5c3d5345bf05402a787f011a --- android/module.go | 16 ++++++++++++---- filesystem/Android.bp | 3 ++- filesystem/filesystem_test.go | 18 ++++++++++++++++-- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/android/module.go b/android/module.go index f908451e7..89c4ddde9 100644 --- a/android/module.go +++ b/android/module.go @@ -1074,14 +1074,22 @@ func (m *ModuleBase) addRequiredDeps(ctx BottomUpMutatorContext) { } } + var deviceTargets []Target + deviceTargets = append(deviceTargets, ctx.Config().Targets[Android]...) + deviceTargets = append(deviceTargets, ctx.Config().AndroidCommonTarget) + + var hostTargets []Target + hostTargets = append(hostTargets, ctx.Config().Targets[ctx.Config().BuildOS]...) + hostTargets = append(hostTargets, ctx.Config().BuildOSCommonTarget) + if m.Device() { for _, depName := range m.RequiredModuleNames() { - for _, target := range ctx.Config().Targets[Android] { + for _, target := range deviceTargets { addDep(target, depName) } } for _, depName := range m.HostRequiredModuleNames() { - for _, target := range ctx.Config().Targets[ctx.Config().BuildOS] { + for _, target := range hostTargets { addDep(target, depName) } } @@ -1089,7 +1097,7 @@ func (m *ModuleBase) addRequiredDeps(ctx BottomUpMutatorContext) { if m.Host() { for _, depName := range m.RequiredModuleNames() { - for _, target := range ctx.Config().Targets[ctx.Config().BuildOS] { + for _, target := range hostTargets { // When a host module requires another host module, don't make a // dependency if they have different OSes (i.e. hostcross). if m.Target().HostCross != target.HostCross { @@ -1099,7 +1107,7 @@ func (m *ModuleBase) addRequiredDeps(ctx BottomUpMutatorContext) { } } for _, depName := range m.TargetRequiredModuleNames() { - for _, target := range ctx.Config().Targets[Android] { + for _, target := range deviceTargets { addDep(target, depName) } } diff --git a/filesystem/Android.bp b/filesystem/Android.bp index 18dd5535c..854a3661a 100644 --- a/filesystem/Android.bp +++ b/filesystem/Android.bp @@ -10,8 +10,9 @@ bootstrap_go_package { "soong", "soong-android", "soong-bpf", // for testing - "soong-phony", // for testing + "soong-java", // for testing "soong-linkerconfig", + "soong-phony", // for testing ], srcs: [ "avb_add_hash_footer.go", diff --git a/filesystem/filesystem_test.go b/filesystem/filesystem_test.go index 5c780f874..3ce5d4e88 100644 --- a/filesystem/filesystem_test.go +++ b/filesystem/filesystem_test.go @@ -23,6 +23,7 @@ import ( "android/soong/bpf" "android/soong/cc" "android/soong/etc" + "android/soong/java" "android/soong/phony" "github.com/google/blueprint/proptools" @@ -34,9 +35,12 @@ func TestMain(m *testing.M) { var fixture = android.GroupFixturePreparers( android.PrepareForIntegrationTestWithAndroid, + android.PrepareForTestWithAndroidBuildComponents, bpf.PrepareForTestWithBpf, - etc.PrepareForTestWithPrebuiltEtc, cc.PrepareForIntegrationTestWithCc, + etc.PrepareForTestWithPrebuiltEtc, + java.PrepareForTestWithJavaBuildComponents, + java.PrepareForTestWithJavaDefaultModules, phony.PrepareForTestWithPhony, PrepareForTestWithFilesystemBuildComponents, ) @@ -88,12 +92,21 @@ func TestFileSystemDeps(t *testing.T) { phony { name: "phony", - required: ["libquz"], + required: [ + "libquz", + "myapp", + ], } cc_library { name: "libquz", } + + android_app { + name: "myapp", + platform_apis: true, + installable: true, + } `) // produces "myfilesystem.img" @@ -101,6 +114,7 @@ func TestFileSystemDeps(t *testing.T) { fs := result.ModuleForTests("myfilesystem", "android_common").Module().(*filesystem) expected := []string{ + "app/myapp/myapp.apk", "bin/foo", "lib/libbar.so", "lib64/libbar.so",