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
This commit is contained in:
Anton Hansson 2020-11-27 12:35:20 +00:00
parent d74b9c5728
commit 5e5c48b2b5
3 changed files with 26 additions and 14 deletions

View file

@ -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)
}

View file

@ -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 {

View file

@ -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")
}