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
diff --git a/filesystem/filesystem.go b/filesystem/filesystem.go
index 4bdd0a4..9756b82 100644
--- a/filesystem/filesystem.go
+++ b/filesystem/filesystem.go
@@ -264,7 +264,7 @@
func (f *filesystem) filterInstallablePackagingSpec(ps android.PackagingSpec) bool {
// Filesystem module respects the installation semantic. A PackagingSpec from a module with
// IsSkipInstall() is skipped.
- return !ps.SkipInstall()
+ return !ps.SkipInstall() && (ps.Partition() == f.PartitionType())
}
var pctx = android.NewPackageContext("android/soong/filesystem")