From 5e5c48b2b58662d776f05b9538cdb796c1515e07 Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Fri, 27 Nov 2020 12:35:20 +0000 Subject: [PATCH] Add support for skipping just kati The existing --skip-make flag disables both the config step and the kati step in the build. Add support for a --skip-kati flag that skips just the kati step, and refactor things so that the logic is shared between these two. Bug: 174315599 Test: TARGET_PRODUCT=aosp_arm64 soong_ui --make-mode --skip-kati; (verify soong.variables is regenerated) Change-Id: I75b1910fc1c12fcda130e37b7bc4c050131c7b33 --- ui/build/build.go | 20 ++++++++++++-------- ui/build/config.go | 18 +++++++++++++----- ui/build/soong.go | 2 +- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/ui/build/build.go b/ui/build/build.go index da088e406..e8f0fc49d 100644 --- a/ui/build/build.go +++ b/ui/build/build.go @@ -28,7 +28,7 @@ import ( func SetupOutDir(ctx Context, config Config) { ensureEmptyFileExists(ctx, filepath.Join(config.OutDir(), "Android.mk")) ensureEmptyFileExists(ctx, filepath.Join(config.OutDir(), "CleanSpec.mk")) - if !config.SkipMake() { + if !config.SkipKati() { // Run soong_build with Kati for a hybrid build, e.g. running the // AndroidMk singleton and postinstall commands. Communicate this to // soong_build by writing an empty .soong.kati_enabled marker file in the @@ -67,8 +67,8 @@ subninja {{.SoongNinjaFile}} `)) func createCombinedBuildNinjaFile(ctx Context, config Config) { - // If we're in SkipMake mode, skip creating this file if it already exists - if config.SkipMake() { + // If we're in SkipKati mode, skip creating this file if it already exists + if config.SkipKati() { if _, err := os.Stat(config.CombinedNinjaFile()); err == nil || !os.IsNotExist(err) { return } @@ -208,10 +208,14 @@ func Build(ctx Context, config Config, what int) { SetupPath(ctx, config) - if config.SkipMake() { - ctx.Verboseln("Skipping Make/Kati as requested") - // If Make/Kati is disabled, then explicitly build using Soong and Ninja. - what = what & (BuildSoong | BuildNinja) + if config.SkipConfig() { + ctx.Verboseln("Skipping Config as requested") + what = what &^ BuildProductConfig + } + + if config.SkipKati() { + ctx.Verboseln("Skipping Kati as requested") + what = what &^ BuildKati } if config.StartGoma() { @@ -276,7 +280,7 @@ func Build(ctx Context, config Config, what int) { } if what&BuildNinja != 0 { - if !config.SkipMake() { + if what&BuildKati != 0 { installCleanIfNecessary(ctx, config) } diff --git a/ui/build/config.go b/ui/build/config.go index 229bd5cea..c9911f3d1 100644 --- a/ui/build/config.go +++ b/ui/build/config.go @@ -46,7 +46,8 @@ type configImpl struct { verbose bool checkbuild bool dist bool - skipMake bool + skipConfig bool + skipKati bool skipSoongTests bool // From the product config @@ -536,7 +537,10 @@ func (c *configImpl) parseArgs(ctx Context, args []string) { } else if arg == "showcommands" { c.verbose = true } else if arg == "--skip-make" { - c.skipMake = true + c.skipConfig = true + c.skipKati = true + } else if arg == "--skip-kati" { + c.skipKati = true } else if arg == "--skip-soong-tests" { c.skipSoongTests = true } else if len(arg) > 0 && arg[0] == '-' { @@ -697,7 +701,7 @@ func (c *configImpl) DistDir() string { } func (c *configImpl) NinjaArgs() []string { - if c.skipMake { + if c.skipKati { return c.arguments } return c.ninjaArgs @@ -740,8 +744,12 @@ func (c *configImpl) IsVerbose() bool { return c.verbose } -func (c *configImpl) SkipMake() bool { - return c.skipMake +func (c *configImpl) SkipKati() bool { + return c.skipKati +} + +func (c *configImpl) SkipConfig() bool { + return c.skipConfig } func (c *configImpl) TargetProduct() string { diff --git a/ui/build/soong.go b/ui/build/soong.go index 57b65cd3b..08c2ee18e 100644 --- a/ui/build/soong.go +++ b/ui/build/soong.go @@ -173,7 +173,7 @@ func runSoong(ctx Context, config Config) { distGzipFile(ctx, config, config.SoongNinjaFile(), "soong") - if !config.SkipMake() { + if !config.SkipKati() { distGzipFile(ctx, config, config.SoongAndroidMk(), "soong") distGzipFile(ctx, config, config.SoongMakeVarsMk(), "soong") }