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>
diff --git a/filesystem/android_device.go b/filesystem/android_device.go
index 9a085a6..8b6ea49 100644
--- a/filesystem/android_device.go
+++ b/filesystem/android_device.go
@@ -121,6 +121,7 @@
rootDirForFsConfigTimestamp android.Path
apkCertsInfo android.Path
targetFilesZip android.Path
+ updatePackage android.Path
}
func AndroidDeviceFactory() android.Module {
@@ -200,6 +201,7 @@
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 @@
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 @@
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 fd1c784..c3c3835 100644
--- a/filesystem/filesystem.go
+++ b/filesystem/filesystem.go
@@ -249,6 +249,10 @@
// 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 @@
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 @@
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