Prebuilt APEXes are recoreded in apexkeys.txt
apexkeys.txt now correctly lists prebuilt APEXes with keys specified as
PRESIGNED.
This change also fixes a bug that non-installable APEXes are listed in
the file.
Bug: 131130235
Test: m out/soong/apexkeys.txt and check that
com.android.apex.cts.shim.apex is listed there with PRESIGNED keys.
Merged-In: Ib6d391a82864714743a1cc59cd655bea917b5073
Change-Id: Ib6d391a82864714743a1cc59cd655bea917b5073
(cherry picked from commit a41f12a6fa
)
This commit is contained in:
parent
f3c5e4816c
commit
4d27704da0
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
34
apex/key.go
34
apex/key.go
|
@ -16,6 +16,7 @@ package apex
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"android/soong/android"
|
||||
|
@ -105,12 +106,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",
|
||||
|
@ -119,8 +139,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",
|
||||
|
|
Loading…
Reference in New Issue