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

Commit 6324647b authored by Kousik Kumar's avatar Kousik Kumar
Browse files

Remove env config fetcher code

This code is no longer needed since we are now setting USE_RBE to true
for 100% of users (except two users, who I'll reach out to over email).
So fetching the configuration is no longer needed since sometimes this
can result in RBE config flipping between on and off (depending on
whether you have gcert or not).

Tested: Ran the build with latest sync and ensured RBE was used for the
build.

Bug: b/283828386
Change-Id: I3cda78607b46a0e161b7841560dc587a44d91f27
parent 51f09423
Loading
Loading
Loading
Loading
+0 −88
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
package build

import (
	"context"
	"encoding/json"
	"fmt"
	"io/ioutil"
@@ -39,9 +38,6 @@ import (
const (
	envConfigDir = "vendor/google/tools/soong_config"
	jsonSuffix   = "json"

	configFetcher         = "vendor/google/tools/soong/expconfigfetcher"
	envConfigFetchTimeout = 10 * time.Second
)

var (
@@ -170,87 +166,6 @@ func checkTopDir(ctx Context) {
	}
}

// fetchEnvConfig optionally fetches a configuration file that can then subsequently be
// loaded into Soong environment to control certain aspects of build behavior (e.g., enabling RBE).
// If a configuration file already exists on disk, the fetch is run in the background
// so as to NOT block the rest of the build execution.
func fetchEnvConfig(ctx Context, config *configImpl, envConfigName string) error {
	configName := envConfigName + "." + jsonSuffix
	expConfigFetcher := &smpb.ExpConfigFetcher{Filename: &configName}
	defer func() {
		ctx.Metrics.ExpConfigFetcher(expConfigFetcher)
	}()
	if !config.GoogleProdCredsExist() {
		status := smpb.ExpConfigFetcher_MISSING_GCERT
		expConfigFetcher.Status = &status
		return nil
	}

	s, err := os.Stat(configFetcher)
	if err != nil {
		if os.IsNotExist(err) {
			return nil
		}
		return err
	}
	if s.Mode()&0111 == 0 {
		status := smpb.ExpConfigFetcher_ERROR
		expConfigFetcher.Status = &status
		return fmt.Errorf("configuration fetcher binary %v is not executable: %v", configFetcher, s.Mode())
	}

	configExists := false
	outConfigFilePath := filepath.Join(config.OutDir(), configName)
	if _, err := os.Stat(outConfigFilePath); err == nil {
		configExists = true
	}

	tCtx, cancel := context.WithTimeout(ctx, envConfigFetchTimeout)
	fetchStart := time.Now()
	cmd := exec.CommandContext(tCtx, configFetcher, "-output_config_dir", config.OutDir(),
		"-output_config_name", configName)
	if err := cmd.Start(); err != nil {
		status := smpb.ExpConfigFetcher_ERROR
		expConfigFetcher.Status = &status
		return err
	}

	fetchCfg := func() error {
		if err := cmd.Wait(); err != nil {
			status := smpb.ExpConfigFetcher_ERROR
			expConfigFetcher.Status = &status
			return err
		}
		fetchEnd := time.Now()
		expConfigFetcher.Micros = proto.Uint64(uint64(fetchEnd.Sub(fetchStart).Microseconds()))
		expConfigFetcher.Filename = proto.String(outConfigFilePath)

		if _, err := os.Stat(outConfigFilePath); err != nil {
			status := smpb.ExpConfigFetcher_NO_CONFIG
			expConfigFetcher.Status = &status
			return err
		}
		status := smpb.ExpConfigFetcher_CONFIG
		expConfigFetcher.Status = &status
		return nil
	}

	// If a config file does not exist, wait for the config file to be fetched. Otherwise
	// fetch the config file in the background and return immediately.
	if !configExists {
		defer cancel()
		return fetchCfg()
	}

	go func() {
		defer cancel()
		if err := fetchCfg(); err != nil {
			ctx.Verbosef("Failed to fetch config file %v: %v\n", configName, err)
		}
	}()
	return nil
}

func loadEnvConfig(ctx Context, config *configImpl, bc string) error {
	if bc == "" {
		return nil
@@ -350,9 +265,6 @@ func NewConfig(ctx Context, args ...string) Config {
	bc := os.Getenv("ANDROID_BUILD_ENVIRONMENT_CONFIG")

	if bc != "" {
		if err := fetchEnvConfig(ctx, ret, bc); err != nil {
			ctx.Verbosef("Failed to fetch config file: %v\n", err)
		}
		if err := loadEnvConfig(ctx, ret, bc); err != nil {
			ctx.Fatalln("Failed to parse env config files: %v", err)
		}