Add F2FS support for APEX build system
Add the new property payload_fs_type in apex module type. Either 'f2fs' or 'ext4'. Default 'ext4'. Test: m Bug: 158453869 Change-Id: I36f373251bd597e11acb62af75437a87e2a531ec Merged-In: I36f373251bd597e11acb62af75437a87e2a531ec
This commit is contained in:
36
apex/apex.go
36
apex/apex.go
@@ -41,6 +41,9 @@ const (
|
||||
imageApexType = "image"
|
||||
zipApexType = "zip"
|
||||
flattenedApexType = "flattened"
|
||||
|
||||
ext4FsType = "ext4"
|
||||
f2fsFsType = "f2fs"
|
||||
)
|
||||
|
||||
type dependencyTag struct {
|
||||
@@ -1026,6 +1029,10 @@ type apexBundleProperties struct {
|
||||
// Should be only used in non-system apexes (e.g. vendor: true).
|
||||
// Default is false.
|
||||
Use_vndk_as_stable *bool
|
||||
|
||||
// The type of filesystem to use for an image apex. Either 'ext4' or 'f2fs'.
|
||||
// Default 'ext4'.
|
||||
Payload_fs_type *string
|
||||
}
|
||||
|
||||
type apexTargetBundleProperties struct {
|
||||
@@ -1233,6 +1240,24 @@ func (af *apexFile) AvailableToPlatform() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
type fsType int
|
||||
|
||||
const (
|
||||
ext4 fsType = iota
|
||||
f2fs
|
||||
)
|
||||
|
||||
func (f fsType) string() string {
|
||||
switch f {
|
||||
case ext4:
|
||||
return ext4FsType
|
||||
case f2fs:
|
||||
return f2fsFsType
|
||||
default:
|
||||
panic(fmt.Errorf("unknown APEX payload type %d", f))
|
||||
}
|
||||
}
|
||||
|
||||
type apexBundle struct {
|
||||
android.ModuleBase
|
||||
android.DefaultableModuleBase
|
||||
@@ -1298,6 +1323,8 @@ type apexBundle struct {
|
||||
|
||||
// Optional list of lint report zip files for apexes that contain java or app modules
|
||||
lintReports android.Paths
|
||||
|
||||
payloadFsType fsType
|
||||
}
|
||||
|
||||
func addDependenciesForNativeModules(ctx android.BottomUpMutatorContext,
|
||||
@@ -2270,6 +2297,15 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
a.installDir = android.PathForModuleInstall(ctx, "apex")
|
||||
a.filesInfo = filesInfo
|
||||
|
||||
switch proptools.StringDefault(a.properties.Payload_fs_type, ext4FsType) {
|
||||
case ext4FsType:
|
||||
a.payloadFsType = ext4
|
||||
case f2fsFsType:
|
||||
a.payloadFsType = f2fs
|
||||
default:
|
||||
ctx.PropertyErrorf("payload_fs_type", "%q is not a valid filesystem for apex [ext4, f2fs]", *a.properties.Payload_fs_type)
|
||||
}
|
||||
|
||||
// Optimization. If we are building bundled APEX, for the files that are gathered due to the
|
||||
// transitive dependencies, don't place them inside the APEX, but place a symlink pointing
|
||||
// the same library in the system partition, thus effectively sharing the same libraries
|
||||
|
Reference in New Issue
Block a user