Skip to content

Commit

Permalink
Correct abspath implementation
Browse files Browse the repository at this point in the history
realpath doesn't return a path if the file doesn't exist,
but $(abspath) in make does.

Bug: 229132189
Test: ./out/rbcrun ./build/make/tests/run.rbc
Change-Id: Ief7f634024cc52a9e8c5e478666b15512512f0d8
  • Loading branch information
Colecf committed Apr 19, 2022
1 parent a9aa002 commit 426c744
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 5 deletions.
24 changes: 19 additions & 5 deletions core/product_config.rbc
Original file line number Diff line number Diff line change
Expand Up @@ -400,12 +400,26 @@ def _soong_config_get(g, nsname, var):
"""Gets to the value of the variable in the namespace."""
return g.get(_soong_config_namespaces_key, {}).get(nsname, {}).get(var, None)


def _abspath(path):
def _abspath(paths):
"""Provided for compatibility, to be removed later."""
if type(path) == "list":
path = " ".join(path)
return rblf_shell("realpath "+path)
cwd = rblf_shell('pwd')
results = []
for path in __words(paths):
if path[0] != "/":
path = cwd + "/" + path

resultparts = []
for part in path.split('/'):
if part == "." or part == "":
continue
elif part == "..":
if resultparts:
resultparts.pop()
else:
resultparts.append(part)
results.append("/" + "/".join(resultparts))

return " ".join(results)


def _addprefix(prefix, string_or_list):
Expand Down
8 changes: 8 additions & 0 deletions tests/run.rbc
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,14 @@ assert_eq("foo.c no_folder", rblf.notdir("src/foo.c no_folder"))
assert_eq("", rblf.notdir("/"))
assert_eq("", rblf.notdir(""))

cwd = rblf_shell('pwd')
assert_eq(cwd+"/foo/bar", rblf.abspath("foo/bar"))
assert_eq(cwd+"/bar", rblf.abspath("foo/.././bar"))
assert_eq(cwd+"/bar", rblf.abspath("foo/..////bar//"))
assert_eq("/foo/baz", rblf.abspath("/foo/bar/../baz"))
assert_eq(cwd+"/foo/bar "+cwd+"/foo/baz", rblf.abspath("foo/bar foo/baz"))
assert_eq("/baz", rblf.abspath("/../../../../../../../../../../../../../../../../baz"))

assert_eq(
["build/make/tests/board.rbc", "build/make/tests/board_input_vars.rbc"],
rblf.expand_wildcard("build/make/tests/board*.rbc")
Expand Down

0 comments on commit 426c744

Please sign in to comment.