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

Commit 6b321e64 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Revert "Only use partial compile on eng builds"" into main

parents 8b27de6f bef36af5
Loading
Loading
Loading
Loading
+13 −24
Original line number Diff line number Diff line
@@ -413,21 +413,18 @@ type jsonConfigurable interface {
// To add a new feature to the list, add the field in the struct
// `partialCompileFlags` above, and then add the name of the field in the
// switch statement below.
var defaultPartialCompileFlags = partialCompileFlags{
func (c *config) parsePartialCompileFlags() (partialCompileFlags, error) {
	defaultFlags := partialCompileFlags{
		// Set any opt-out flags here.  Opt-in flags are off by default.
		enabled: false,
	}

func (c *config) parsePartialCompileFlags(isEngBuild bool) (partialCompileFlags, error) {
	value := c.Getenv("SOONG_PARTIAL_COMPILE")
	if !isEngBuild {
		return partialCompileFlags{}, nil
	}

	if value == "" {
		return defaultPartialCompileFlags, nil
		return defaultFlags, nil
	}

	ret := defaultPartialCompileFlags
	ret := defaultFlags
	tokens := strings.Split(strings.ToLower(value), ",")
	makeVal := func(state string, defaultValue bool) bool {
		switch state {
@@ -458,17 +455,17 @@ func (c *config) parsePartialCompileFlags(isEngBuild bool) (partialCompileFlags,
		}
		switch tok {
		case "true":
			ret = defaultPartialCompileFlags
			ret = defaultFlags
			ret.enabled = true
		case "false":
			// Set everything to false.
			ret = partialCompileFlags{}
		case "enabled":
			ret.enabled = makeVal(state, defaultPartialCompileFlags.enabled)
			ret.enabled = makeVal(state, defaultFlags.enabled)
		case "use_d8":
			ret.use_d8 = makeVal(state, defaultPartialCompileFlags.use_d8)
			ret.use_d8 = makeVal(state, defaultFlags.use_d8)
		default:
			return partialCompileFlags{}, fmt.Errorf("Unknown SOONG_PARTIAL_COMPILE value: %v", tok)
			return partialCompileFlags{}, fmt.Errorf("Unknown SOONG_PARTIAL_COMPILE value: %v", value)
		}
	}
	return ret, nil
@@ -619,14 +616,6 @@ func NewConfig(cmdArgs CmdArgs, availableEnv map[string]string) (Config, error)

		buildFromSourceStub: cmdArgs.BuildFromSourceStub,
	}
	variant, ok := os.LookupEnv("TARGET_BUILD_VARIANT")
	isEngBuild := !ok || variant == "eng"

	if isEngBuild {
		// Partial Compile is only supported on eng builds.
		config.env["SOONG_PARTIAL_COMPILE"] = "false"
		config.env["SOONG_USE_PARTIAL_COMPILE"] = ""
	}

	config.deviceConfig = &deviceConfig{
		config: config,
@@ -668,7 +657,7 @@ func NewConfig(cmdArgs CmdArgs, availableEnv map[string]string) (Config, error)
		return Config{}, err
	}

	config.partialCompileFlags, err = config.parsePartialCompileFlags(isEngBuild)
	config.partialCompileFlags, err = config.parsePartialCompileFlags()
	if err != nil {
		return Config{}, err
	}
+0 −45
Original line number Diff line number Diff line
@@ -212,48 +212,3 @@ func TestConfiguredJarList(t *testing.T) {
		assertStringEquals(t, "apex1:jarA", list5.String())
	})
}

func (p partialCompileFlags) updateEnabled(value bool) partialCompileFlags {
	p.enabled = value
	return p
}

func (p partialCompileFlags) updateUseD8(value bool) partialCompileFlags {
	p.use_d8 = value
	return p
}

func TestPartialCompile(t *testing.T) {
	mockConfig := func(value string) *config {
		c := &config{
			env: map[string]string{
				"SOONG_PARTIAL_COMPILE": value,
			},
		}
		return c
	}
	tests := []struct {
		value      string
		isEngBuild bool
		expected   partialCompileFlags
	}{
		{"", true, defaultPartialCompileFlags},
		{"false", true, partialCompileFlags{}},
		{"true", true, defaultPartialCompileFlags.updateEnabled(true)},
		{"true", false, partialCompileFlags{}},
		{"true,use_d8", true, defaultPartialCompileFlags.updateEnabled(true).updateUseD8(true)},
		{"true,-use_d8", true, defaultPartialCompileFlags.updateEnabled(true).updateUseD8(false)},
		{"use_d8,false", true, partialCompileFlags{}},
		{"false,+use_d8", true, partialCompileFlags{}.updateUseD8(true)},
	}

	for _, test := range tests {
		t.Run(test.value, func(t *testing.T) {
			config := mockConfig(test.value)
			flags, _ := config.parsePartialCompileFlags(test.isEngBuild)
			if flags != test.expected {
				t.Errorf("expected %v found %v", test.expected, flags)
			}
		})
	}
}