From f3bdbcbea3fb07d41ff7cf554e0f4db645890944 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 1 Jun 2021 11:43:55 -0700 Subject: [PATCH] Fix propagating EMPTY_NINJA_FILE from multiproduct_kati to minibp I6dca478f356f56a8aee1e457d71439272351390b replaced calling build/blueprint/bootstrap.bash with running minibp directly, but didn't propagate the EMPTY_NINJA_FILE environment variable to minibp. Since everything that uses EMPTY_NINJA_FILE is executed directly from soong_ui now, replace the EMPTY_NINJA_FILE environment variable with a config bool and pass it to minibp. Bug: 189148777 Test: build/soong/build_test.bash --dist --incremental --shard-count=300 --shard=1 && du out/multiproduct Change-Id: I4d64275ce02c5d68948012f71ac4dc3795af9e85 --- cmd/multiproduct_kati/main.go | 2 +- ui/build/config.go | 14 +++++++++++--- ui/build/kati.go | 2 +- ui/build/soong.go | 1 + 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/cmd/multiproduct_kati/main.go b/cmd/multiproduct_kati/main.go index e0f8caac2..20f146ae3 100644 --- a/cmd/multiproduct_kati/main.go +++ b/cmd/multiproduct_kati/main.go @@ -433,7 +433,7 @@ func buildProduct(mpctx *mpContext, product string) { config := build.NewConfig(ctx, args...) config.Environment().Set("OUT_DIR", outDir) if !*keepArtifacts { - config.Environment().Set("EMPTY_NINJA_FILE", "true") + config.SetEmptyNinjaFile(true) } build.FindSources(ctx, config, mpctx.Finder) config.Lunch(ctx, product, *buildVariant) diff --git a/ui/build/config.go b/ui/build/config.go index 1d1f71f67..3ebde0dbe 100644 --- a/ui/build/config.go +++ b/ui/build/config.go @@ -72,6 +72,9 @@ type configImpl struct { // During Bazel execution, Bazel cannot write outside OUT_DIR. // So if DIST_DIR is set to an external dir (outside of OUT_DIR), we need to rig it temporarily and then migrate files at the end of the build. riggedDistDirForBazel string + + // Set by multiproduct_kati + emptyNinjaFile bool } const srcDirFileCheck = "build/soong/root.bp" @@ -203,9 +206,6 @@ func NewConfig(ctx Context, args ...string) Config { "ANDROID_DEV_SCRIPTS", "ANDROID_EMULATOR_PREBUILTS", "ANDROID_PRE_BUILD_PATHS", - - // Only set in multiproduct_kati after config generation - "EMPTY_NINJA_FILE", ) if ret.UseGoma() || ret.ForceUseGoma() { @@ -1189,3 +1189,11 @@ func (c *configImpl) LogsDir() string { func (c *configImpl) BazelMetricsDir() string { return filepath.Join(c.LogsDir(), "bazel_metrics") } + +func (c *configImpl) SetEmptyNinjaFile(v bool) { + c.emptyNinjaFile = v +} + +func (c *configImpl) EmptyNinjaFile() bool { + return c.emptyNinjaFile +} diff --git a/ui/build/kati.go b/ui/build/kati.go index 06ec64607..dad68fac2 100644 --- a/ui/build/kati.go +++ b/ui/build/kati.go @@ -136,7 +136,7 @@ func runKati(ctx Context, config Config, extraSuffix string, args []string, envF // information out with --empty_ninja_file. // // From https://github.com/google/kati/commit/87b8da7af2c8bea28b1d8ab17679453d859f96e5 - if config.Environment().IsEnvTrue("EMPTY_NINJA_FILE") { + if config.EmptyNinjaFile() { args = append(args, "--empty_ninja_file") } diff --git a/ui/build/soong.go b/ui/build/soong.go index cd645eb41..712841465 100644 --- a/ui/build/soong.go +++ b/ui/build/soong.go @@ -119,6 +119,7 @@ func bootstrapBlueprint(ctx Context, config Config, integratedBp2Build bool) { args.OutFile = shared.JoinPath(config.SoongOutDir(), ".bootstrap/build.ninja") args.GlobFile = globFile args.GeneratingPrimaryBuilder = true + args.EmptyNinjaFile = config.EmptyNinjaFile() args.DelveListen = os.Getenv("SOONG_DELVE") if args.DelveListen != "" {