Revert "Generate build_number.txt only once"

This reverts commit ab6e524709.

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
This commit is contained in:
Roy Luo
2023-09-29 00:28:32 +00:00
committed by Gerrit Code Review
parent ab6e524709
commit f852b72a22
3 changed files with 23 additions and 41 deletions

View File

@@ -15,13 +15,11 @@
package build
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"sync"
"text/template"
"time"
"android/soong/ui/metrics"
)
@@ -58,31 +56,6 @@ func SetupOutDir(ctx Context, config Config) {
} else {
ctx.Fatalln("Missing BUILD_DATETIME_FILE")
}
// 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".
buildNumber, ok := config.environ.Get("BUILD_NUMBER")
if ok {
writeValueIfChanged(ctx, config, config.OutDir(), "file_name_tag.txt", buildNumber)
} else {
var username string
if username, ok = config.environ.Get("BUILD_USERNAME"); !ok {
ctx.Fatalln("Missing BUILD_USERNAME")
}
buildNumber = fmt.Sprintf("eng.%.6s.%s", username, time.Now().Format("20060102.150405" /* YYYYMMDD.HHMMSS */))
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)
}
var combinedBuildNinjaTemplate = template.Must(template.New("combined").Parse(`

View File

@@ -22,7 +22,6 @@ import (
"math/rand"
"os"
"os/exec"
"os/user"
"path/filepath"
"runtime"
"strconv"
@@ -456,16 +455,6 @@ func NewConfig(ctx Context, args ...string) Config {
ret.environ.Set("BUILD_DATETIME_FILE", buildDateTimeFile)
if _, ok := ret.environ.Get("BUILD_USERNAME"); !ok {
username := "unknown"
if u, err := user.Current(); err == nil {
username = u.Username
} else {
ctx.Println("Failed to get current user:", err)
}
ret.environ.Set("BUILD_USERNAME", username)
}
if ret.UseRBE() {
for k, v := range getRBEVars(ctx, Config{ret}) {
ret.environ.Set(k, v)

View File

@@ -15,8 +15,6 @@
package build
import (
"android/soong/ui/metrics"
"android/soong/ui/status"
"crypto/md5"
"fmt"
"io/ioutil"
@@ -24,6 +22,10 @@ import (
"os/user"
"path/filepath"
"strings"
"time"
"android/soong/ui/metrics"
"android/soong/ui/status"
)
var spaceSlashReplacer = strings.NewReplacer("/", "_", " ", "_")
@@ -196,14 +198,32 @@ func runKati(ctx Context, config Config, extraSuffix string, args []string, envF
}
}
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)