Loading android/config.go +13 −24 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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 Loading Loading @@ -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, Loading Loading @@ -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 } Loading android/config_test.go +0 −45 Original line number Diff line number Diff line Loading @@ -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) } }) } } Loading
android/config.go +13 −24 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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 Loading Loading @@ -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, Loading Loading @@ -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 } Loading
android/config_test.go +0 −45 Original line number Diff line number Diff line Loading @@ -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) } }) } }