From 9551384f65eb77e43afbe3408d5437ce91804edd Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Mon, 17 Apr 2023 11:24:54 +0900 Subject: [PATCH] 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 --- apex/apex_test.go | 52 +++++++++++++++++++++++++++++++++++++++++++++++ apex/builder.go | 4 ++++ 2 files changed, 56 insertions(+) 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)