From b506c9dc11a05ce1ae2c72662c4d3ba5a5cb5c3a Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Wed, 24 Mar 2021 14:34:40 +0000 Subject: [PATCH] Cleanup usages of Dex2oatDepTag Creates a new deptag type for it so that it can implement the marker interfaces that will exclude it from being added to the APEX and from visibility enforcement. The latter is probably not an issue ATM because the dependencies are added after visibility checks are enforced but this code is undergoing lots of refactoring so that may change. Bug: 177892522 Test: m nothing Change-Id: Ibd167d557adec761a2e3eed78f4d334c40a04fb9 --- apex/apex.go | 4 ---- dexpreopt/config.go | 18 ++++++++++++++++-- java/boot_image.go | 4 ---- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/apex/apex.go b/apex/apex.go index a67fe1ffb..dca55958b 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -29,7 +29,6 @@ import ( "android/soong/android" "android/soong/bpf" "android/soong/cc" - "android/soong/dexpreopt" prebuilt_etc "android/soong/etc" "android/soong/filesystem" "android/soong/java" @@ -1573,9 +1572,6 @@ func (a *apexBundle) WalkPayloadDeps(ctx android.ModuleContext, do android.Paylo if dt, ok := depTag.(dependencyTag); ok && !dt.payload { return false } - if depTag == dexpreopt.Dex2oatDepTag { - return false - } ai := ctx.OtherModuleProvider(child, android.ApexInfoProvider).(android.ApexInfo) externalDep := !android.InList(ctx.ModuleName(), ai.InApexes) diff --git a/dexpreopt/config.go b/dexpreopt/config.go index 888466a2f..8873b4ef7 100644 --- a/dexpreopt/config.go +++ b/dexpreopt/config.go @@ -352,9 +352,23 @@ func dex2oatModuleName(config android.Config) string { } } -var Dex2oatDepTag = struct { +type dex2oatDependencyTag struct { blueprint.BaseDependencyTag -}{} +} + +func (d dex2oatDependencyTag) ExcludeFromVisibilityEnforcement() { +} + +func (d dex2oatDependencyTag) ExcludeFromApexContents() { +} + +// Dex2oatDepTag represents the dependency onto the dex2oatd module. It is added to any module that +// needs dexpreopting and so it makes no sense for it to be checked for visibility or included in +// the apex. +var Dex2oatDepTag = dex2oatDependencyTag{} + +var _ android.ExcludeFromVisibilityEnforcementTag = Dex2oatDepTag +var _ android.ExcludeFromApexContentsTag = Dex2oatDepTag // RegisterToolDeps adds the necessary dependencies to binary modules for tools // that are required later when Get(Cached)GlobalSoongConfig is called. It diff --git a/java/boot_image.go b/java/boot_image.go index 25a4f17f4..a14940d6c 100644 --- a/java/boot_image.go +++ b/java/boot_image.go @@ -96,10 +96,6 @@ func (i BootImageInfo) AndroidBootImageFilesByArchType() map[android.ArchType]an func (b *BootImageModule) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool { tag := ctx.OtherModuleDependencyTag(dep) - if tag == dexpreopt.Dex2oatDepTag { - // The dex2oat tool is only needed for building and is not required in the apex. - return false - } if android.IsMetaDependencyTag(tag) { // Cross-cutting metadata dependencies are metadata. return false