aboutsummaryrefslogtreecommitdiff
path: root/apex
diff options
context:
space:
mode:
authorJooyung Han <jooyung@google.com>2023-04-17 11:24:54 +0900
committerJooyung Han <jooyung@google.com>2023-04-17 15:25:17 +0900
commit9551384f65eb77e43afbe3408d5437ce91804edd (patch)
tree1d81b257b595bdaa169c1ffb249d2e3a3d33a91c /apex
parent7de9aa1a7bdc9f301891c2bd5a27e693d6b57c94 (diff)
downloadsoong-9551384f65eb77e43afbe3408d5437ce91804edd.tar.gz
apex: skip symbol files when replaced with prebuilt
Apexer rule with symbol files causes "no build rule" error when the apex is replaced with prebuilt. Bug: 251299786 Test: m checkbuild (presubmit) Change-Id: I7390f72c321beaeb49fcee4e02a219c07f184664
Diffstat (limited to 'apex')
-rw-r--r--apex/apex_test.go52
-rw-r--r--apex/builder.go4
2 files changed, 56 insertions, 0 deletions
diff --git a/apex/apex_test.go b/apex/apex_test.go
index 557265ce2..924f92344 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -5646,6 +5646,58 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) {
})
}
+func TestPrebuiltSkipsSymbols(t *testing.T) {
+ testCases := []struct {
+ name string
+ usePrebuilt bool
+ installSymbolFiles bool
+ }{
+ {
+ name: "Source module build rule doesn't install symbol files",
+ usePrebuilt: true,
+ installSymbolFiles: false,
+ },
+ {
+ name: "Source module is installed with symbols",
+ usePrebuilt: false,
+ installSymbolFiles: true,
+ },
+ }
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+ preferProperty := "prefer: false"
+ if tc.usePrebuilt {
+ preferProperty = "prefer: true"
+ }
+ ctx := testApex(t, `
+ // Source module
+ apex {
+ name: "myapex",
+ key: "myapex.key",
+ updatable: false,
+ }
+
+ apex_key {
+ name: "myapex.key",
+ public_key: "testkey.avbpubkey",
+ private_key: "testkey.pem",
+ }
+
+ apex_set {
+ name: "myapex",
+ set: "myapex.apks",
+ `+preferProperty+`
+ }
+ `)
+ // Symbol files are installed by installing entries under ${OUT}/apex/{apex name}
+ android.AssertStringListContainsEquals(t, "Implicits",
+ ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule").Implicits.Strings(),
+ "out/soong/target/product/test_device/apex/myapex/apex_manifest.pb",
+ tc.installSymbolFiles)
+ })
+ }
+}
+
func TestApexWithTests(t *testing.T) {
ctx := testApex(t, `
apex_test {
diff --git a/apex/builder.go b/apex/builder.go
index 94aef496e..2f8a4ec09 100644
--- a/apex/builder.go
+++ b/apex/builder.go
@@ -468,6 +468,10 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) {
imageDir := android.PathForModuleOut(ctx, "image"+suffix)
installSymbolFiles := (!ctx.Config().KatiEnabled() || a.ExportedToMake()) && a.installable()
+ // We can't install symbol files when prebuilt is used.
+ if a.IsReplacedByPrebuilt() {
+ installSymbolFiles = false
+ }
// set of dependency module:location mappings
installMapSet := make(map[string]bool)