From d22a84a88bf500c29f4d52ff604b64309ba7a0d9 Mon Sep 17 00:00:00 2001 From: Yifan Hong Date: Tue, 28 Jul 2020 17:37:46 -0700 Subject: [PATCH] Support com.android.gki.* in apex_available. com.android.gki.* matches any APEX with the prefix com.android.gki., like com.android.gki.bar. Test: use it Bug: 162267963 Change-Id: Ie46fcb08b031611d26b2b6cde157253f51ba9bfc --- android/apex.go | 7 +++++-- apex/apex_test.go | 9 ++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/android/apex.go b/android/apex.go index a7570dc54..cd84f8aa5 100644 --- a/android/apex.go +++ b/android/apex.go @@ -137,6 +137,7 @@ type ApexProperties struct { // // "//apex_available:anyapex" is a pseudo APEX name that matches to any APEX. // "//apex_available:platform" refers to non-APEX partitions like "system.img". + // "com.android.gki.*" matches any APEX module name with the prefix "com.android.gki.". // Default is ["//apex_available:platform"]. Apex_available []string @@ -213,6 +214,7 @@ func (m *ApexModuleBase) IsInstallableToApex() bool { const ( AvailableToPlatform = "//apex_available:platform" AvailableToAnyApex = "//apex_available:anyapex" + AvailableToGkiApex = "com.android.gki.*" ) func CheckAvailableForApex(what string, apex_available []string) bool { @@ -222,7 +224,8 @@ func CheckAvailableForApex(what string, apex_available []string) bool { return what == AvailableToPlatform } return InList(what, apex_available) || - (what != AvailableToPlatform && InList(AvailableToAnyApex, apex_available)) + (what != AvailableToPlatform && InList(AvailableToAnyApex, apex_available)) || + (strings.HasPrefix(what, "com.android.gki.") && InList(AvailableToGkiApex, apex_available)) } func (m *ApexModuleBase) AvailableFor(what string) bool { @@ -256,7 +259,7 @@ func (m *ApexModuleBase) ChooseSdkVersion(versionList []string, maxSdkVersion in func (m *ApexModuleBase) checkApexAvailableProperty(mctx BaseModuleContext) { for _, n := range m.ApexProperties.Apex_available { - if n == AvailableToPlatform || n == AvailableToAnyApex { + if n == AvailableToPlatform || n == AvailableToAnyApex || n == AvailableToGkiApex { continue } if !mctx.OtherModuleExists(n) && !mctx.Config().AllowMissingDependencies() { diff --git a/apex/apex_test.go b/apex/apex_test.go index 7db61d5cf..690c2f5fd 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -412,7 +412,14 @@ func TestBasicApex(t *testing.T) { system_shared_libs: [], static_executable: true, stl: "none", - apex_available: [ "myapex" ], + apex_available: [ "myapex", "com.android.gki.*" ], + } + + apex { + name: "com.android.gki.fake", + binaries: ["foo"], + key: "myapex.key", + file_contexts: ":myapex-file_contexts", } cc_library_shared {