Move the installation rules of boot images to soong am: 29207b57cf

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3200723

Change-Id: I8d99fe7855430a66f516ba3687faf51ace237c60
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Spandan Das
2024-08-06 10:18:00 +00:00
committed by Automerger Merge Worker
3 changed files with 22 additions and 10 deletions

View File

@@ -104,7 +104,6 @@ cc_genrule {
// Instantiate the dex_bootjars singleton module.
dex_bootjars {
name: "dex_bootjars",
no_full_install: true,
}
// Pseudo-test that's run on checkbuilds to ensure that get_clang_version can

View File

@@ -616,10 +616,8 @@ func getModuleInstallPathInfo(ctx android.ModuleContext, fullInstallPath string)
return installPath, relDir, installBase
}
// RuleBuilder.Install() adds output-to-install copy pairs to a list for Make. To share this
// information with PackagingSpec in soong, call PackageFile for them.
// The install path and the target install partition of the module must be the same.
func packageFile(ctx android.ModuleContext, install android.RuleBuilderInstall) {
// installFile will install the file if `install` path and the target install partition are the same.
func installFile(ctx android.ModuleContext, install android.RuleBuilderInstall) {
installPath, relDir, name := getModuleInstallPathInfo(ctx, install.To)
// Empty name means the install partition is not for the target image.
// For the system image, files for "apex" and "system_other" are skipped here.
@@ -628,7 +626,7 @@ func packageFile(ctx android.ModuleContext, install android.RuleBuilderInstall)
// TODO(b/320196894): Files for "system_other" are skipped because soong creates the system
// image only for now.
if name != "" {
ctx.PackageFile(installPath.Join(ctx, relDir), name, install.From)
ctx.InstallFile(installPath.Join(ctx, relDir), name, install.From)
}
}

View File

@@ -491,6 +491,11 @@ type dexpreoptBootJars struct {
// Build path to a config file that Soong writes for Make (to be used in makefiles that install
// the default boot image).
dexpreoptConfigForMake android.WritablePath
// Build path to the boot framework profile.
// This is used as the `OutputFile` in `AndroidMkEntries`.
// A non-nil value ensures that this singleton module does not get skipped in AndroidMkEntries processing.
bootFrameworkProfile android.WritablePath
}
func (dbj *dexpreoptBootJars) DepsMutator(ctx android.BottomUpMutatorContext) {
@@ -603,7 +608,8 @@ func (d *dexpreoptBootJars) GenerateAndroidBuildActions(ctx android.ModuleContex
installs := generateBootImage(ctx, config)
profileInstalls = append(profileInstalls, installs...)
if config == d.defaultBootImage {
_, installs := bootFrameworkProfileRule(ctx, config)
bootProfile, installs := bootFrameworkProfileRule(ctx, config)
d.bootFrameworkProfile = bootProfile
profileInstalls = append(profileInstalls, installs...)
}
}
@@ -613,7 +619,7 @@ func (d *dexpreoptBootJars) GenerateAndroidBuildActions(ctx android.ModuleContex
profileLicenseMetadataFile: android.OptionalPathForPath(ctx.LicenseMetadataFile()),
})
for _, install := range profileInstalls {
packageFile(ctx, install)
installFile(ctx, install)
}
}
}
@@ -939,7 +945,7 @@ func packageFileForTargetImage(ctx android.ModuleContext, image *bootImageVarian
}
for _, install := range image.installs {
packageFile(ctx, install)
installFile(ctx, install)
}
for _, install := range image.vdexInstalls {
@@ -1231,7 +1237,7 @@ func bootImageProfileRule(ctx android.ModuleContext, image *bootImageConfig) (an
profile := bootImageProfileRuleCommon(ctx, image.name, image.dexPathsDeps.Paths(), image.getAnyAndroidVariant().dexLocationsDeps)
if image == defaultBootImageConfig(ctx) {
if image == defaultBootImageConfig(ctx) && profile != nil {
rule := android.NewRuleBuilder(pctx, ctx)
rule.Install(profile, "/system/etc/boot-image.prof")
return profile, rule.Installs()
@@ -1377,3 +1383,12 @@ func (d *dexpreoptBootJars) MakeVars(ctx android.MakeVarsContext) {
ctx.Strict("DEXPREOPT_IMAGE_NAMES", strings.Join(getImageNames(), " "))
}
}
// Add one of the outputs in `OutputFile`
// This ensures that this singleton module does not get skipped when writing out/soong/Android-*.mk
func (d *dexpreoptBootJars) AndroidMkEntries() []android.AndroidMkEntries {
return []android.AndroidMkEntries{{
Class: "ETC",
OutputFile: android.OptionalPathForPath(d.bootFrameworkProfile),
}}
}