From c4b1d5570776b5ec5ccc322cb0a5f18bc62f630f Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Mon, 13 May 2024 16:47:30 +0900 Subject: [PATCH] Fix: required deps from native module to phony module is respected This change fixes a bug that required deps from native module to phony module was ignored. It happened because addRequireDeps incorrectly thought that both are native modules with different bitness (32->64), which isn't. Fix this by doing the bitness check only when both the current module and the required module are native modules. Bug: N/A Test: go test ./... under build/soong/filesystem Change-Id: I494ebc47e29001f174fa44d72809041f8ceffb0b --- android/module.go | 3 ++- filesystem/filesystem_test.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/android/module.go b/android/module.go index d7f0537f7..7e623be1e 100644 --- a/android/module.go +++ b/android/module.go @@ -1066,7 +1066,8 @@ func addRequiredDeps(ctx BottomUpMutatorContext) { // TODO(jiyong): the Make-side does this only when the required module is a shared // library or a native test. bothInAndroid := ctx.Device() && target.Os.Class == Device - nativeArch := InList(ctx.Arch().ArchType.Multilib, []string{"lib32", "lib64"}) + nativeArch := InList(ctx.Arch().ArchType.Multilib, []string{"lib32", "lib64"}) && + InList(target.Arch.ArchType.Multilib, []string{"lib32", "lib64"}) sameBitness := ctx.Arch().ArchType.Multilib == target.Arch.ArchType.Multilib if bothInAndroid && nativeArch && !sameBitness { return diff --git a/filesystem/filesystem_test.go b/filesystem/filesystem_test.go index acd481352..861918f16 100644 --- a/filesystem/filesystem_test.go +++ b/filesystem/filesystem_test.go @@ -465,3 +465,35 @@ func TestPreventDuplicatedEntries(t *testing.T) { } `) } + +func TestTrackPhonyAsRequiredDep(t *testing.T) { + result := fixture.RunTestWithBp(t, ` + android_filesystem { + name: "fs", + deps: ["foo"], + } + + cc_binary { + name: "foo", + required: ["phony"], + } + + phony { + name: "phony", + required: ["libbar"], + } + + cc_library { + name: "libbar", + } + `) + + fs := result.ModuleForTests("fs", "android_common").Module().(*filesystem) + expected := []string{ + "bin/foo", + "lib64/libbar.so", + } + for _, e := range expected { + android.AssertStringListContains(t, "missing entry", fs.entries, e) + } +}