Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 233c1be0 authored by Kousik Kumar's avatar Kousik Kumar Committed by Automerger Merge Worker
Browse files

Merge "Load RBE related env vars from config files" am: b3a5d184 am: 9f6fa868

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

Change-Id: Ie1e7b2bdb392c33a286d7f52e0fee4ccf560b1b7
parents 1f3a7f6c 9f6fa868
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -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()