Revert "Generate build_number.txt only once"
This reverts commit ab6e5247098cdeb6c2cc654525a529a5668fbc9f.
Reason for revert: DroidMonitor-triggered revert due to breakage https://android-build.corp.google.com/builds/quarterdeck?branch=aosp-main&target=ndk&lkgb=10879153&lkbb=10879224&fkbb=10879224, bug b/302608661.
Change-Id: I07d47a92ea9a9f5d329e813859316decfd75cde1
BUG: 302608661
diff --git a/ui/build/kati.go b/ui/build/kati.go
index 31e7440..aea56d3 100644
--- a/ui/build/kati.go
+++ b/ui/build/kati.go
@@ -15,8 +15,6 @@
package build
import (
- "android/soong/ui/metrics"
- "android/soong/ui/status"
"crypto/md5"
"fmt"
"io/ioutil"
@@ -24,6 +22,10 @@
"os/user"
"path/filepath"
"strings"
+ "time"
+
+ "android/soong/ui/metrics"
+ "android/soong/ui/status"
)
var spaceSlashReplacer = strings.NewReplacer("/", "_", " ", "_")
@@ -196,14 +198,32 @@
}
}
writeValueIfChanged(ctx, config, config.SoongOutDir(), "build_hostname.txt", hostname)
- _, ok = cmd.Environment.Get("BUILD_NUMBER")
+
+ // BUILD_NUMBER should be set to the source control value that
+ // represents the current state of the source code. E.g., a
+ // perforce changelist number or a git hash. Can be an arbitrary string
+ // (to allow for source control that uses something other than numbers),
+ // but must be a single word and a valid file name.
+ //
+ // If no BUILD_NUMBER is set, create a useful "I am an engineering build
+ // from this date/time" value. Make it start with a non-digit so that
+ // anyone trying to parse it as an integer will probably get "0".
+ cmd.Environment.Unset("HAS_BUILD_NUMBER")
+ buildNumber, ok := cmd.Environment.Get("BUILD_NUMBER")
// Unset BUILD_NUMBER during kati run to avoid kati rerun, kati will use BUILD_NUMBER from a file.
cmd.Environment.Unset("BUILD_NUMBER")
if ok {
cmd.Environment.Set("HAS_BUILD_NUMBER", "true")
+ writeValueIfChanged(ctx, config, config.OutDir(), "file_name_tag.txt", buildNumber)
} else {
+ buildNumber = fmt.Sprintf("eng.%.6s.%s", username, time.Now().Format("20060102.150405" /* YYYYMMDD.HHMMSS */))
cmd.Environment.Set("HAS_BUILD_NUMBER", "false")
+ writeValueIfChanged(ctx, config, config.OutDir(), "file_name_tag.txt", username)
}
+ // Write the build number to a file so it can be read back in
+ // without changing the command line every time. Avoids rebuilds
+ // when using ninja.
+ writeValueIfChanged(ctx, config, config.SoongOutDir(), "build_number.txt", buildNumber)
// Apply the caller's function closure to mutate the environment variables.
envFunc(cmd.Environment)