summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oe/path.py21
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
53def 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
53def format_display(path, metadata): 74def 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)