Loading core/board_config.mk +1 −1 Original line number Diff line number Diff line Loading @@ -256,7 +256,7 @@ else endif $(shell build/soong/scripts/update_out $(OUT_DIR)/rbc/rbc_board_config_results.mk \ $(OUT_DIR)/rbcrun RBC_OUT="make" $(OUT_DIR)/rbc/boardlauncher.rbc) $(OUT_DIR)/rbcrun $(OUT_DIR)/rbc/boardlauncher.rbc) ifneq ($(.SHELLSTATUS),0) $(error board configuration runner failed: $(.SHELLSTATUS)) endif Loading core/product_config.mk +1 −1 Original line number Diff line number Diff line Loading @@ -247,7 +247,7 @@ else endif $(shell build/soong/scripts/update_out $(OUT_DIR)/rbc/rbc_product_config_results.mk \ $(OUT_DIR)/rbcrun RBC_OUT="make,global" $(OUT_DIR)/rbc/launcher.rbc) $(OUT_DIR)/rbcrun $(OUT_DIR)/rbc/launcher.rbc) ifneq ($(.SHELLSTATUS),0) $(error product configuration runner failed: $(.SHELLSTATUS)) endif Loading core/product_config.rbc +16 −66 Original line number Diff line number Diff line Loading @@ -54,11 +54,6 @@ def __print_attr(attr, value): if value == None: return if type(value) == "list": if _options.rearrange: value = __printvars_rearrange_list(value) if _options.format == "pretty": print(attr, "=", repr(value)) elif _options.format == "make": value = list(value) for i, x in enumerate(value): if type(x) == "tuple" and len(x) == 1: Loading @@ -66,13 +61,9 @@ def __print_attr(attr, value): elif type(x) != "string": fail("Wasn't a list of strings:", attr, " value:", value) print(attr, ":=", " ".join(value)) elif _options.format == "pretty": print(attr, "=", repr(value)) elif _options.format == "make": else: # Trim all spacing to a single space print(attr, ":=", _mkstrip(value)) else: fail("bad output format", _options.format) def _printvars(state): """Prints configuration and global variables.""" Loading @@ -83,7 +74,6 @@ def _printvars(state): for nsname, nsvars in sorted(val.items()): # Define SOONG_CONFIG_<ns> for Make, othewise # it cannot be added to .KATI_READONLY list if _options.format == "make": print("SOONG_CONFIG_" + nsname, ":=", " ".join(nsvars.keys())) for var, val in sorted(nsvars.items()): if val: Loading @@ -105,11 +95,6 @@ def _printvars(state): elif attr not in globals_base or globals_base[attr] != val: __print_attr(attr, val) def __printvars_rearrange_list(value_list): """Rearrange value list: return only distinct elements, maybe sorted.""" seen = {item: 0 for item in value_list} return sorted(seen.keys()) if _options.rearrange == "sort" else seen.keys() def __sort_pcm_names(pcm_names): # We have to add an extension back onto the pcm names when sorting, # or else the sort order could be wrong when one is a prefix of another. Loading Loading @@ -695,17 +680,9 @@ def _mkwarning(file, message = ""): rblf_log(file, "warning", message, sep = ':') def _mk2rbc_error(loc, message): """Prints a message about conversion error and stops. If RBC_MK2RBC_CONTINUE environment variable is set, the execution will continue after the message is printed. """ if _options.mk2rbc_continue: rblf_log(loc, message, sep = ':') else: """Prints a message about conversion error and stops.""" _mkerror(loc, message) def _mkinfo(file, message = ""): """Prints info.""" rblf_log(message) Loading Loading @@ -877,39 +854,12 @@ def _clear_var_list(g, h, var_list): # Cause the variable to appear set like the make version does g[v] = "" def __get_options(): """Returns struct containing runtime global settings.""" settings = dict( format = "pretty", rearrange = "", # Settings used during debugging. _options = struct( trace_modules = False, trace_variables = [], mk2rbc_continue = False, ) for x in getattr(rblf_cli, "RBC_OUT", "").split(","): if x == "sort" or x == "unique": if settings["rearrange"]: fail("RBC_OUT: either sort or unique is allowed (and sort implies unique)") settings["rearrange"] = x elif x == "pretty" or x == "make": settings["format"] = x elif x == "global": # TODO: Remove this, kept for backwards compatibility pass elif x != "": fail("RBC_OUT: got %s, should be one of: [pretty|make] [sort|unique]" % x) for x in getattr(rblf_cli, "RBC_DEBUG", "").split(","): if x == "!trace": settings["trace_modules"] = True elif x != "": settings["trace_variables"].append(x) if getattr(rblf_cli, "RBC_MK2RBC_CONTINUE", ""): settings["mk2rbc_continue"] = True return struct(**settings) # Settings used during debugging. _options = __get_options() rblf = struct( soong_config_namespace = _soong_config_namespace, soong_config_append = _soong_config_append, Loading tools/rbcrun/host.go +3 −18 Original line number Diff line number Diff line Loading @@ -223,16 +223,6 @@ func makeStringList(items []string) *starlark.List { return starlark.NewList(elems) } // propsetFromEnv constructs a propset from the array of KEY=value strings func structFromEnv(env []string) *starlarkstruct.Struct { sd := make(map[string]starlark.Value, len(env)) for _, x := range env { kv := strings.SplitN(x, "=", 2) sd[kv[0]] = starlark.String(kv[1]) } return starlarkstruct.FromStringDict(starlarkstruct.Default, sd) } func log(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { sep := " " if err := starlark.UnpackArgs("print", nil, kwargs, "sep?", &sep); err != nil { Loading @@ -255,12 +245,10 @@ func log(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwa return starlark.None, nil } func setup(env []string) { func setup() { // Create the symbols that aid makefile conversion. See README.md builtins = starlark.StringDict{ "struct": starlark.NewBuiltin("struct", starlarkstruct.Make), "rblf_cli": structFromEnv(env), "rblf_env": structFromEnv(os.Environ()), // To convert find-copy-subdir and product-copy-files-by pattern "rblf_find_files": starlark.NewBuiltin("rblf_find_files", find), // To convert makefile's $(shell cmd) Loading @@ -285,11 +273,8 @@ func setup(env []string) { // and the name that appears in error messages; // * src is an optional source of bytes to use instead of filename // (it can be a string, or a byte array, or an io.Reader instance) // * commandVars is an array of "VAR=value" items. They are accessible from // the starlark script as members of the `rblf_cli` propset. func Run(filename string, src interface{}, commandVars []string) error { setup(commandVars) func Run(filename string, src interface{}) error { setup() mainThread := &starlark.Thread{ Name: "main", Print: func(_ *starlark.Thread, msg string) { fmt.Println(msg) }, Loading tools/rbcrun/host_test.go +8 −26 Original line number Diff line number Diff line Loading @@ -53,8 +53,8 @@ func starlarktestSetup() { } // Common setup for the tests: create thread, change to the test directory func testSetup(t *testing.T, env []string) *starlark.Thread { setup(env) func testSetup(t *testing.T) *starlark.Thread { setup() thread := &starlark.Thread{ Load: func(thread *starlark.Thread, module string) (starlark.StringDict, error) { if module == "assert.star" { Loading @@ -72,14 +72,16 @@ func testSetup(t *testing.T, env []string) *starlark.Thread { func dataDir() string { _, thisSrcFile, _, _ := runtime.Caller(0) return filepath.Join(filepath.Dir(thisSrcFile), "testdata") } func exerciseStarlarkTestFile(t *testing.T, starFile string) { // In order to use "assert.star" from go/starlark.net/starlarktest in the tests, provide: // * load function that handles "assert.star" // * starlarktest.DataFile function that finds its location setup(nil) setup() if err := os.Chdir(dataDir()); err != nil { t.Fatal(err) } thread := &starlark.Thread{ Load: func(thread *starlark.Thread, module string) (starlark.StringDict, error) { if module == "assert.star" { Loading @@ -98,26 +100,9 @@ func exerciseStarlarkTestFile(t *testing.T, starFile string) { } } func TestCliAndEnv(t *testing.T) { // TODO(asmundak): convert this to use exerciseStarlarkTestFile if err := os.Setenv("TEST_ENVIRONMENT_FOO", "test_environment_foo"); err != nil { t.Fatal(err) } thread := testSetup(t, []string{"CLI_FOO=foo"}) if _, err := starlark.ExecFile(thread, "cli_and_env.star", nil, builtins); err != nil { if err, ok := err.(*starlark.EvalError); ok { t.Fatal(err.Backtrace()) } t.Fatal(err) } } func TestFileOps(t *testing.T) { // TODO(asmundak): convert this to use exerciseStarlarkTestFile if err := os.Setenv("TEST_DATA_DIR", dataDir()); err != nil { t.Fatal(err) } thread := testSetup(t, nil) thread := testSetup(t) if _, err := starlark.ExecFile(thread, "file_ops.star", nil, builtins); err != nil { if err, ok := err.(*starlark.EvalError); ok { t.Fatal(err.Backtrace()) Loading @@ -128,7 +113,7 @@ func TestFileOps(t *testing.T) { func TestLoad(t *testing.T) { // TODO(asmundak): convert this to use exerciseStarlarkTestFile thread := testSetup(t, nil) thread := testSetup(t) thread.Load = func(thread *starlark.Thread, module string) (starlark.StringDict, error) { if module == "assert.star" { return starlarktest.LoadAssertModule() Loading @@ -148,8 +133,5 @@ func TestLoad(t *testing.T) { } func TestShell(t *testing.T) { if err := os.Setenv("TEST_DATA_DIR", dataDir()); err != nil { t.Fatal(err) } exerciseStarlarkTestFile(t, "testdata/shell.star") } Loading
core/board_config.mk +1 −1 Original line number Diff line number Diff line Loading @@ -256,7 +256,7 @@ else endif $(shell build/soong/scripts/update_out $(OUT_DIR)/rbc/rbc_board_config_results.mk \ $(OUT_DIR)/rbcrun RBC_OUT="make" $(OUT_DIR)/rbc/boardlauncher.rbc) $(OUT_DIR)/rbcrun $(OUT_DIR)/rbc/boardlauncher.rbc) ifneq ($(.SHELLSTATUS),0) $(error board configuration runner failed: $(.SHELLSTATUS)) endif Loading
core/product_config.mk +1 −1 Original line number Diff line number Diff line Loading @@ -247,7 +247,7 @@ else endif $(shell build/soong/scripts/update_out $(OUT_DIR)/rbc/rbc_product_config_results.mk \ $(OUT_DIR)/rbcrun RBC_OUT="make,global" $(OUT_DIR)/rbc/launcher.rbc) $(OUT_DIR)/rbcrun $(OUT_DIR)/rbc/launcher.rbc) ifneq ($(.SHELLSTATUS),0) $(error product configuration runner failed: $(.SHELLSTATUS)) endif Loading
core/product_config.rbc +16 −66 Original line number Diff line number Diff line Loading @@ -54,11 +54,6 @@ def __print_attr(attr, value): if value == None: return if type(value) == "list": if _options.rearrange: value = __printvars_rearrange_list(value) if _options.format == "pretty": print(attr, "=", repr(value)) elif _options.format == "make": value = list(value) for i, x in enumerate(value): if type(x) == "tuple" and len(x) == 1: Loading @@ -66,13 +61,9 @@ def __print_attr(attr, value): elif type(x) != "string": fail("Wasn't a list of strings:", attr, " value:", value) print(attr, ":=", " ".join(value)) elif _options.format == "pretty": print(attr, "=", repr(value)) elif _options.format == "make": else: # Trim all spacing to a single space print(attr, ":=", _mkstrip(value)) else: fail("bad output format", _options.format) def _printvars(state): """Prints configuration and global variables.""" Loading @@ -83,7 +74,6 @@ def _printvars(state): for nsname, nsvars in sorted(val.items()): # Define SOONG_CONFIG_<ns> for Make, othewise # it cannot be added to .KATI_READONLY list if _options.format == "make": print("SOONG_CONFIG_" + nsname, ":=", " ".join(nsvars.keys())) for var, val in sorted(nsvars.items()): if val: Loading @@ -105,11 +95,6 @@ def _printvars(state): elif attr not in globals_base or globals_base[attr] != val: __print_attr(attr, val) def __printvars_rearrange_list(value_list): """Rearrange value list: return only distinct elements, maybe sorted.""" seen = {item: 0 for item in value_list} return sorted(seen.keys()) if _options.rearrange == "sort" else seen.keys() def __sort_pcm_names(pcm_names): # We have to add an extension back onto the pcm names when sorting, # or else the sort order could be wrong when one is a prefix of another. Loading Loading @@ -695,17 +680,9 @@ def _mkwarning(file, message = ""): rblf_log(file, "warning", message, sep = ':') def _mk2rbc_error(loc, message): """Prints a message about conversion error and stops. If RBC_MK2RBC_CONTINUE environment variable is set, the execution will continue after the message is printed. """ if _options.mk2rbc_continue: rblf_log(loc, message, sep = ':') else: """Prints a message about conversion error and stops.""" _mkerror(loc, message) def _mkinfo(file, message = ""): """Prints info.""" rblf_log(message) Loading Loading @@ -877,39 +854,12 @@ def _clear_var_list(g, h, var_list): # Cause the variable to appear set like the make version does g[v] = "" def __get_options(): """Returns struct containing runtime global settings.""" settings = dict( format = "pretty", rearrange = "", # Settings used during debugging. _options = struct( trace_modules = False, trace_variables = [], mk2rbc_continue = False, ) for x in getattr(rblf_cli, "RBC_OUT", "").split(","): if x == "sort" or x == "unique": if settings["rearrange"]: fail("RBC_OUT: either sort or unique is allowed (and sort implies unique)") settings["rearrange"] = x elif x == "pretty" or x == "make": settings["format"] = x elif x == "global": # TODO: Remove this, kept for backwards compatibility pass elif x != "": fail("RBC_OUT: got %s, should be one of: [pretty|make] [sort|unique]" % x) for x in getattr(rblf_cli, "RBC_DEBUG", "").split(","): if x == "!trace": settings["trace_modules"] = True elif x != "": settings["trace_variables"].append(x) if getattr(rblf_cli, "RBC_MK2RBC_CONTINUE", ""): settings["mk2rbc_continue"] = True return struct(**settings) # Settings used during debugging. _options = __get_options() rblf = struct( soong_config_namespace = _soong_config_namespace, soong_config_append = _soong_config_append, Loading
tools/rbcrun/host.go +3 −18 Original line number Diff line number Diff line Loading @@ -223,16 +223,6 @@ func makeStringList(items []string) *starlark.List { return starlark.NewList(elems) } // propsetFromEnv constructs a propset from the array of KEY=value strings func structFromEnv(env []string) *starlarkstruct.Struct { sd := make(map[string]starlark.Value, len(env)) for _, x := range env { kv := strings.SplitN(x, "=", 2) sd[kv[0]] = starlark.String(kv[1]) } return starlarkstruct.FromStringDict(starlarkstruct.Default, sd) } func log(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { sep := " " if err := starlark.UnpackArgs("print", nil, kwargs, "sep?", &sep); err != nil { Loading @@ -255,12 +245,10 @@ func log(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwa return starlark.None, nil } func setup(env []string) { func setup() { // Create the symbols that aid makefile conversion. See README.md builtins = starlark.StringDict{ "struct": starlark.NewBuiltin("struct", starlarkstruct.Make), "rblf_cli": structFromEnv(env), "rblf_env": structFromEnv(os.Environ()), // To convert find-copy-subdir and product-copy-files-by pattern "rblf_find_files": starlark.NewBuiltin("rblf_find_files", find), // To convert makefile's $(shell cmd) Loading @@ -285,11 +273,8 @@ func setup(env []string) { // and the name that appears in error messages; // * src is an optional source of bytes to use instead of filename // (it can be a string, or a byte array, or an io.Reader instance) // * commandVars is an array of "VAR=value" items. They are accessible from // the starlark script as members of the `rblf_cli` propset. func Run(filename string, src interface{}, commandVars []string) error { setup(commandVars) func Run(filename string, src interface{}) error { setup() mainThread := &starlark.Thread{ Name: "main", Print: func(_ *starlark.Thread, msg string) { fmt.Println(msg) }, Loading
tools/rbcrun/host_test.go +8 −26 Original line number Diff line number Diff line Loading @@ -53,8 +53,8 @@ func starlarktestSetup() { } // Common setup for the tests: create thread, change to the test directory func testSetup(t *testing.T, env []string) *starlark.Thread { setup(env) func testSetup(t *testing.T) *starlark.Thread { setup() thread := &starlark.Thread{ Load: func(thread *starlark.Thread, module string) (starlark.StringDict, error) { if module == "assert.star" { Loading @@ -72,14 +72,16 @@ func testSetup(t *testing.T, env []string) *starlark.Thread { func dataDir() string { _, thisSrcFile, _, _ := runtime.Caller(0) return filepath.Join(filepath.Dir(thisSrcFile), "testdata") } func exerciseStarlarkTestFile(t *testing.T, starFile string) { // In order to use "assert.star" from go/starlark.net/starlarktest in the tests, provide: // * load function that handles "assert.star" // * starlarktest.DataFile function that finds its location setup(nil) setup() if err := os.Chdir(dataDir()); err != nil { t.Fatal(err) } thread := &starlark.Thread{ Load: func(thread *starlark.Thread, module string) (starlark.StringDict, error) { if module == "assert.star" { Loading @@ -98,26 +100,9 @@ func exerciseStarlarkTestFile(t *testing.T, starFile string) { } } func TestCliAndEnv(t *testing.T) { // TODO(asmundak): convert this to use exerciseStarlarkTestFile if err := os.Setenv("TEST_ENVIRONMENT_FOO", "test_environment_foo"); err != nil { t.Fatal(err) } thread := testSetup(t, []string{"CLI_FOO=foo"}) if _, err := starlark.ExecFile(thread, "cli_and_env.star", nil, builtins); err != nil { if err, ok := err.(*starlark.EvalError); ok { t.Fatal(err.Backtrace()) } t.Fatal(err) } } func TestFileOps(t *testing.T) { // TODO(asmundak): convert this to use exerciseStarlarkTestFile if err := os.Setenv("TEST_DATA_DIR", dataDir()); err != nil { t.Fatal(err) } thread := testSetup(t, nil) thread := testSetup(t) if _, err := starlark.ExecFile(thread, "file_ops.star", nil, builtins); err != nil { if err, ok := err.(*starlark.EvalError); ok { t.Fatal(err.Backtrace()) Loading @@ -128,7 +113,7 @@ func TestFileOps(t *testing.T) { func TestLoad(t *testing.T) { // TODO(asmundak): convert this to use exerciseStarlarkTestFile thread := testSetup(t, nil) thread := testSetup(t) thread.Load = func(thread *starlark.Thread, module string) (starlark.StringDict, error) { if module == "assert.star" { return starlarktest.LoadAssertModule() Loading @@ -148,8 +133,5 @@ func TestLoad(t *testing.T) { } func TestShell(t *testing.T) { if err := os.Setenv("TEST_DATA_DIR", dataDir()); err != nil { t.Fatal(err) } exerciseStarlarkTestFile(t, "testdata/shell.star") }