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
This commit is contained in:
19
apex/apex.go
19
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
|
||||
|
@@ -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() {
|
||||
|
@@ -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) {
|
||||
|
Reference in New Issue
Block a user