Merge "Load RBE related env vars from config files" am: b3a5d18470 am: 9f6fa868c5

Original change: https://googleplex-android-review.googlesource.com/c/platform/build/soong/+/15454953

Change-Id: Ie1e7b2bdb392c33a286d7f52e0fee4ccf560b1b7
This commit is contained in:
Kousik Kumar
2021-08-05 18:08:31 +00:00
committed by Automerger Merge Worker

View File

@@ -16,8 +16,10 @@ package main
import (
"context"
"encoding/json"
"flag"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strconv"
@@ -32,6 +34,11 @@ import (
"android/soong/ui/tracer"
)
const (
configDir = "vendor/google/tools/soong_config"
jsonSuffix = "json"
)
func indexList(s string, list []string) int {
for i, l := range list {
if l == s {
@@ -46,6 +53,34 @@ func inList(s string, list []string) bool {
return indexList(s, list) != -1
}
func loadEnvConfig() error {
bc := os.Getenv("ANDROID_BUILD_ENVIRONMENT_CONFIG")
if bc == "" {
return nil
}
cfgFile := filepath.Join(os.Getenv("TOP"), configDir, fmt.Sprintf("%s.%s", bc, jsonSuffix))
envVarsJSON, err := ioutil.ReadFile(cfgFile)
if err != nil {
fmt.Fprintf(os.Stderr, "\033[33mWARNING:\033[0m failed to open config file %s: %s\n", cfgFile, err.Error())
return nil
}
var envVars map[string]map[string]string
if err := json.Unmarshal(envVarsJSON, &envVars); err != nil {
return fmt.Errorf("env vars config file: %s did not parse correctly: %s", cfgFile, err.Error())
}
for k, v := range envVars["env"] {
if os.Getenv(k) != "" {
continue
}
if err := os.Setenv(k, v); err != nil {
return err
}
}
return nil
}
func main() {
buildStarted := time.Now()
var stdio terminal.StdioInterface
@@ -113,6 +148,12 @@ func main() {
config = build.NewConfig(buildCtx, os.Args[1:]...)
}
if err := loadEnvConfig(); err != nil {
fmt.Fprintf(os.Stderr, "failed to parse env config files: %v", err)
os.Exit(1)
}
build.SetupOutDir(buildCtx, config)
logsDir := config.OutDir()