Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit deba159e authored by Jiyong Park's avatar Jiyong Park Committed by android-build-merger
Browse files

Merge "Prebuilt APEXes are recoreded in apexkeys.txt"

am: 1341942d

Change-Id: If24dc20f3238bc1d7a84f2b2485871173b9e5e66
parents 5b70a032 1341942d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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)
+5 −1
Original line number Diff line number Diff line
@@ -1376,11 +1376,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)
	}
+30 −4
Original line number Diff line number Diff line
@@ -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",