From 8a49643e6b727490898ea94b41667eecf24685f2 Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Fri, 18 Oct 2024 18:35:50 +0000 Subject: Use a partition packaging spec filter for android_filesystem This revives https://r.android.com/3308803. The use case for this filter is 1. To remove the transitive shared library dependencies of `system_ext` binaries that are intended to be installed in `system`. Without this filter, we get two copies of libc.so, libz.so, ... on device 2. To filter out dexpreopt files of apps. Even if an app is installed in `/system_ext`, its dexpreopt files will be installed in `system_other`. Kati allows this by allowing ctx.InstallFile to specify the path relative to device root. Diff in autogenerated `system_ext` partition for aosp cf before and after this CL https://diff.googleplex.com/#key=6ekb09PtreNh Test: go test ./filesystem Bug: 372487849 Change-Id: Ie52723be2469d3b210ee1ebb62997d378d44788b --- filesystem/filesystem_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'filesystem/filesystem_test.go') diff --git a/filesystem/filesystem_test.go b/filesystem/filesystem_test.go index 057dcaaff..1e508364c 100644 --- a/filesystem/filesystem_test.go +++ b/filesystem/filesystem_test.go @@ -584,3 +584,28 @@ func TestErofsPartition(t *testing.T) { android.AssertStringDoesContain(t, "erofs fs type compress hint", buildImageConfig, "erofs_default_compress_hints=compress_hints.txt") android.AssertStringDoesContain(t, "erofs fs type sparse", buildImageConfig, "erofs_sparse_flag=-s") } + +// If a system_ext/ module depends on system/ module, the dependency should *not* +// be installed in system_ext/ +func TestDoNotPackageCrossPartitionDependencies(t *testing.T) { + result := fixture.RunTestWithBp(t, ` + android_filesystem { + name: "myfilesystem", + deps: ["binfoo"], + partition_type: "system_ext", + } + + cc_binary { + name: "binfoo", + shared_libs: ["libfoo"], + system_ext_specific: true, + } + cc_library_shared { + name: "libfoo", // installed in system/ + } + `) + + partition := result.ModuleForTests("myfilesystem", "android_common") + fileList := android.ContentFromFileRuleForTests(t, result.TestContext, partition.Output("fileList")) + android.AssertDeepEquals(t, "filesystem with dependencies on different partition", "bin/binfoo\n", fileList) +} -- cgit v1.2.3-59-g8ed1b