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
This commit is contained in:
@@ -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) {
|
||||
|
@@ -98,5 +98,5 @@ func (s *systemImage) buildLinkerConfigFile(ctx android.ModuleContext, root andr
|
||||
// Note that "apex" module installs its contents to "apex"(fake partition) as well
|
||||
// for symbol lookup by imitating "activated" paths.
|
||||
func (s *systemImage) filterPackagingSpec(ps android.PackagingSpec) bool {
|
||||
return ps.Partition() == "system"
|
||||
return s.filesystem.filterInstallablePackagingSpec(ps) && ps.Partition() == "system"
|
||||
}
|
||||
|
Reference in New Issue
Block a user