diff options
Diffstat (limited to 'apex/builder.go')
-rw-r--r-- | apex/builder.go | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/apex/builder.go b/apex/builder.go index 3f358acd4..30788630b 100644 --- a/apex/builder.go +++ b/apex/builder.go @@ -24,6 +24,7 @@ import ( "strconv" "strings" + "android/soong/aconfig" "android/soong/android" "android/soong/java" @@ -36,6 +37,7 @@ var ( ) func init() { + pctx.Import("android/soong/aconfig") pctx.Import("android/soong/android") pctx.Import("android/soong/cc/config") pctx.Import("android/soong/java") @@ -80,6 +82,7 @@ func init() { pctx.HostBinToolVariable("conv_linker_config", "conv_linker_config") pctx.HostBinToolVariable("assemble_vintf", "assemble_vintf") pctx.HostBinToolVariable("apex_elf_checker", "apex_elf_checker") + pctx.HostBinToolVariable("aconfig", "aconfig") } var ( @@ -574,6 +577,7 @@ func (a *apexBundle) buildApex(ctx android.ModuleContext) { installMapSet[installMapPath.String()+":"+fi.installDir+"/"+fi.builtFile.Base()] = true } + implicitInputs = append(implicitInputs, a.manifestPbOut) if len(installMapSet) > 0 { @@ -628,10 +632,28 @@ func (a *apexBundle) buildApex(ctx android.ModuleContext) { outHostBinDir := ctx.Config().HostToolPath(ctx, "").String() prebuiltSdkToolsBinDir := filepath.Join("prebuilts", "sdk", "tools", runtime.GOOS, "bin") + defaultReadOnlyFiles := []string{"apex_manifest.json", "apex_manifest.pb"} + if len(a.aconfigFiles) > 0 { + apexAconfigFile := android.PathForModuleOut(ctx, "aconfig_flags.pb") + ctx.Build(pctx, android.BuildParams{ + Rule: aconfig.AllDeclarationsRule, + Inputs: a.aconfigFiles, + Output: apexAconfigFile, + Description: "combine_aconfig_declarations", + Args: map[string]string{ + "cache_files": android.JoinPathsWithPrefix(a.aconfigFiles, "--cache "), + }, + }) + + copyCommands = append(copyCommands, "cp -f "+apexAconfigFile.String()+" "+imageDir.String()) + implicitInputs = append(implicitInputs, apexAconfigFile) + defaultReadOnlyFiles = append(defaultReadOnlyFiles, apexAconfigFile.Base()) + } + //////////////////////////////////////////////////////////////////////////////////// // Step 2: create canned_fs_config which encodes filemode,uid,gid of each files // in this APEX. The file will be used by apexer in later steps. - cannedFsConfig := a.buildCannedFsConfig(ctx) + cannedFsConfig := a.buildCannedFsConfig(ctx, defaultReadOnlyFiles) implicitInputs = append(implicitInputs, cannedFsConfig) //////////////////////////////////////////////////////////////////////////////////// @@ -1082,8 +1104,8 @@ func (a *apexBundle) buildLintReports(ctx android.ModuleContext) { a.lintReports = java.BuildModuleLintReportZips(ctx, depSetsBuilder.Build()) } -func (a *apexBundle) buildCannedFsConfig(ctx android.ModuleContext) android.OutputPath { - var readOnlyPaths = []string{"apex_manifest.json", "apex_manifest.pb"} +func (a *apexBundle) buildCannedFsConfig(ctx android.ModuleContext, defaultReadOnlyFiles []string) android.OutputPath { + var readOnlyPaths = defaultReadOnlyFiles var executablePaths []string // this also includes dirs var appSetDirs []string appSetFiles := make(map[string]android.Path) |