diff --git a/ui/build/build.go b/ui/build/build.go index 8f050d9be..1187aa2cf 100644 --- a/ui/build/build.go +++ b/ui/build/build.go @@ -274,6 +274,11 @@ func Build(ctx Context, config Config) { // Return early, if we're using Soong as solely the generator of BUILD files. return } + + if config.bazelBuildMode() == generateJsonModuleGraph { + // Return early, if we're using Soong as solely the generator of the JSON module graph + return + } } if what&RunKati != 0 { diff --git a/ui/build/config.go b/ui/build/config.go index b9aaaf84e..480672171 100644 --- a/ui/build/config.go +++ b/ui/build/config.go @@ -108,6 +108,9 @@ const ( // Only generate build files (in a subdirectory of the out directory) and exit. generateBuildFiles + // Only generate the Soong json module graph for use with jq, and exit. + generateJsonModuleGraph + // Generate synthetic build files and incorporate these files into a build which // partially uses Bazel. Build metadata may come from Android.bp or BUILD files. mixedBuild @@ -936,6 +939,8 @@ func (c *configImpl) bazelBuildMode() bazelBuildMode { return mixedBuild } else if c.Environment().IsEnvTrue("GENERATE_BAZEL_FILES") { return generateBuildFiles + } else if v, ok := c.Environment().Get("SOONG_DUMP_JSON_MODULE_GRAPH"); ok && v != "" { + return generateJsonModuleGraph } else { return noBazel } diff --git a/ui/build/soong.go b/ui/build/soong.go index 19a47ae7c..a40457fc6 100644 --- a/ui/build/soong.go +++ b/ui/build/soong.go @@ -333,8 +333,9 @@ func runSoong(ctx Context, config Config) { } func shouldCollectBuildSoongMetrics(config Config) bool { - // Do not collect metrics protobuf if the soong_build binary ran as the bp2build converter. - return config.bazelBuildMode() != generateBuildFiles + // Do not collect metrics protobuf if the soong_build binary ran as the + // bp2build converter or the JSON graph dump. + return config.bazelBuildMode() != generateBuildFiles && config.bazelBuildMode() != generateJsonModuleGraph } func loadSoongBuildMetrics(ctx Context, config Config) *soong_metrics_proto.SoongBuildMetrics {