diff options
author | 2025-03-24 16:05:15 -0700 | |
---|---|---|
committer | 2025-03-24 16:05:15 -0700 | |
commit | c2e8b6c102f4b4b44e2568f07d95fc674bbd2ef0 (patch) | |
tree | d9f495586f867878d601c34c59eb3c49ec3d5a53 | |
parent | 67a3797aadf07e8e3a5d3237a992c7f33c61c411 (diff) | |
parent | dd87ef7feffcdcbda716508309c6e52d259388a4 (diff) |
Merge "Build and dist updatepackage" into main am: dd87ef7fef
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3558149
Change-Id: Ie0dff2adc8ad611de8b5853a9270bfd24a9b8e70
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | filesystem/android_device.go | 37 | ||||
-rw-r--r-- | filesystem/filesystem.go | 6 |
2 files changed, 43 insertions, 0 deletions
diff --git a/filesystem/android_device.go b/filesystem/android_device.go index 9a085a628..8b6ea4937 100644 --- a/filesystem/android_device.go +++ b/filesystem/android_device.go @@ -121,6 +121,7 @@ type androidDevice struct { rootDirForFsConfigTimestamp android.Path apkCertsInfo android.Path targetFilesZip android.Path + updatePackage android.Path } func AndroidDeviceFactory() android.Module { @@ -200,6 +201,7 @@ func (a *androidDevice) GenerateAndroidBuildActions(ctx android.ModuleContext) { a.miscInfo = a.addMiscInfo(ctx) a.buildTargetFilesZip(ctx, allInstalledModules) a.buildProguardZips(ctx, allInstalledModules) + a.buildUpdatePackage(ctx) var deps []android.Path if proptools.String(a.partitionProps.Super_partition_name) != "" { @@ -405,6 +407,9 @@ func (a *androidDevice) distFiles(ctx android.ModuleContext) { if a.targetFilesZip != nil { ctx.DistForGoalWithFilename("target-files-package", a.targetFilesZip, namePrefix+insertBeforeExtension(a.targetFilesZip.Base(), "-FILE_NAME_TAG_PLACEHOLDER")) } + if a.updatePackage != nil { + ctx.DistForGoalWithFilename("updatepackage", a.updatePackage, namePrefix+insertBeforeExtension(a.updatePackage.Base(), "-FILE_NAME_TAG_PLACEHOLDER")) + } } } @@ -948,6 +953,38 @@ func (a *androidDevice) addImgToTargetFiles(ctx android.ModuleContext, builder * Text(targetFilesDir) } +func (a *androidDevice) buildUpdatePackage(ctx android.ModuleContext) { + var exclusions []string + fsInfos := a.getFsInfos(ctx) + // Exclude the partitions that are not supported by flashall + for _, partition := range android.SortedKeys(fsInfos) { + if fsInfos[partition].NoFlashall { + exclusions = append(exclusions, fmt.Sprintf("IMAGES/%s.img", partition)) + exclusions = append(exclusions, fmt.Sprintf("IMAGES/%s.map", partition)) + } + } + + updatePackage := android.PathForModuleOut(ctx, "img.zip") + rule := android.NewRuleBuilder(pctx, ctx) + + buildSuperImage := ctx.Config().HostToolPath(ctx, "build_super_image") + zip2zip := ctx.Config().HostToolPath(ctx, "zip2zip") + + rule.Command(). + BuiltTool("img_from_target_files"). + Text("--additional IMAGES/VerifiedBootParams.textproto:VerifiedBootParams.textproto"). + FlagForEachArg("--exclude ", exclusions). + FlagWithArg("--build_super_image ", buildSuperImage.String()). + Implicit(buildSuperImage). + Implicit(zip2zip). + Input(a.targetFilesZip). + Output(updatePackage) + + rule.Build("updatepackage", "Building updatepackage") + + a.updatePackage = updatePackage +} + type ApexKeyPathInfo struct { ApexKeyPath android.Path } diff --git a/filesystem/filesystem.go b/filesystem/filesystem.go index fd1c784ec..c3c3835f6 100644 --- a/filesystem/filesystem.go +++ b/filesystem/filesystem.go @@ -249,6 +249,10 @@ type FilesystemProperties struct { // Whether to enable per-file compression in f2fs Enable_compression *bool + + // Whether this partition is not supported by flashall. + // If true, this partition will not be included in the `updatedpackage` dist artifact. + No_flashall *bool } type AndroidFilesystemDeps struct { @@ -464,6 +468,7 @@ type FilesystemInfo struct { AvbHashAlgorithm string AvbKey android.Path PartitionName string + NoFlashall bool // HasOrIsRecovery returns true for recovery and for ramdisks with a recovery partition. HasOrIsRecovery bool } @@ -725,6 +730,7 @@ func (f *filesystem) GenerateAndroidBuildActions(ctx android.ModuleContext) { PartitionSize: f.properties.Partition_size, PartitionName: f.partitionName(), HasOrIsRecovery: f.hasOrIsRecovery(ctx), + NoFlashall: proptools.Bool(f.properties.No_flashall), } if proptools.Bool(f.properties.Use_avb) { fsInfo.UseAvb = true |