diff options
author | 2025-03-05 21:29:32 -0800 | |
---|---|---|
committer | 2025-03-05 21:29:32 -0800 | |
commit | 88c42cdcc4da8d6edcbeb7f473c35c65ca614dc3 (patch) | |
tree | 1858268343fbe1d3a829dbc459c0eb38afbd3c86 | |
parent | fec2fa1eebe5fe862574f6ac59badbf7d3ef51db (diff) | |
parent | 1b713f1a016af20c14b3f98ccf04bd18273e060e (diff) |
Merge "More partial compile optimizations" into main am: e52331db53 am: 1b713f1a01
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3527573
Change-Id: I19d1f411df99808a48ad26d41a9f3ec720f38638
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | android/config.go | 40 | ||||
-rw-r--r-- | android/config_test.go | 32 | ||||
-rw-r--r-- | java/droiddoc.go | 3 | ||||
-rw-r--r-- | java/droidstubs.go | 2 | ||||
-rw-r--r-- | java/java.go | 1 |
5 files changed, 63 insertions, 15 deletions
diff --git a/android/config.go b/android/config.go index ded452964..9f14e3767 100644 --- a/android/config.go +++ b/android/config.go @@ -385,24 +385,28 @@ type config struct { } type partialCompileFlags struct { - // Is partial compilation enabled at all? - Enabled bool - // Whether to use d8 instead of r8 Use_d8 bool + // Whether to disable stub validation. This is slightly more surgical + // than DISABLE_STUB_VALIDATION, in that it only applies to partial + // compile builds. + Disable_stub_validation bool + + // Whether to disable api lint. + Disable_api_lint bool + // Add others as needed. } // These are the flags when `SOONG_PARTIAL_COMPILE` is empty or not set. -var defaultPartialCompileFlags = partialCompileFlags{ - Enabled: false, -} +var defaultPartialCompileFlags = partialCompileFlags{} // These are the flags when `SOONG_PARTIAL_COMPILE=true`. var enabledPartialCompileFlags = partialCompileFlags{ - Enabled: true, - Use_d8: true, + Use_d8: true, + Disable_stub_validation: false, + Disable_api_lint: false, } type deviceConfig struct { @@ -477,13 +481,29 @@ func (c *config) parsePartialCompileFlags(isEngBuild bool) (partialCompileFlags, state = "+" } switch tok { + case "all": + // Turn on **all** of the flags. + ret = partialCompileFlags{ + Use_d8: true, + Disable_stub_validation: true, + Disable_api_lint: true, + } case "true": ret = enabledPartialCompileFlags case "false": // Set everything to false. ret = partialCompileFlags{} - case "enabled": - ret.Enabled = makeVal(state, defaultPartialCompileFlags.Enabled) + + case "api_lint", "enable_api_lint": + ret.Disable_api_lint = !makeVal(state, !defaultPartialCompileFlags.Disable_api_lint) + case "disable_api_lint": + ret.Disable_api_lint = makeVal(state, defaultPartialCompileFlags.Disable_api_lint) + + case "stub_validation", "enable_stub_validation": + ret.Disable_stub_validation = !makeVal(state, !defaultPartialCompileFlags.Disable_stub_validation) + case "disable_stub_validation": + ret.Disable_stub_validation = makeVal(state, defaultPartialCompileFlags.Disable_stub_validation) + case "use_d8": ret.Use_d8 = makeVal(state, defaultPartialCompileFlags.Use_d8) default: diff --git a/android/config_test.go b/android/config_test.go index 3d8686041..d1b26c12a 100644 --- a/android/config_test.go +++ b/android/config_test.go @@ -213,13 +213,18 @@ func TestConfiguredJarList(t *testing.T) { }) } -func (p partialCompileFlags) updateEnabled(value bool) partialCompileFlags { - p.Enabled = value +func (p partialCompileFlags) updateUseD8(value bool) partialCompileFlags { + p.Use_d8 = value return p } -func (p partialCompileFlags) updateUseD8(value bool) partialCompileFlags { - p.Use_d8 = value +func (p partialCompileFlags) updateDisableApiLint(value bool) partialCompileFlags { + p.Disable_api_lint = value + return p +} + +func (p partialCompileFlags) updateDisableStubValidation(value bool) partialCompileFlags { + p.Disable_stub_validation = value return p } @@ -241,10 +246,29 @@ func TestPartialCompile(t *testing.T) { {"false", true, partialCompileFlags{}}, {"true", true, enabledPartialCompileFlags}, {"true", false, partialCompileFlags{}}, + {"all", true, partialCompileFlags{}.updateUseD8(true).updateDisableApiLint(true).updateDisableStubValidation(true)}, + + // This verifies both use_d8 and the processing order. {"true,use_d8", true, enabledPartialCompileFlags.updateUseD8(true)}, {"true,-use_d8", true, enabledPartialCompileFlags.updateUseD8(false)}, {"use_d8,false", true, partialCompileFlags{}}, {"false,+use_d8", true, partialCompileFlags{}.updateUseD8(true)}, + + // disable_api_lint can be specified with any of 3 options. + {"false,-api_lint", true, partialCompileFlags{}.updateDisableApiLint(true)}, + {"false,-enable_api_lint", true, partialCompileFlags{}.updateDisableApiLint(true)}, + {"false,+disable_api_lint", true, partialCompileFlags{}.updateDisableApiLint(true)}, + {"false,+api_lint", true, partialCompileFlags{}.updateDisableApiLint(false)}, + {"false,+enable_api_lint", true, partialCompileFlags{}.updateDisableApiLint(false)}, + {"false,-disable_api_lint", true, partialCompileFlags{}.updateDisableApiLint(false)}, + + // disable_stub_validation can be specified with any of 3 options. + {"false,-stub_validation", true, partialCompileFlags{}.updateDisableStubValidation(true)}, + {"false,-enable_stub_validation", true, partialCompileFlags{}.updateDisableStubValidation(true)}, + {"false,+disable_stub_validation", true, partialCompileFlags{}.updateDisableStubValidation(true)}, + {"false,+stub_validation", true, partialCompileFlags{}.updateDisableStubValidation(false)}, + {"false,+enable_stub_validation", true, partialCompileFlags{}.updateDisableStubValidation(false)}, + {"false,-disable_stub_validation", true, partialCompileFlags{}.updateDisableStubValidation(false)}, } for _, test := range tests { diff --git a/java/droiddoc.go b/java/droiddoc.go index 225f201a9..3faf294de 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -195,6 +195,9 @@ func apiCheckEnabled(ctx android.ModuleContext, apiToCheck ApiToCheck, apiVersio "them instead.") } return false + } else if ctx.Config().PartialCompileFlags().Disable_stub_validation && + !ctx.Config().BuildFromTextStub() { + return false } else if String(apiToCheck.Api_file) != "" && String(apiToCheck.Removed_api_file) != "" { return true } else if String(apiToCheck.Api_file) != "" { diff --git a/java/droidstubs.go b/java/droidstubs.go index aa6a35ce9..372b3ceb3 100644 --- a/java/droidstubs.go +++ b/java/droidstubs.go @@ -1253,7 +1253,7 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { // Add options for the other optional tasks: API-lint and check-released. // We generate separate timestamp files for them. - doApiLint := BoolDefault(d.properties.Check_api.Api_lint.Enabled, false) + doApiLint := BoolDefault(d.properties.Check_api.Api_lint.Enabled, false) && !ctx.Config().PartialCompileFlags().Disable_api_lint doCheckReleased := apiCheckEnabled(ctx, d.properties.Check_api.Last_released, "last_released") writeSdkValues := Bool(d.properties.Write_sdk_values) diff --git a/java/java.go b/java/java.go index c1e4f8ca0..215fbbda8 100644 --- a/java/java.go +++ b/java/java.go @@ -2530,6 +2530,7 @@ func (al *ApiLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { apiContributions := al.properties.Api_contributions addValidations := !ctx.Config().IsEnvTrue("DISABLE_STUB_VALIDATION") && !ctx.Config().IsEnvTrue("WITHOUT_CHECK_API") && + !ctx.Config().PartialCompileFlags().Disable_stub_validation && proptools.BoolDefault(al.properties.Enable_validation, true) for _, apiContributionName := range apiContributions { ctx.AddDependency(ctx.Module(), javaApiContributionTag, apiContributionName) |