diff options
author | Spandan Das <spandandas@google.com> | 2024-03-11 21:37:25 +0000 |
---|---|---|
committer | Spandan Das <spandandas@google.com> | 2024-03-14 18:12:30 +0000 |
commit | 3490dfd23f708561c2682eb844ca6123ef12cff8 (patch) | |
tree | 1ff011dc0fb3f58e674af86a8c683482f7e50446 /apex | |
parent | ee37914529e1aa615c9bbd443db4c8b61c401238 (diff) | |
download | soong-3490dfd23f708561c2682eb844ca6123ef12cff8.tar.gz |
Generate info about the selected app variant in platform builds
This is a followup to aosp/2999198 and adds information about apps.
Each app will have an entry in this file with the following properties
- Name, mandatory
- Is_prebuilt, mandatory
- Prebuilt_info_file_path, optional
Implementation details
- Move prebuiltInfoProvider out of build/soong/apex to
build/soong/android. This allows build/soong/java to use it.
- Introduce a new `prebuilt_info` prop to `android_app_set` and
`android_app_import`
- All app module types will set a prebuiltInfoProvider in
GenerateAndroidBuildActions, including the source app module types
Test: m nothing --no-skip-soong-tests
Test: m out/soong/prebuilt_info.json
Test: ls -l out/soong/prebuilt_info.json --human-readable
-rw------- 1 spandandas primarygroup 317K Mar 11 23:46 out/soong/prebuilt_info.json
Test: #modified trunk_staging.locally to select prebuilts of some
mainline apps. Spot-checked that `is_prebuilt` and
`prebuilt_info_file_path` get populated appropriately
Bug: 327480225
Change-Id: I5078e0ec26c9568194550909962b90111a5223f7
Diffstat (limited to 'apex')
-rw-r--r-- | apex/apex.go | 19 | ||||
-rw-r--r-- | apex/apex_singleton.go | 4 | ||||
-rw-r--r-- | apex/prebuilt.go | 6 |
3 files changed, 7 insertions, 22 deletions
diff --git a/apex/apex.go b/apex/apex.go index c6884387a..c662f2ca7 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -2428,29 +2428,14 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { a.providePrebuiltInfo(ctx) } -var prebuiltInfoProvider = blueprint.NewProvider[prebuiltInfo]() - -// contents of prebuilt_info.json -type prebuiltInfo struct { - // Name of the apex, without the prebuilt_ prefix - Name string - - Is_prebuilt bool - - // This is relative to root of the workspace. - // In case of mainline modules, this file contains the build_id that was used - // to generate the mainline module prebuilt. - Prebuilt_info_file_path string `json:",omitempty"` -} - // Set prebuiltInfoProvider. This will be used by `apex_prebuiltinfo_singleton` to print out a metadata file // with information about whether source or prebuilt of an apex was used during the build. func (a *apexBundle) providePrebuiltInfo(ctx android.ModuleContext) { - info := prebuiltInfo{ + info := android.PrebuiltInfo{ Name: a.Name(), Is_prebuilt: false, } - android.SetProvider(ctx, prebuiltInfoProvider, info) + android.SetProvider(ctx, android.PrebuiltInfoProvider, info) } // Set a provider containing information about the jars and .prof provided by the apex diff --git a/apex/apex_singleton.go b/apex/apex_singleton.go index 8aaddbe25..e6ebff2c1 100644 --- a/apex/apex_singleton.go +++ b/apex/apex_singleton.go @@ -149,10 +149,10 @@ type apexPrebuiltInfo struct { } func (a *apexPrebuiltInfo) GenerateBuildActions(ctx android.SingletonContext) { - prebuiltInfos := []prebuiltInfo{} + prebuiltInfos := []android.PrebuiltInfo{} ctx.VisitAllModules(func(m android.Module) { - prebuiltInfo, exists := android.SingletonModuleProvider(ctx, m, prebuiltInfoProvider) + prebuiltInfo, exists := android.SingletonModuleProvider(ctx, m, android.PrebuiltInfoProvider) // Use prebuiltInfoProvider to filter out non apex soong modules. // Use HideFromMake to filter out the unselected variants of a specific apex. if exists && !m.IsHideFromMake() { diff --git a/apex/prebuilt.go b/apex/prebuilt.go index 34dfc467b..ea847e15c 100644 --- a/apex/prebuilt.go +++ b/apex/prebuilt.go @@ -827,15 +827,15 @@ func (p *prebuiltCommon) provideApexExportsInfo(ctx android.ModuleContext) { // Set prebuiltInfoProvider. This will be used by `apex_prebuiltinfo_singleton` to print out a metadata file // with information about whether source or prebuilt of an apex was used during the build. func (p *prebuiltCommon) providePrebuiltInfo(ctx android.ModuleContext) { - info := prebuiltInfo{ - Name: p.BaseModuleName(), // BaseModuleName ensures that this will not contain the prebuilt_ prefix. + info := android.PrebuiltInfo{ + Name: p.BaseModuleName(), Is_prebuilt: true, } // If Prebuilt_info information is available in the soong module definition, add it to prebuilt_info.json. if p.prebuiltCommonProperties.Prebuilt_info != nil { info.Prebuilt_info_file_path = android.PathForModuleSrc(ctx, *p.prebuiltCommonProperties.Prebuilt_info).String() } - android.SetProvider(ctx, prebuiltInfoProvider, info) + android.SetProvider(ctx, android.PrebuiltInfoProvider, info) } func (p *Prebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) { |