Export Soong modules and build a database from metadata from Make and Soong.

Bug: 324465531
Test: CIs
Test: m compliance-metadata.db
Change-Id: Ia1c9ab0ae874dd47969555ddbfb93405b57a651f
This commit is contained in:
Wei Li
2024-06-21 13:08:51 -07:00
parent b651aaaf9e
commit a1aa297518
6 changed files with 414 additions and 0 deletions

View File

@@ -16,6 +16,7 @@ package rust
import (
"fmt"
"strconv"
"strings"
"android/soong/bloaty"
@@ -967,7 +968,10 @@ func (mod *Module) GenerateAndroidBuildActions(actx android.ModuleContext) {
if mod.testModule {
android.SetProvider(ctx, testing.TestModuleProviderKey, testing.TestModuleProviderData{})
}
mod.setOutputFiles(ctx)
buildComplianceMetadataInfo(ctx, mod, deps)
}
func (mod *Module) setOutputFiles(ctx ModuleContext) {
@@ -983,6 +987,44 @@ func (mod *Module) setOutputFiles(ctx ModuleContext) {
}
}
func buildComplianceMetadataInfo(ctx *moduleContext, mod *Module, deps PathDeps) {
// Dump metadata that can not be done in android/compliance-metadata.go
metadataInfo := ctx.ComplianceMetadataInfo()
metadataInfo.SetStringValue(android.ComplianceMetadataProp.IS_STATIC_LIB, strconv.FormatBool(mod.Static()))
metadataInfo.SetStringValue(android.ComplianceMetadataProp.BUILT_FILES, mod.outputFile.String())
// Static libs
staticDeps := ctx.GetDirectDepsWithTag(rlibDepTag)
staticDepNames := make([]string, 0, len(staticDeps))
for _, dep := range staticDeps {
staticDepNames = append(staticDepNames, dep.Name())
}
ccStaticDeps := ctx.GetDirectDepsWithTag(cc.StaticDepTag(false))
for _, dep := range ccStaticDeps {
staticDepNames = append(staticDepNames, dep.Name())
}
staticDepPaths := make([]string, 0, len(deps.StaticLibs)+len(deps.RLibs))
// C static libraries
for _, dep := range deps.StaticLibs {
staticDepPaths = append(staticDepPaths, dep.String())
}
// Rust static libraries
for _, dep := range deps.RLibs {
staticDepPaths = append(staticDepPaths, dep.Path.String())
}
metadataInfo.SetListValue(android.ComplianceMetadataProp.STATIC_DEPS, android.FirstUniqueStrings(staticDepNames))
metadataInfo.SetListValue(android.ComplianceMetadataProp.STATIC_DEP_FILES, android.FirstUniqueStrings(staticDepPaths))
// C Whole static libs
ccWholeStaticDeps := ctx.GetDirectDepsWithTag(cc.StaticDepTag(true))
wholeStaticDepNames := make([]string, 0, len(ccWholeStaticDeps))
for _, dep := range ccStaticDeps {
wholeStaticDepNames = append(wholeStaticDepNames, dep.Name())
}
metadataInfo.SetListValue(android.ComplianceMetadataProp.STATIC_DEPS, android.FirstUniqueStrings(staticDepNames))
}
func (mod *Module) deps(ctx DepsContext) Deps {
deps := Deps{}