Merge "Prebuilt APEXes are recoreded in apexkeys.txt" into qt-dev

This commit is contained in:
TreeHugger Robot 2019-04-24 03:46:16 +00:00 committed by Android (Google) Code Review
commit a25a2779c6
3 changed files with 39 additions and 5 deletions

View file

@ -74,6 +74,10 @@ func (p *Prebuilt) SingleSourcePath(ctx ModuleContext) Path {
}
}
func (p *Prebuilt) UsePrebuilt() bool {
return p.properties.UsePrebuilt
}
func InitPrebuiltModule(module PrebuiltInterface, srcs *[]string) {
p := module.Prebuilt()
module.AddProperties(&p.properties)

View file

@ -1373,11 +1373,15 @@ func (p *Prebuilt) Srcs() android.Paths {
return android.Paths{p.outputApex}
}
func (p *Prebuilt) InstallFilename() string {
return proptools.StringDefault(p.properties.Filename, p.BaseModuleName()+imageApexSuffix)
}
func (p *Prebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) {
// TODO(jungjw): Check the key validity.
p.inputApex = p.Prebuilt().SingleSourcePath(ctx)
p.installDir = android.PathForModuleInstall(ctx, "apex")
p.installFilename = proptools.StringDefault(p.properties.Filename, ctx.ModuleName()+imageApexSuffix)
p.installFilename = p.InstallFilename()
if !strings.HasSuffix(p.installFilename, imageApexSuffix) {
ctx.ModuleErrorf("filename should end in %s for prebuilt_apex", imageApexSuffix)
}

View file

@ -16,6 +16,7 @@ package apex
import (
"fmt"
"sort"
"strings"
"android/soong/android"
@ -106,12 +107,31 @@ type apexKeysText struct {
func (s *apexKeysText) GenerateBuildActions(ctx android.SingletonContext) {
s.output = android.PathForOutput(ctx, "apexkeys.txt")
var filecontent strings.Builder
apexModulesMap := make(map[string]android.Module)
ctx.VisitAllModules(func(module android.Module) {
if m, ok := module.(android.Module); ok && !m.Enabled() {
return
if m, ok := module.(*apexBundle); ok && m.Enabled() && m.installable() {
apexModulesMap[m.Name()] = m
}
})
// Find prebuilts and let them override apexBundle if they are preferred
ctx.VisitAllModules(func(module android.Module) {
if m, ok := module.(*Prebuilt); ok && m.Enabled() && m.installable() &&
m.Prebuilt().UsePrebuilt() {
apexModulesMap[m.BaseModuleName()] = m
}
})
// iterating over map does not give consistent ordering in golang
var moduleNames []string
for key, _ := range apexModulesMap {
moduleNames = append(moduleNames, key)
}
sort.Strings(moduleNames)
var filecontent strings.Builder
for _, key := range moduleNames {
module := apexModulesMap[key]
if m, ok := module.(*apexBundle); ok {
fmt.Fprintf(&filecontent,
"name=%q public_key=%q private_key=%q container_certificate=%q container_private_key=%q\\n",
@ -120,8 +140,14 @@ func (s *apexKeysText) GenerateBuildActions(ctx android.SingletonContext) {
m.private_key_file.String(),
m.container_certificate_file.String(),
m.container_private_key_file.String())
} else if m, ok := module.(*Prebuilt); ok {
fmt.Fprintf(&filecontent,
"name=%q public_key=%q private_key=%q container_certificate=%q container_private_key=%q\\n",
m.InstallFilename(),
"PRESIGNED", "PRESIGNED", "PRESIGNED", "PRESIGNED")
}
})
}
ctx.Build(pctx, android.BuildParams{
Rule: android.WriteFile,
Description: "apexkeys.txt",