diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-02-08 15:08:54 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-02-09 10:52:03 +0000 |
commit | eac8f9b986b565ff8ce6ffeb93bcadffc9c34330 (patch) | |
tree | 382d2ac03fcc61bf505d32f8a5e9fc47b8215358 /meta/lib | |
parent | 48527d4ff3a41c16eafebd87620469f341ff981a (diff) | |
download | poky-eac8f9b986b565ff8ce6ffeb93bcadffc9c34330.tar.gz |
lib/oe/path: Add replace_absolute_symlinks function
We need a function to walk a directory and replace absolute symlinks with
relative ones. Add such a function to the path module of lib/oe.
It does this relative to the directory being walked for files.
(From OE-Core rev: 15376e5ff35367c1b40941d10e7b19302058a53e)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r-- | meta/lib/oe/path.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py index d4685403c5..a2a50c5b39 100644 --- a/meta/lib/oe/path.py +++ b/meta/lib/oe/path.py | |||
@@ -50,6 +50,27 @@ def make_relative_symlink(path): | |||
50 | os.remove(path) | 50 | os.remove(path) |
51 | os.symlink(base, path) | 51 | os.symlink(base, path) |
52 | 52 | ||
53 | def replace_absolute_symlinks(basedir, d): | ||
54 | """ | ||
55 | Walk basedir looking for absolute symlinks and replacing them with relative ones. | ||
56 | The absolute links are assumed to be relative to basedir | ||
57 | (compared to make_relative_symlink above which tries to compute common ancestors | ||
58 | using pattern matching instead) | ||
59 | """ | ||
60 | for walkroot, dirs, files in os.walk(basedir): | ||
61 | for file in files + dirs: | ||
62 | path = os.path.join(walkroot, file) | ||
63 | if not os.path.islink(path): | ||
64 | continue | ||
65 | link = os.readlink(path) | ||
66 | if not os.path.isabs(link): | ||
67 | continue | ||
68 | walkdir = os.path.dirname(path.rpartition(basedir)[2]) | ||
69 | base = os.path.relpath(link, walkdir) | ||
70 | bb.debug(2, "Replacing absolute path %s with relative path %s" % (link, base)) | ||
71 | os.remove(path) | ||
72 | os.symlink(base, path) | ||
73 | |||
53 | def format_display(path, metadata): | 74 | def format_display(path, metadata): |
54 | """ Prepare a path for display to the user. """ | 75 | """ Prepare a path for display to the user. """ |
55 | rel = relative(metadata.getVar("TOPDIR"), path) | 76 | rel = relative(metadata.getVar("TOPDIR"), path) |