diff options
author | 2025-02-14 14:21:57 -0800 | |
---|---|---|
committer | 2025-02-14 15:03:33 -0800 | |
commit | 781eff3b8baaca5a0917ac6e9ca23bd637c05ad6 (patch) | |
tree | a503e7a71b02838cf898ed272edaa0ba880a25bd | |
parent | 83cc13dc2ffdb2e1b77cb56e9d7dfb7b251a27ac (diff) |
Build aconfig files independently of staging dir
This is partially to improve incremental builds by doing less work
every time the partition is rebuilt, and partially to standardize
how files are installed for further refactors.
Bug: 394404628
Test: m aosp_shared_system_image, verified it didn't change before/after
Change-Id: If3ba83a7e4cee432fada70cccbf68dcc467e2e8b
-rw-r--r-- | filesystem/aconfig_files.go | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/filesystem/aconfig_files.go b/filesystem/aconfig_files.go index 6d034027d..b4173d784 100644 --- a/filesystem/aconfig_files.go +++ b/filesystem/aconfig_files.go @@ -22,6 +22,17 @@ import ( "github.com/google/blueprint/proptools" ) +func init() { + pctx.HostBinToolVariable("aconfig", "aconfig") +} + +var ( + aconfigCreateStorage = pctx.AndroidStaticRule("aconfig_create_storage", blueprint.RuleParams{ + Command: `$aconfig create-storage --container $container --file $fileType --out $out --cache $in --version $version`, + CommandDeps: []string{"$aconfig"}, + }, "container", "fileType", "version") +) + type installedAconfigFlagsInfo struct { aconfigFiles android.Paths } @@ -66,45 +77,57 @@ func (f *filesystem) buildAconfigFlagsFiles( container := f.PartitionType() - installAconfigFlagsPath := dir.Join(ctx, "etc", "aconfig_flags.pb") - cmd := builder.Command(). + aconfigFlagsPb := android.PathForModuleOut(ctx, "aconfig", "aconfig_flags.pb") + aconfigFlagsPbBuilder := android.NewRuleBuilder(pctx, ctx) + cmd := aconfigFlagsPbBuilder.Command(). BuiltTool("aconfig"). Text(" dump-cache --dedup --format protobuf --out"). - Output(installAconfigFlagsPath). + Output(aconfigFlagsPb). Textf("--filter container:%s+state:ENABLED", container). Textf("--filter container:%s+permission:READ_WRITE", container) for _, cache := range caches { cmd.FlagWithInput("--cache ", cache) } + aconfigFlagsPbBuilder.Build("aconfig_flags_pb", "build aconfig_flags.pb") + + installAconfigFlagsPath := dir.Join(ctx, "etc", "aconfig_flags.pb") + builder.Command().Text("mkdir -p ").Text(dir.Join(ctx, "etc").String()) + builder.Command().Text("cp").Input(aconfigFlagsPb).Text(installAconfigFlagsPath.String()) *fullInstallPaths = append(*fullInstallPaths, FullInstallPathInfo{ FullInstallPath: android.PathForModuleInPartitionInstall(ctx, f.PartitionType(), "etc/aconfig_flags.pb"), - SourcePath: installAconfigFlagsPath, + SourcePath: aconfigFlagsPb, }) f.appendToEntry(ctx, installAconfigFlagsPath) - installAconfigStorageDir := dir.Join(ctx, "etc", "aconfig") - builder.Command().Text("mkdir -p").Text(installAconfigStorageDir.String()) - // To enable fingerprint, we need to have v2 storage files. The default version is 1. storageFilesVersion := 1 if ctx.Config().ReleaseFingerprintAconfigPackages() { storageFilesVersion = 2 } + installAconfigStorageDir := dir.Join(ctx, "etc", "aconfig") + builder.Command().Text("mkdir -p").Text(installAconfigStorageDir.String()) + generatePartitionAconfigStorageFile := func(fileType, fileName string) { - outputPath := installAconfigStorageDir.Join(ctx, fileName) + outPath := android.PathForModuleOut(ctx, "aconfig", fileName) + installPath := installAconfigStorageDir.Join(ctx, fileName) + ctx.Build(pctx, android.BuildParams{ + Rule: aconfigCreateStorage, + Input: aconfigFlagsPb, + Output: outPath, + Args: map[string]string{ + "container": container, + "fileType": fileType, + "version": strconv.Itoa(storageFilesVersion), + }, + }) builder.Command(). - BuiltTool("aconfig"). - FlagWithArg("create-storage --container ", container). - FlagWithArg("--file ", fileType). - FlagWithOutput("--out ", outputPath). - FlagWithArg("--cache ", installAconfigFlagsPath.String()). - FlagWithArg("--version ", strconv.Itoa(storageFilesVersion)) + Text("cp").Input(outPath).Text(installPath.String()) *fullInstallPaths = append(*fullInstallPaths, FullInstallPathInfo{ + SourcePath: outPath, FullInstallPath: android.PathForModuleInPartitionInstall(ctx, f.PartitionType(), "etc/aconfig", fileName), - SourcePath: outputPath, }) - f.appendToEntry(ctx, outputPath) + f.appendToEntry(ctx, installPath) } if ctx.Config().ReleaseCreateAconfigStorageFile() { |