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

Commit ea1a31c0 authored by Lukacs T. Berki's avatar Lukacs T. Berki
Browse files

Remove the bootstrap.Config class.

It was confusing because bootstrapping uses two configurations: the
"global" config and the special-cased bootstrap one.

This change merges them.

Test: Presubmits.
Change-Id: I82b482cbe28a343ab6991374b2a28667e1a06b48
parent 7686708a
Loading
Loading
Loading
Loading
+27 −6
Original line number Diff line number Diff line
@@ -75,10 +75,26 @@ func (c Config) OutDir() string {
	return c.soongOutDir
}

func (c Config) RunGoTests() bool {
	return c.runGoTests
}

func (c Config) UseValidationsForGoTests() bool {
	return c.useValidationsForGoTests
}

func (c Config) DebugCompilation() bool {
	return false // Never compile Go code in the main build for debugging
}

func (c Config) Subninjas() []string {
	return []string{}
}

func (c Config) PrimaryBuilderInvocations() []bootstrap.PrimaryBuilderInvocation {
	return []bootstrap.PrimaryBuilderInvocation{}
}

// A DeviceConfig object represents the configuration for a particular device
// being built. For now there will only be one of these, but in the future there
// may be multiple devices being built.
@@ -125,6 +141,9 @@ type config struct {
	soongOutDir    string // the path of the build output directory
	moduleListFile string // the path to the file which lists blueprint files to parse.

	runGoTests               bool
	useValidationsForGoTests bool

	env       map[string]string
	envLock   sync.Mutex
	envDeps   map[string]string
@@ -396,8 +415,8 @@ func TestArchConfig(buildDir string, env map[string]string, bp string, fs map[st
// bootstrap run. Only per-run data is reset. Data which needs to persist across
// multiple runs in the same program execution is carried over (such as Bazel
// context or environment deps).
func ConfigForAdditionalRun(c Config) (Config, error) {
	newConfig, err := NewConfig(c.soongOutDir, c.moduleListFile, c.env)
func ConfigForAdditionalRun(cmdlineArgs bootstrap.Args, c Config) (Config, error) {
	newConfig, err := NewConfig(cmdlineArgs, c.soongOutDir, c.env)
	if err != nil {
		return Config{}, err
	}
@@ -408,7 +427,7 @@ func ConfigForAdditionalRun(c Config) (Config, error) {

// NewConfig creates a new Config object. The srcDir argument specifies the path
// to the root source directory. It also loads the config file, if found.
func NewConfig(soongOutDir string, moduleListFile string, availableEnv map[string]string) (Config, error) {
func NewConfig(cmdlineArgs bootstrap.Args, soongOutDir string, availableEnv map[string]string) (Config, error) {
	// Make a config with default options.
	config := &config{
		ProductVariablesFileName: filepath.Join(soongOutDir, productVariablesFileName),
@@ -416,9 +435,11 @@ func NewConfig(soongOutDir string, moduleListFile string, availableEnv map[strin
		env: availableEnv,

		soongOutDir:              soongOutDir,
		runGoTests:               cmdlineArgs.RunGoTests,
		useValidationsForGoTests: cmdlineArgs.UseValidations,
		multilibConflicts:        make(map[ArchType]bool),

		moduleListFile: moduleListFile,
		moduleListFile: cmdlineArgs.ModuleListFile,
		fs:             pathtools.NewOsFs(absSrcDir),
	}

+5 −5
Original line number Diff line number Diff line
@@ -113,8 +113,8 @@ func newContext(configuration android.Config, prepareBuildActions bool) *android
	return ctx
}

func newConfig(outDir string, availableEnv map[string]string) android.Config {
	configuration, err := android.NewConfig(outDir, cmdlineArgs.ModuleListFile, availableEnv)
func newConfig(cmdlineArgs bootstrap.Args, outDir string, availableEnv map[string]string) android.Config {
	configuration, err := android.NewConfig(cmdlineArgs, outDir, availableEnv)
	if err != nil {
		fmt.Fprintf(os.Stderr, "%s", err)
		os.Exit(1)
@@ -140,13 +140,13 @@ func runMixedModeBuild(configuration android.Config, firstCtx *android.Context,
		os.Exit(1)
	}
	// Second pass: Full analysis, using the bazel command results. Output ninja file.
	secondConfig, err := android.ConfigForAdditionalRun(configuration)
	secondArgs = cmdlineArgs
	secondConfig, err := android.ConfigForAdditionalRun(secondArgs, configuration)
	if err != nil {
		fmt.Fprintf(os.Stderr, "%s", err)
		os.Exit(1)
	}
	secondCtx := newContext(secondConfig, true)
	secondArgs = cmdlineArgs
	ninjaDeps := bootstrap.RunBlueprint(secondArgs, secondCtx.Context, secondConfig)
	ninjaDeps = append(ninjaDeps, extraNinjaDeps...)

@@ -298,7 +298,7 @@ func main() {

	availableEnv := parseAvailableEnv()

	configuration := newConfig(outDir, availableEnv)
	configuration := newConfig(cmdlineArgs, outDir, availableEnv)
	extraNinjaDeps := []string{
		configuration.ProductVariablesFileName,
		usedEnvFile,
+32 −8
Original line number Diff line number Diff line
@@ -74,7 +74,11 @@ type BlueprintConfig struct {
	toolDir                   string
	soongOutDir               string
	outDir                    string
	runGoTests                bool
	useValidations            bool
	debugCompilation          bool
	subninjas                 []string
	primaryBuilderInvocations []bootstrap.PrimaryBuilderInvocation
}

func (c BlueprintConfig) HostToolDir() string {
@@ -89,10 +93,26 @@ func (c BlueprintConfig) OutDir() string {
	return c.outDir
}

func (c BlueprintConfig) RunGoTests() bool {
	return c.runGoTests
}

func (c BlueprintConfig) UseValidationsForGoTests() bool {
	return c.useValidations
}

func (c BlueprintConfig) DebugCompilation() bool {
	return c.debugCompilation
}

func (c BlueprintConfig) Subninjas() []string {
	return c.subninjas
}

func (c BlueprintConfig) PrimaryBuilderInvocations() []bootstrap.PrimaryBuilderInvocation {
	return c.primaryBuilderInvocations
}

func environmentArgs(config Config, suffix string) []string {
	return []string{
		"--available_env", shared.JoinPath(config.SoongOutDir(), availableEnvFile),
@@ -214,7 +234,11 @@ func bootstrapBlueprint(ctx Context, config Config) {
		soongOutDir:               config.SoongOutDir(),
		toolDir:                   config.HostToolDir(),
		outDir:                    config.OutDir(),
		runGoTests:                !config.skipSoongTests,
		useValidations:            true,
		debugCompilation:          os.Getenv("SOONG_DELVE") != "",
		subninjas:                 args.Subninjas,
		primaryBuilderInvocations: args.PrimaryBuilderInvocations,
	}

	args.EmptyNinjaFile = false