Generate info about the selected apex variant in platform builds
out/soong/prebuilt_info.json will contain information about whether source or prebuilt of an apex was used. If prebuilt is used, it will print the path to its prebuilt_info file. This file will be used to pick a matching set of MTS test prebuilts. Each apex will have an entry in this file with the following properties - Name, mandatory - Is_prebuilt, mandatory - Prebuilt_info_file_path, optional Implementation details - Introduce a new `prebuilt_info` prop to `apex_set` and `prebuilt_apex` - All apex module types will set a prebuiltInfoProvider in GenerateAndroidBuildActions, including the source apex module types - Create a `apex_prebuiltinfo_singleton` that visits all apex modules. It uses `IsHideFromMake` to filter out the unselected variants of a specific apex. This new singleton will create prebuilt_info.json - Dist prebuilt_info.json for droidcore 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 25K Mar 11 23:46 out/soong/prebuilt_info.json Test: #modified trunk_staging.locally to select prebuilts of some mainline modules. Spot-checked that `is_prebuilt` and `prebuilt_info_file_path` get populated appropriately Bug: 327480225 Change-Id: I65c73010142b034ad1d2b3d05ef493be034e8d74
This commit is contained in:
27
apex/apex.go
27
apex/apex.go
@@ -2424,6 +2424,33 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
|
||||
// Set a provider for dexpreopt of bootjars
|
||||
a.provideApexExportsInfo(ctx)
|
||||
|
||||
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{
|
||||
Name: a.Name(),
|
||||
Is_prebuilt: false,
|
||||
}
|
||||
android.SetProvider(ctx, prebuiltInfoProvider, info)
|
||||
}
|
||||
|
||||
// Set a provider containing information about the jars and .prof provided by the apex
|
||||
|
Reference in New Issue
Block a user