Add --bazel-exit-code parameter to soong_ui.

This is for use in tracking bazel exit codes from b invocations.

Bug: 279754118
Test: b build libcore:all (with prints to verify)
Change-Id: If36b5b73ff93cd15647e5c1c1f676e95137210ff
This commit is contained in:
MarkDacek
2023-05-04 20:40:04 +00:00
parent c0bdca9110
commit d33c2fd5a2
4 changed files with 25 additions and 15 deletions

View File

@@ -89,7 +89,8 @@ type configImpl struct {
skipMetricsUpload bool
buildStartedTime int64 // For metrics-upload-only - manually specify a build-started time
buildFromTextStub bool
ensureAllowlistIntegrity bool // For CI builds - make sure modules are mixed-built
ensureAllowlistIntegrity bool // For CI builds - make sure modules are mixed-built
bazelExitCode int32 // For b-runs - necessary for updating NonZeroExit
// From the product config
katiArgs []string
@@ -298,11 +299,12 @@ func defaultBazelProdMode(cfg *configImpl) bool {
return true
}
func UploadOnlyConfig(ctx Context, _ ...string) Config {
func UploadOnlyConfig(ctx Context, args ...string) Config {
ret := &configImpl{
environ: OsEnvironment(),
sandboxConfig: &SandboxConfig{},
}
ret.parseArgs(ctx, args)
srcDir := absPath(ctx, ".")
bc := os.Getenv("ANDROID_BUILD_ENVIRONMENT_CONFIG")
if err := loadEnvConfig(ctx, ret, bc); err != nil {
@@ -883,6 +885,14 @@ func (c *configImpl) parseArgs(ctx Context, args []string) {
}
} else if arg == "--ensure-allowlist-integrity" {
c.ensureAllowlistIntegrity = true
} else if strings.HasPrefix(arg, "--bazel-exit-code=") {
bazelExitCodeStr := strings.TrimPrefix(arg, "--bazel-exit-code=")
val, err := strconv.Atoi(bazelExitCodeStr)
if err == nil {
c.bazelExitCode = int32(val)
} else {
ctx.Fatalf("Error parsing bazel-exit-code", err)
}
} else if len(arg) > 0 && arg[0] == '-' {
parseArgNum := func(def int) int {
if len(arg) > 2 {
@@ -1723,6 +1733,10 @@ func (c *configImpl) BuildStartedTimeOrDefault(defaultTime time.Time) time.Time
return time.UnixMilli(c.buildStartedTime)
}
func (c *configImpl) BazelExitCode() int32 {
return c.bazelExitCode
}
func GetMetricsUploader(topDir string, env *Environment) string {
if p, ok := env.Get("METRICS_UPLOADER"); ok {
metricsUploader := filepath.Join(topDir, p)