From 648524232130d5c44e201df4328c4c9e81fa026b Mon Sep 17 00:00:00 2001 From: Spandan Das Date: Wed, 2 Aug 2023 21:58:41 +0000 Subject: [PATCH] Special-case go modules in convertedToBazel This function is called in getOtherModuleLabel, and is used to mark the otherModule as an unconvertedDep. This meant that if a soong module `A` depends on soong_zip, it would add soong_zip as unconverted dep of `A`. All go modules have been converted in bp2build, so this CL special cases go_package and go_binary in this function. Bug: 294098662 Test: printf metrics in build_conversion.go# GenerateBazelTargets, and made sure that the string "has unconverted.*soong_zip" does not appear Change-Id: I8d1d0876c581f9b2eb72dafcb3a28bd5577bbb4c --- android/bazel.go | 16 ++++++++++++++++ android/bazel_paths.go | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/android/bazel.go b/android/bazel.go index 0d2c7776f..df30ff261 100644 --- a/android/bazel.go +++ b/android/bazel.go @@ -22,6 +22,7 @@ import ( "android/soong/ui/metrics/bp2build_metrics_proto" "github.com/google/blueprint" + "github.com/google/blueprint/bootstrap" "github.com/google/blueprint/proptools" "android/soong/android/allowlists" @@ -426,8 +427,23 @@ func MixedBuildsEnabled(ctx BaseModuleContext) MixedBuildEnabledStatus { return ModuleIncompatibility } +func isGoModule(module blueprint.Module) bool { + if _, ok := module.(*bootstrap.GoPackage); ok { + return true + } + if _, ok := module.(*bootstrap.GoBinary); ok { + return true + } + return false +} + // ConvertedToBazel returns whether this module has been converted (with bp2build or manually) to Bazel. func convertedToBazel(ctx BazelConversionContext, module blueprint.Module) bool { + // Special-case bootstrap_go_package and bootstrap_go_binary + // These do not implement Bazelable, but have been converted + if isGoModule(module) { + return true + } b, ok := module.(Bazelable) if !ok { return false diff --git a/android/bazel_paths.go b/android/bazel_paths.go index 8956a18d5..53511fc5a 100644 --- a/android/bazel_paths.go +++ b/android/bazel_paths.go @@ -430,7 +430,7 @@ func getOtherModuleLabel(ctx BazelConversionPathContext, dep, tag string, func BazelModuleLabel(ctx BazelConversionPathContext, module blueprint.Module) string { // TODO(b/165114590): Convert tag (":name{.tag}") to corresponding Bazel implicit output targets. - if !convertedToBazel(ctx, module) { + if !convertedToBazel(ctx, module) || isGoModule(module) { return bp2buildModuleLabel(ctx, module) } b, _ := module.(Bazelable)