diff options
Diffstat (limited to 'filesystem/filesystem.go')
-rw-r--r-- | filesystem/filesystem.go | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/filesystem/filesystem.go b/filesystem/filesystem.go index a31516043..85facee1f 100644 --- a/filesystem/filesystem.go +++ b/filesystem/filesystem.go @@ -222,6 +222,15 @@ type FilesystemProperties struct { // The size of the partition on the device. It will be a build error if this built partition // image exceeds this size. Partition_size *int64 + + // Whether to format f2fs and ext4 in a way that supports casefolding + Support_casefolding *bool + + // Whether to format f2fs and ext4 in a way that supports project quotas + Support_project_quota *bool + + // Whether to enable per-file compression in f2fs + Enable_compression *bool } type AndroidFilesystemDeps struct { @@ -789,12 +798,11 @@ func (f *filesystem) buildPropFile(ctx android.ModuleContext) (android.Path, and addStr("hash_seed", uuid) } - // TODO(b/381120092): This should only be added if none of the size-related properties are set, - // but currently soong built partitions don't have size properties. Make code: - // https://cs.android.com/android/platform/superproject/main/+/main:build/make/core/Makefile;l=2262;drc=39cd33701c9278db0e7e481a090605f428d5b12d - // Make uses system_disable_sparse but disable_sparse has the same effect, and we shouldn't need - // to qualify it because each partition gets its own property file built. - addStr("disable_sparse", "true") + // Disable sparse only when partition size is not defined. disable_sparse has the same + // effect as <partition name>_disable_sparse. + if f.properties.Partition_size == nil { + addStr("disable_sparse", "true") + } fst := f.fsType(ctx) switch fst { @@ -821,6 +829,18 @@ func (f *filesystem) buildPropFile(ctx android.ModuleContext) (android.Path, and addStr("partition_size", strconv.FormatInt(*f.properties.Partition_size, 10)) } + if proptools.BoolDefault(f.properties.Support_casefolding, false) { + addStr("needs_casefold", "1") + } + + if proptools.BoolDefault(f.properties.Support_project_quota, false) { + addStr("needs_projid", "1") + } + + if proptools.BoolDefault(f.properties.Enable_compression, false) { + addStr("needs_compress", "1") + } + propFilePreProcessing := android.PathForModuleOut(ctx, "prop_pre_processing") android.WriteFileRuleVerbatim(ctx, propFilePreProcessing, propFileString.String()) propFile := android.PathForModuleOut(ctx, "prop") |