summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Spandan Das <spandandas@google.com> 2025-03-21 15:08:30 -0700
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2025-03-21 15:08:30 -0700
commit273bf6e9b6e00141ad726b532032b5a290d67ad7 (patch)
tree51c761d7c5d9fc5d335f24f6cdd1c3ee2eaafe2f
parent780dd8642a6f35c5b0b6810713fc874f8c52c827 (diff)
parenta85dbb2bef1f34f0c08d1b418ca699aed43e91f9 (diff)
Merge changes from topic "export_flash_block_size_to_soong" into main
* changes: Add some OTA related properties to android_device Add `avb_custom_vbmeta_images_partition_list` to misc_info.txt
-rw-r--r--android/variable.go4
-rw-r--r--filesystem/android_device.go23
-rw-r--r--filesystem/vbmeta.go18
-rw-r--r--fsgen/filesystem_creator.go17
-rw-r--r--fsgen/vbmeta_partitions.go16
5 files changed, 59 insertions, 19 deletions
diff --git a/android/variable.go b/android/variable.go
index 8c9a0b1a5..5980efda4 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -715,6 +715,10 @@ type PartitionVariables struct {
ReleaseToolsExtensionDir string `json:",omitempty"`
+ BoardPartialOtaUpdatePartitionsList []string `json:",omitempty"`
+ BoardFlashBlockSize string `json:",omitempty"`
+ BootloaderInUpdatePackage bool `json:",omitempty"`
+
BoardFastbootInfoFile string `json:",omitempty"`
}
diff --git a/filesystem/android_device.go b/filesystem/android_device.go
index feb000dc4..aa7100887 100644
--- a/filesystem/android_device.go
+++ b/filesystem/android_device.go
@@ -90,6 +90,10 @@ type DeviceProperties struct {
Releasetools_extension *string `android:"path"`
FastbootInfo *string `android:"path"`
+ Partial_ota_update_partitions []string
+ Flash_block_size *string
+ Bootloader_in_update_package *bool
+
// The kernel version in the build. Will be verified against the actual kernel.
// If not provided, will attempt to extract it from the loose kernel or the kernel inside
// the boot image. The version is later used to decide whether or not to enable uffd_gc
@@ -840,14 +844,25 @@ func (a *androidDevice) addMiscInfo(ctx android.ModuleContext) android.Path {
Textf("echo avb_enable=true >> %s", miscInfo).
Textf("&& echo avb_building_vbmeta_image=true >> %s", miscInfo).
Textf("&& echo avb_avbtool=avbtool >> %s", miscInfo)
+
+ var allChainedVbmetaPartitionTypes []string
for _, vbmetaPartitionName := range a.partitionProps.Vbmeta_partitions {
img := ctx.GetDirectDepProxyWithTag(vbmetaPartitionName, filesystemDepTag)
if provider, ok := android.OtherModuleProvider(ctx, img, vbmetaPartitionProvider); ok {
builder.Command().Text("cat").Input(provider.PropFileForMiscInfo).Textf(" >> %s", miscInfo)
+ if provider.FilesystemPartitionType != "" { // the top-level vbmeta.img
+ allChainedVbmetaPartitionTypes = append(allChainedVbmetaPartitionTypes, provider.FilesystemPartitionType)
+ }
} else {
ctx.ModuleErrorf("vbmeta dep %s does not set vbmetaPartitionProvider\n", vbmetaPartitionName)
}
}
+ // Determine the custom vbmeta partitions by removing system and vendor
+ customVbmetaPartitionTypes := android.RemoveListFromList(allChainedVbmetaPartitionTypes, []string{"system", "vendor"})
+ builder.Command().Textf("echo avb_custom_vbmeta_images_partition_list=%s >> %s",
+ strings.Join(android.SortedUniqueStrings(customVbmetaPartitionTypes), " "),
+ miscInfo,
+ )
}
if a.partitionProps.Boot_partition_name != nil {
@@ -883,6 +898,14 @@ func (a *androidDevice) addMiscInfo(ctx android.ModuleContext) android.Path {
builder.Command().Text("cat").Input(bootImgInfo.PropFileForMiscInfo).Textf(" >> %s", miscInfo)
}
+ builder.Command().Textf("echo blocksize=%s >> %s", proptools.String(a.deviceProps.Flash_block_size), miscInfo)
+ if proptools.Bool(a.deviceProps.Bootloader_in_update_package) {
+ builder.Command().Textf("echo bootloader_in_update_package=true >> %s", miscInfo)
+ }
+ if len(a.deviceProps.Partial_ota_update_partitions) > 0 {
+ builder.Command().Textf("echo partial_ota_update_partitions_list=%s >> %s", strings.Join(a.deviceProps.Partial_ota_update_partitions, " "), miscInfo)
+ }
+
// Sort and dedup
builder.Command().Textf("sort -u %s -o %s", miscInfo, miscInfo)
diff --git a/filesystem/vbmeta.go b/filesystem/vbmeta.go
index d59a2aec5..e7a39bef7 100644
--- a/filesystem/vbmeta.go
+++ b/filesystem/vbmeta.go
@@ -55,6 +55,10 @@ type VbmetaProperties struct {
// Name of the partition stored in vbmeta desc. Defaults to the name of this module.
Partition_name *string
+ // Type of the `android_filesystem` for which the vbmeta.img is created.
+ // Examples are system, vendor, product.
+ Filesystem_partition_type *string
+
// Set the name of the output. Defaults to <module_name>.img.
Stem *string
@@ -118,6 +122,9 @@ type vbmetaPartitionInfo struct {
// Name of the partition
Name string
+ // Partition type of the correspdonding android_filesystem.
+ FilesystemPartitionType string
+
// Rollback index location, non-negative int
RollbackIndexLocation int
@@ -305,11 +312,12 @@ func (v *vbmeta) GenerateAndroidBuildActions(ctx android.ModuleContext) {
})
android.SetProvider(ctx, vbmetaPartitionProvider, vbmetaPartitionInfo{
- Name: v.partitionName(),
- RollbackIndexLocation: ril,
- PublicKey: extractedPublicKey,
- Output: output,
- PropFileForMiscInfo: v.buildPropFileForMiscInfo(ctx),
+ Name: v.partitionName(),
+ FilesystemPartitionType: proptools.String(v.properties.Filesystem_partition_type),
+ RollbackIndexLocation: ril,
+ PublicKey: extractedPublicKey,
+ Output: output,
+ PropFileForMiscInfo: v.buildPropFileForMiscInfo(ctx),
})
ctx.SetOutputFiles([]android.Path{output}, "")
diff --git a/fsgen/filesystem_creator.go b/fsgen/filesystem_creator.go
index b73fb219f..14aa062fc 100644
--- a/fsgen/filesystem_creator.go
+++ b/fsgen/filesystem_creator.go
@@ -419,13 +419,16 @@ func (f *filesystemCreator) createDeviceModule(
partitionProps.Vbmeta_partitions = vbmetaPartitions
deviceProps := &filesystem.DeviceProperties{
- Main_device: proptools.BoolPtr(true),
- Ab_ota_updater: proptools.BoolPtr(ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.AbOtaUpdater),
- Ab_ota_partitions: ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.AbOtaPartitions,
- Ab_ota_postinstall_config: ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.AbOtaPostInstallConfig,
- Ramdisk_node_list: proptools.StringPtr(":ramdisk_node_list"),
- Android_info: proptools.StringPtr(":" + generatedModuleName(ctx.Config(), "android_info.prop{.txt}")),
- Kernel_version: ctx.Config().ProductVariables().BoardKernelVersion,
+ Main_device: proptools.BoolPtr(true),
+ Ab_ota_updater: proptools.BoolPtr(ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.AbOtaUpdater),
+ Ab_ota_partitions: ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.AbOtaPartitions,
+ Ab_ota_postinstall_config: ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.AbOtaPostInstallConfig,
+ Ramdisk_node_list: proptools.StringPtr(":ramdisk_node_list"),
+ Android_info: proptools.StringPtr(":" + generatedModuleName(ctx.Config(), "android_info.prop{.txt}")),
+ Kernel_version: ctx.Config().ProductVariables().BoardKernelVersion,
+ Partial_ota_update_partitions: ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BoardPartialOtaUpdatePartitionsList,
+ Flash_block_size: proptools.StringPtr(ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BoardFlashBlockSize),
+ Bootloader_in_update_package: proptools.BoolPtr(ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse.BootloaderInUpdatePackage),
}
if bootloader, ok := f.createBootloaderFilegroup(ctx); ok {
diff --git a/fsgen/vbmeta_partitions.go b/fsgen/vbmeta_partitions.go
index 11f4bd013..594c40482 100644
--- a/fsgen/vbmeta_partitions.go
+++ b/fsgen/vbmeta_partitions.go
@@ -76,6 +76,7 @@ func (f *filesystemCreator) createVbmetaPartitions(ctx android.LoadHookContext,
var chainedPartitionTypes []string
for _, chainedName := range android.SortedKeys(partitionVars.ChainedVbmetaPartitions) {
props := partitionVars.ChainedVbmetaPartitions[chainedName]
+ filesystemPartitionType := chainedName
chainedName = "vbmeta_" + chainedName
if len(props.Partitions) == 0 {
continue
@@ -123,13 +124,14 @@ func (f *filesystemCreator) createVbmetaPartitions(ctx android.LoadHookContext,
filesystem.VbmetaFactory,
".", // Create in the root directory for now so its easy to get the key
&filesystem.VbmetaProperties{
- Partition_name: proptools.StringPtr(chainedName),
- Stem: proptools.StringPtr(chainedName + ".img"),
- Private_key: proptools.StringPtr(props.Key),
- Algorithm: &props.Algorithm,
- Rollback_index: rollbackIndex,
- Rollback_index_location: &ril,
- Partitions: proptools.NewSimpleConfigurable(partitionModules),
+ Partition_name: proptools.StringPtr(chainedName),
+ Filesystem_partition_type: proptools.StringPtr(filesystemPartitionType),
+ Stem: proptools.StringPtr(chainedName + ".img"),
+ Private_key: proptools.StringPtr(props.Key),
+ Algorithm: &props.Algorithm,
+ Rollback_index: rollbackIndex,
+ Rollback_index_location: &ril,
+ Partitions: proptools.NewSimpleConfigurable(partitionModules),
}, &struct {
Name *string
}{