aboutsummaryrefslogtreecommitdiffstats
path: root/apex
diff options
context:
space:
mode:
authorJiyong Park <jiyong@google.com>2019-02-02 13:13:47 +0900
committerJiyong Park <jiyong@google.com>2019-02-06 09:24:39 +0900
commit23c52b0eb8e0cd210981d7e186714d800374b560 (patch)
tree1c71ce69dc9f93e862a419011a5a7b19af9bd8d7 /apex
parenta55b12bec27b6e69ee4973d1645d8f61c2c89530 (diff)
downloadbuild_soong-23c52b0eb8e0cd210981d7e186714d800374b560.tar.gz
build_soong-23c52b0eb8e0cd210981d7e186714d800374b560.tar.bz2
build_soong-23c52b0eb8e0cd210981d7e186714d800374b560.zip
:module syntax is supported for APEX even when TARGET_FLATTEN_APEX
Build rules for both flattened and non-flattend APEXes are created regardless of TARGET_FLATTEN_APEX. The selection is made in AndroidMk. This allows other module to reference an APEX via :module syntax irrespective of TARGET_FLATTEN_APEX. Bug: 123780484 Test: TARGET_FLATTEN_APEX=true m out/soong/.intermediates/art/build/apex/art-check-debug-apex-gen/gen/art-check-debug-apex-gen.dummy with aosp/891696 applied Change-Id: Ia49415ec3d18cfc5081461be76900c73ea803dca
Diffstat (limited to 'apex')
-rw-r--r--apex/apex.go41
-rw-r--r--apex/key.go5
2 files changed, 21 insertions, 25 deletions
diff --git a/apex/apex.go b/apex/apex.go
index eb791d93..9172bb3b 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -484,17 +484,15 @@ func (a *apexBundle) DepsMutator(ctx android.BottomUpMutatorContext) {
{Mutator: "arch", Variation: "android_common"},
}, javaLibTag, a.properties.Java_libs...)
- if !ctx.Config().FlattenApex() || ctx.Config().UnbundledBuild() {
- if String(a.properties.Key) == "" {
- ctx.ModuleErrorf("key is missing")
- return
- }
- ctx.AddDependency(ctx.Module(), keyTag, String(a.properties.Key))
+ if String(a.properties.Key) == "" {
+ ctx.ModuleErrorf("key is missing")
+ return
+ }
+ ctx.AddDependency(ctx.Module(), keyTag, String(a.properties.Key))
- cert := android.SrcIsModule(String(a.properties.Certificate))
- if cert != "" {
- ctx.AddDependency(ctx.Module(), certificateTag, cert)
- }
+ cert := android.SrcIsModule(String(a.properties.Certificate))
+ if cert != "" {
+ ctx.AddDependency(ctx.Module(), certificateTag, cert)
}
}
@@ -690,7 +688,7 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
})
a.flattened = ctx.Config().FlattenApex() && !ctx.Config().UnbundledBuild()
- if !a.flattened && keyFile == nil {
+ if keyFile == nil {
ctx.PropertyErrorf("key", "private_key for %q could not be found", String(a.properties.Key))
return
}
@@ -727,11 +725,12 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
a.buildUnflattenedApex(ctx, keyFile, pubKeyFile, certificate, zipApex)
}
if a.apexTypes.image() {
- if ctx.Config().FlattenApex() {
- a.buildFlattenedApex(ctx)
- } else {
- a.buildUnflattenedApex(ctx, keyFile, pubKeyFile, certificate, imageApex)
- }
+ // Build rule for unflattened APEX is created even when ctx.Config().FlattenApex()
+ // is true. This is to support referencing APEX via ":<module_name" syntax
+ // in other modules. It is in AndroidMk where the selection of flattened
+ // or unflattened APEX is made.
+ a.buildUnflattenedApex(ctx, keyFile, pubKeyFile, certificate, imageApex)
+ a.buildFlattenedApex(ctx)
}
}
@@ -910,7 +909,7 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext, keyFile and
})
// Install to $OUT/soong/{target,host}/.../apex
- if a.installable() {
+ if a.installable() && !ctx.Config().FlattenApex() {
ctx.InstallFile(android.PathForModuleInstall(ctx, "apex"), ctx.ModuleName()+suffix, a.outputFiles[apexType])
}
}
@@ -930,9 +929,11 @@ func (a *apexBundle) buildFlattenedApex(ctx android.ModuleContext) {
})
a.filesInfo = append(a.filesInfo, apexFile{copiedManifest, ctx.ModuleName() + ".apex_manifest.json", ".", etc, nil, nil})
- for _, fi := range a.filesInfo {
- dir := filepath.Join("apex", ctx.ModuleName(), fi.installDir)
- ctx.InstallFile(android.PathForModuleInstall(ctx, dir), fi.builtFile.Base(), fi.builtFile)
+ if ctx.Config().FlattenApex() {
+ for _, fi := range a.filesInfo {
+ dir := filepath.Join("apex", ctx.ModuleName(), fi.installDir)
+ ctx.InstallFile(android.PathForModuleInstall(ctx, dir), fi.builtFile.Base(), fi.builtFile)
+ }
}
}
}
diff --git a/apex/key.go b/apex/key.go
index 6d1032d3..5282416c 100644
--- a/apex/key.go
+++ b/apex/key.go
@@ -63,11 +63,6 @@ func (m *apexKey) installable() bool {
}
func (m *apexKey) GenerateAndroidBuildActions(ctx android.ModuleContext) {
- if ctx.Config().FlattenApex() && !ctx.Config().UnbundledBuild() {
- // Flattened APEXes are not signed
- return
- }
-
m.public_key_file = ctx.Config().ApexKeyDir(ctx).Join(ctx, String(m.properties.Public_key))
m.private_key_file = ctx.Config().ApexKeyDir(ctx).Join(ctx, String(m.properties.Private_key))