summaryrefslogtreecommitdiff
path: root/filesystem/filesystem.go
diff options
context:
space:
mode:
author Jiyong Park <jiyong@google.com> 2024-04-30 21:25:05 +0900
committer Jiyong Park <jiyong@google.com> 2024-04-30 19:02:57 +0000
commit742f54c4bc32d44cb9c742dbc6c35bd85e7aa395 (patch)
tree228249113b77c5644e037e7662cfab64cef28d38 /filesystem/filesystem.go
parenta51c4ce10e959137f2a3a26442438b5a1200ca64 (diff)
Filesystem modules follow the installation semantic
With this change, filesystem modules (android_filesystem, android_system_image, etc.) follow the installation semantic which means output from modules which don't produce installable files (i.e. modules that return false on IsSkipInstall()) are not included in the filesystem module. Note that this bug has been there since the beginning but didn't trigger an error due to another bug (b/335506668) which allowed multiple packaging specs to contribute to the same path. That bug prevented the non-installable variant of a module (e.g. stub) from being installed simply because because it was "luckly" clobbered by the installable variant of the same module (e.g. impl lib). Bug: 335506668 Test: go test ./... Change-Id: I2a42d178701d74bf6ccc5f33ba33918f8c608d40
Diffstat (limited to 'filesystem/filesystem.go')
-rw-r--r--filesystem/filesystem.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/filesystem/filesystem.go b/filesystem/filesystem.go
index cadf9c246..5bcfce7a3 100644
--- a/filesystem/filesystem.go
+++ b/filesystem/filesystem.go
@@ -137,6 +137,7 @@ type filesystemProperties struct {
// partitions like system.img. For example, cc_library modules are placed under ./lib[64] directory.
func filesystemFactory() android.Module {
module := &filesystem{}
+ module.filterPackagingSpec = module.filterInstallablePackagingSpec
initFilesystemModule(module)
return module
}
@@ -189,6 +190,12 @@ func (f *filesystem) partitionName() string {
return proptools.StringDefault(f.properties.Partition_name, f.Name())
}
+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()
+}
+
var pctx = android.NewPackageContext("android/soong/filesystem")
func (f *filesystem) GenerateAndroidBuildActions(ctx android.ModuleContext) {