From 32c634bca92c2ba9d7b6c00043cebdb5086edc11 Mon Sep 17 00:00:00 2001 From: Liz Kammer Date: Fri, 25 Aug 2023 17:42:42 -0400 Subject: [PATCH] Fix false pos in bp2build-prog due to prebulits The prebuilt_ prefix was removed before writing converted modules, which causes false positives when a prebuilt and from source module exist with the same name but only one has been converted Test: b run //build/bazel/scripts/bp2build_progress:bp2build_progress \ -- report -m core-lambda-stubs-for-system-modules Change-Id: Id00099780fb6af9fffcf745b509116a66bac8756 --- bp2build/conversion.go | 6 +++++- bp2build/conversion_test.go | 2 +- bp2build/metrics.go | 13 +++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/bp2build/conversion.go b/bp2build/conversion.go index 77914194f..35a1400a0 100644 --- a/bp2build/conversion.go +++ b/bp2build/conversion.go @@ -48,7 +48,11 @@ func soongInjectionFiles(cfg android.Config, metrics CodegenMetrics) ([]BazelFil } files = append(files, newFile("apex_toolchain", "constants.bzl", apexToolchainVars)) - files = append(files, newFile("metrics", "converted_modules.txt", strings.Join(metrics.Serialize().ConvertedModules, "\n"))) + if buf, err := json.MarshalIndent(metrics.convertedModuleWithType, "", " "); err != nil { + return []BazelFile{}, err + } else { + files = append(files, newFile("metrics", "converted_modules.json", string(buf))) + } convertedModulePathMap, err := json.MarshalIndent(metrics.convertedModulePathMap, "", "\t") if err != nil { diff --git a/bp2build/conversion_test.go b/bp2build/conversion_test.go index cbffaa083..89dd38ef0 100644 --- a/bp2build/conversion_test.go +++ b/bp2build/conversion_test.go @@ -134,7 +134,7 @@ func TestCreateBazelFiles_Bp2Build_CreatesDefaultFiles(t *testing.T) { }, { dir: "metrics", - basename: "converted_modules.txt", + basename: "converted_modules.json", }, { dir: "metrics", diff --git a/bp2build/metrics.go b/bp2build/metrics.go index 00f21c8a7..20002c67f 100644 --- a/bp2build/metrics.go +++ b/bp2build/metrics.go @@ -9,11 +9,17 @@ import ( "android/soong/android" "android/soong/shared" "android/soong/ui/metrics/bp2build_metrics_proto" + "google.golang.org/protobuf/proto" "github.com/google/blueprint" ) +type moduleInfo struct { + Name string `json:"name"` + Type string `json:"type"` +} + // CodegenMetrics represents information about the Blueprint-to-BUILD // conversion process. // Use CreateCodegenMetrics() to get a properly initialized instance @@ -30,6 +36,9 @@ type CodegenMetrics struct { // Map of converted modules and paths to call // NOTE: NOT in the .proto convertedModulePathMap map[string]string + + // Name and type of converted modules + convertedModuleWithType []moduleInfo } func CreateCodegenMetrics() CodegenMetrics { @@ -191,6 +200,10 @@ func (metrics *CodegenMetrics) AddConvertedModule(m blueprint.Module, moduleType // Undo prebuilt_ module name prefix modifications moduleName := android.RemoveOptionalPrebuiltPrefix(m.Name()) metrics.serialized.ConvertedModules = append(metrics.serialized.ConvertedModules, moduleName) + metrics.convertedModuleWithType = append(metrics.convertedModuleWithType, moduleInfo{ + moduleName, + moduleType, + }) metrics.convertedModulePathMap[moduleName] = "//" + dir metrics.serialized.ConvertedModuleTypeCount[moduleType] += 1 metrics.serialized.TotalModuleTypeCount[moduleType] += 1