diff options
| -rw-r--r-- | android/config.go | 11 | ||||
| -rw-r--r-- | android/variable.go | 24 | ||||
| -rw-r--r-- | filesystem/android_device.go | 3 | ||||
| -rw-r--r-- | fsgen/filesystem_creator.go | 5 | ||||
| -rw-r--r-- | fsgen/fsgen_mutators.go | 4 |
5 files changed, 36 insertions, 11 deletions
diff --git a/android/config.go b/android/config.go index d9db64ef6..10bddf7cc 100644 --- a/android/config.go +++ b/android/config.go @@ -1599,6 +1599,17 @@ func (c *deviceConfig) OemPath() string { return "oem" } +func (c *deviceConfig) UserdataPath() string { + if c.config.productVariables.UserdataPath != nil { + return *c.config.productVariables.UserdataPath + } + return "data" +} + +func (c *deviceConfig) BuildingUserdataImage() bool { + return proptools.Bool(c.config.productVariables.BuildingUserdataImage) +} + func (c *deviceConfig) BtConfigIncludeDir() string { return String(c.config.productVariables.BtConfigIncludeDir) } diff --git a/android/variable.go b/android/variable.go index f82c9cae8..037037d6a 100644 --- a/android/variable.go +++ b/android/variable.go @@ -338,17 +338,19 @@ type ProductVariables struct { HWASanIncludePaths []string `json:",omitempty"` HWASanExcludePaths []string `json:",omitempty"` - VendorPath *string `json:",omitempty"` - VendorDlkmPath *string `json:",omitempty"` - BuildingVendorImage *bool `json:",omitempty"` - OdmPath *string `json:",omitempty"` - BuildingOdmImage *bool `json:",omitempty"` - OdmDlkmPath *string `json:",omitempty"` - ProductPath *string `json:",omitempty"` - BuildingProductImage *bool `json:",omitempty"` - SystemExtPath *string `json:",omitempty"` - SystemDlkmPath *string `json:",omitempty"` - OemPath *string `json:",omitempty"` + VendorPath *string `json:",omitempty"` + VendorDlkmPath *string `json:",omitempty"` + BuildingVendorImage *bool `json:",omitempty"` + OdmPath *string `json:",omitempty"` + BuildingOdmImage *bool `json:",omitempty"` + OdmDlkmPath *string `json:",omitempty"` + ProductPath *string `json:",omitempty"` + BuildingProductImage *bool `json:",omitempty"` + SystemExtPath *string `json:",omitempty"` + SystemDlkmPath *string `json:",omitempty"` + OemPath *string `json:",omitempty"` + UserdataPath *string `json:",omitempty"` + BuildingUserdataImage *bool `json:",omitempty"` ClangTidy *bool `json:",omitempty"` TidyChecks *string `json:",omitempty"` diff --git a/filesystem/android_device.go b/filesystem/android_device.go index 2645dc498..ab1b96ed0 100644 --- a/filesystem/android_device.go +++ b/filesystem/android_device.go @@ -36,6 +36,8 @@ type PartitionNameProperties struct { Odm_partition_name *string // The vbmeta partition and its "chained" partitions Vbmeta_partitions []string + // Name of the Userdata partition filesystem module + Userdata_partition_name *string } type androidDevice struct { @@ -70,6 +72,7 @@ func (a *androidDevice) DepsMutator(ctx android.BottomUpMutatorContext) { addDependencyIfDefined(a.partitionProps.Product_partition_name) addDependencyIfDefined(a.partitionProps.Vendor_partition_name) addDependencyIfDefined(a.partitionProps.Odm_partition_name) + addDependencyIfDefined(a.partitionProps.Userdata_partition_name) for _, vbmetaPartition := range a.partitionProps.Vbmeta_partitions { ctx.AddDependency(ctx.Module(), filesystemDepTag, vbmetaPartition) } diff --git a/fsgen/filesystem_creator.go b/fsgen/filesystem_creator.go index c9bbf3fa6..bcf236160 100644 --- a/fsgen/filesystem_creator.go +++ b/fsgen/filesystem_creator.go @@ -130,6 +130,9 @@ func (f *filesystemCreator) createDeviceModule( if android.InList("odm", generatedPartitionTypes) { partitionProps.Odm_partition_name = proptools.StringPtr(generatedModuleNameForPartition(ctx.Config(), "odm")) } + if android.InList("userdata", f.properties.Generated_partition_types) { + partitionProps.Userdata_partition_name = proptools.StringPtr(generatedModuleNameForPartition(ctx.Config(), "userdata")) + } partitionProps.Vbmeta_partitions = vbmetaPartitions ctx.CreateModule(filesystem.AndroidDeviceFactory, baseProps, partitionProps) @@ -202,6 +205,8 @@ func partitionSpecificFsProps(fsProps *filesystem.FilesystemProperties, partitio }, } fsProps.Base_dir = proptools.StringPtr("odm") + case "userdata": + fsProps.Base_dir = proptools.StringPtr("data") } } diff --git a/fsgen/fsgen_mutators.go b/fsgen/fsgen_mutators.go index 92ea1282a..e530a5b0a 100644 --- a/fsgen/fsgen_mutators.go +++ b/fsgen/fsgen_mutators.go @@ -93,6 +93,9 @@ func generatedPartitions(ctx android.LoadHookContext) []string { if ctx.DeviceConfig().BuildingOdmImage() && ctx.DeviceConfig().OdmPath() == "odm" { generatedPartitions = append(generatedPartitions, "odm") } + if ctx.DeviceConfig().BuildingUserdataImage() && ctx.DeviceConfig().UserdataPath() == "data" { + generatedPartitions = append(generatedPartitions, "userdata") + } if ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BuildingSystemDlkmImage { generatedPartitions = append(generatedPartitions, "system_dlkm") } @@ -144,6 +147,7 @@ func createFsGenState(ctx android.LoadHookContext, generatedPrebuiltEtcModuleNam "com.android.vndk.v34": defaultDepCandidateProps(ctx.Config()), }, "system_dlkm": {}, + "userdata": {}, }, fsDepsMutex: sync.Mutex{}, moduleToInstallationProps: map[string]installationProperties{}, |