From 0cc94d3275163c7e60790b3f6ea5d0cfe08ee7eb Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Mon, 15 Nov 2021 14:26:14 -0800 Subject: [PATCH] Add notdir implementation mk2rbc would already translate notdir calls, but since there was no implementation it would fail at runtime. Bug: 201700692 Test: m rbcrun; rbcrun build/make/tests/run.rbc Change-Id: Ie0f4e7b65448e612fa56f87b0bc138648cc0ad58 --- core/product_config.rbc | 10 +++++++++- tests/run.rbc | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/core/product_config.rbc b/core/product_config.rbc index 24e38b1f8f..e1e59c261e 100644 --- a/core/product_config.rbc +++ b/core/product_config.rbc @@ -361,7 +361,7 @@ def _addsuffix(suffix, string_or_list): def __words(string_or_list): if type(string_or_list) == "list": return string_or_list - return string_or_list.split() + return _mkstrip(string_or_list).split() # Handle manipulation functions. # A handle passed to a PCM consists of: @@ -485,6 +485,13 @@ def _filter(pattern, text): res.append(w) return res +def _notdir(paths): + """Equivalent to the GNU make function $(notdir). + + Returns the name of the file at the end of each path in paths. + """ + return " ".join([__base(w) for w in __words(paths)]) + def __mk2regex(words): """Returns regular expression equivalent to Make pattern.""" @@ -674,6 +681,7 @@ rblf = struct( mkwarning = _mkwarning, mkstrip = _mkstrip, mksubst = _mksubst, + notdir = _notdir, printvars = _printvars, printglobals = _printglobals, product_configuration = _product_configuration, diff --git a/tests/run.rbc b/tests/run.rbc index b40d1c612b..d2223419fa 100644 --- a/tests/run.rbc +++ b/tests/run.rbc @@ -52,6 +52,11 @@ assert_eq(["from/a:to/a", "from/b:to/b"], rblf.product_copy_files_by_pattern("fr assert_eq([], rblf.filter(["a", "", "b"], "f")) assert_eq(["", "b"], rblf.filter_out(["a", "" ], ["a", "", "b"] )) +assert_eq("foo.c no_folder", rblf.notdir(["src/foo.c", "no_folder"])) +assert_eq("foo.c no_folder", rblf.notdir("src/foo.c no_folder")) +assert_eq("", rblf.notdir("/")) +assert_eq("", rblf.notdir("")) + (globals, config, globals_base) = rblf.product_configuration("test/device", init, version_defaults) assert_eq( {