mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00
lib/oe/path: Add canonicalize()
oe.path.canonicalize() is used to canonicalize paths (i.e., remove symbolic links and "..", and make them absolute). It takes a string with paths separated by commas, and returns the canonicalized path in the same format. (From OE-Core rev: 282b19c0e27488ec119f00fb2542ffdc1af54e2a) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
e90cea97d2
commit
c37aed34af
|
@ -320,3 +320,24 @@ def which_wild(pathname, path=None, mode=os.F_OK, *, reverse=False, candidates=F
|
|||
|
||||
return files
|
||||
|
||||
def canonicalize(paths, sep=','):
|
||||
"""Given a string with paths (separated by commas by default), expand
|
||||
each path using os.path.realpath() and return the resulting paths as a
|
||||
string (separated using the same separator a the original string).
|
||||
"""
|
||||
# Ignore paths containing "$" as they are assumed to be unexpanded bitbake
|
||||
# variables. Normally they would be ignored, e.g., when passing the paths
|
||||
# through the shell they would expand to empty strings. However, when they
|
||||
# are passed through os.path.realpath(), it will cause them to be prefixed
|
||||
# with the absolute path to the current directory and thus not be empty
|
||||
# anymore.
|
||||
#
|
||||
# Also maintain trailing slashes, as the paths may actually be used as
|
||||
# prefixes in sting compares later on, where the slashes then are important.
|
||||
canonical_paths = []
|
||||
for path in (paths or '').split(sep):
|
||||
if '$' not in path:
|
||||
trailing_slash = path.endswith('/') and '/' or ''
|
||||
canonical_paths.append(os.path.realpath(path) + trailing_slash)
|
||||
|
||||
return sep.join(canonical_paths)
|
||||
|
|
Loading…
Reference in New Issue
Block a user