From 65bcd97dbce6aee8aac13193d5d30742903afbda Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Tue, 18 Mar 2025 00:14:47 +0000 Subject: Add some OTA related entries to misc_info.txt Corresponding make code: https://cs.android.com/android/_/android/platform/build/+/8445b1703a24d34a2c6fc789f47cf81ceda3aaea:core/Makefile;l=5957-5965;drc=519f75666431ee2926e0ec8991c682b28a4c9521;bpv=1;bpt=0 This adds a subset of the args passed to mkbootimg cmd of the bootimg deps. For cuttlefish, `header_version` seems to be the only argument added to BOARD_*_MKBOOTIMG_ARGS. Bug: 398036609 Test: Built Soong target_files.zip locally Change-Id: I1e8e61df00a538c63b7020a3c9fa027ce3e52e12 --- filesystem/android_device.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'filesystem/android_device.go') diff --git a/filesystem/android_device.go b/filesystem/android_device.go index 9cb90da12..11c0834ec 100644 --- a/filesystem/android_device.go +++ b/filesystem/android_device.go @@ -760,6 +760,24 @@ func (a *androidDevice) addMiscInfo(ctx android.ModuleContext) android.Path { Textf("&& echo recovery_api_version=%s >> %s", ctx.Config().VendorConfig("recovery").String("recovery_api_version"), miscInfo). Textf("&& echo fstab_version=%s >> %s", ctx.Config().VendorConfig("recovery").String("recovery_fstab_version"), miscInfo). ImplicitOutput(miscInfo) + if len(ctx.Config().ExtraOtaRecoveryKeys()) > 0 { + builder.Command().Textf(`echo "extra_recovery_keys=%s" >> %s`, strings.Join(ctx.Config().ExtraOtaRecoveryKeys(), ""), miscInfo) + } else { + if a.partitionProps.Boot_partition_name != nil { + builder.Command(). + Textf("echo mkbootimg_args='--header_version %s' >> %s", a.getBootimgHeaderVersion(ctx, a.partitionProps.Boot_partition_name), miscInfo). + // TODO: Use boot's header version for recovery for now since cuttlefish does not set `BOARD_RECOVERY_MKBOOTIMG_ARGS` + Textf(" && echo recovery_mkbootimg_args='--header_version %s' >> %s", a.getBootimgHeaderVersion(ctx, a.partitionProps.Boot_partition_name), miscInfo) + } + if a.partitionProps.Init_boot_partition_name != nil { + builder.Command(). + Textf("echo mkbootimg_init_args='--header_version' %s >> %s", a.getBootimgHeaderVersion(ctx, a.partitionProps.Init_boot_partition_name), miscInfo) + } + builder.Command(). + Textf("echo mkbootimg_version_args='--os_version %s --os_patch_level %s' >> %s", ctx.Config().PlatformVersionLastStable(), ctx.Config().PlatformSecurityPatch(), miscInfo). + Textf(" && echo multistage_support=1 >> %s", miscInfo). + Textf(" && echo blockimgdiff_versions=3,4 >> %s", miscInfo) + } if a.partitionProps.Recovery_partition_name == nil { builder.Command().Textf("echo no_recovery=true >> %s", miscInfo) @@ -813,6 +831,12 @@ func (a *androidDevice) addMiscInfo(ctx android.ModuleContext) android.Path { return miscInfo } +func (a *androidDevice) getBootimgHeaderVersion(ctx android.ModuleContext, bootImgName *string) string { + bootImg := ctx.GetDirectDepProxyWithTag(proptools.String(bootImgName), filesystemDepTag) + bootImgInfo, _ := android.OtherModuleProvider(ctx, bootImg, BootimgInfoProvider) + return bootImgInfo.HeaderVersion +} + // addImgToTargetFiles invokes `add_img_to_target_files` and creates the following files in META/ // - apex_info.pb // - care_map.pb -- cgit v1.2.3-59-g8ed1b From bb15b74dfeaaa1df6e4552a8d8428a7178c0a4d7 Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Tue, 18 Mar 2025 03:02:03 +0000 Subject: Add more entries to Soong's misc_info.txt Note that `erofs_default_compress_hints` is different between make and soong. For CF, the former has value of `device/google/cuttlefish/shared/erofs_compress_hints.txt`, while the latter has the value of `build/make/target/product/generic/erofs_compress_hints.txt`. The contents of both these hint files are same. Test: Built and diff'd locally Bug: 398036609 Change-Id: If02923f6bdb7a53b5158c5960c0494da71473bc1 --- filesystem/android_device.go | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'filesystem/android_device.go') diff --git a/filesystem/android_device.go b/filesystem/android_device.go index 11c0834ec..28ecd5345 100644 --- a/filesystem/android_device.go +++ b/filesystem/android_device.go @@ -753,12 +753,28 @@ func (a *androidDevice) copyMetadataToTargetZip(ctx android.ModuleContext, build // This file is subsequently used by add_img_to_target_files to create additioanl metadata files like apex_info.pb // TODO (b/399788119): Complete the migration of misc_info.txt func (a *androidDevice) addMiscInfo(ctx android.ModuleContext) android.Path { + buildType := func() string { + if ctx.Config().Debuggable() { + return "userdebug" + } else if ctx.Config().Eng() { + return "eng" + } else { + return "user" + } + } + defaultAppCertificate := func() string { + pem, _ := ctx.Config().DefaultAppCertificate(ctx) + return strings.TrimSuffix(pem.String(), ".x509.pem") + } + builder := android.NewRuleBuilder(pctx, ctx) miscInfo := android.PathForModuleOut(ctx, "misc_info.txt") builder.Command(). Textf("rm -f %s", miscInfo). Textf("&& echo recovery_api_version=%s >> %s", ctx.Config().VendorConfig("recovery").String("recovery_api_version"), miscInfo). Textf("&& echo fstab_version=%s >> %s", ctx.Config().VendorConfig("recovery").String("recovery_fstab_version"), miscInfo). + Textf("&& echo build_type=%s >> %s", buildType(), miscInfo). + Textf("&& echo default_system_dev_certificate=%s >> %s", defaultAppCertificate(), miscInfo). ImplicitOutput(miscInfo) if len(ctx.Config().ExtraOtaRecoveryKeys()) > 0 { builder.Command().Textf(`echo "extra_recovery_keys=%s" >> %s`, strings.Join(ctx.Config().ExtraOtaRecoveryKeys(), ""), miscInfo) @@ -778,11 +794,17 @@ func (a *androidDevice) addMiscInfo(ctx android.ModuleContext) android.Path { Textf(" && echo multistage_support=1 >> %s", miscInfo). Textf(" && echo blockimgdiff_versions=3,4 >> %s", miscInfo) } + fsInfos := a.getFsInfos(ctx) + if _, ok := fsInfos["vendor"]; ok { + builder.Command().Textf("echo board_uses_vendorimage=true >> %s", miscInfo) + } + if fsInfos["system"].ErofsCompressHints != nil { + builder.Command().Textf("echo erofs_default_compress_hints=%s >> %s", fsInfos["system"].ErofsCompressHints, miscInfo) + } if a.partitionProps.Recovery_partition_name == nil { builder.Command().Textf("echo no_recovery=true >> %s", miscInfo) } - fsInfos := a.getFsInfos(ctx) for _, partition := range android.SortedKeys(fsInfos) { if fsInfos[partition].PropFileForMiscInfo != nil { builder.Command().Text("cat").Input(fsInfos[partition].PropFileForMiscInfo).Textf(" >> %s", miscInfo) -- cgit v1.2.3-59-g8ed1b