mirror of
https://git.yoctoproject.org/poky
synced 2026-06-07 03:04:04 +00:00
image/populate_sdk: Ensure symlinks in target sysroot are relative
In the target sysroot of an SDK we can have target system absolute links which don't make sense. This adds a script which fixes them up to become relative paths instead. [YOCTO #5020] (From OE-Core rev: 57d6bdcad55c119e9ab8089d23d462436a0e4440) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env python
|
||||
import sys
|
||||
import os
|
||||
|
||||
# Take a sysroot directory and turn all the abolute symlinks and turn them into
|
||||
# relative ones such that the sysroot is usable within another system.
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
print("Usage is " + sys.argv[0] + "<directory>")
|
||||
sys.exit(1)
|
||||
|
||||
topdir = sys.argv[1]
|
||||
topdir = os.path.abspath(topdir)
|
||||
|
||||
def handlelink(filep, subdir):
|
||||
link = os.readlink(filep)
|
||||
if link[0] != "/":
|
||||
return
|
||||
if link.startswith(topdir):
|
||||
return
|
||||
#print("Replacing %s with %s for %s" % (link, topdir+link, filep))
|
||||
print("Replacing %s with %s for %s" % (link, os.path.relpath(topdir+link, subdir), filep))
|
||||
os.unlink(filep)
|
||||
os.symlink(os.path.relpath(topdir+link, subdir), filep)
|
||||
|
||||
for subdir, dirs, files in os.walk(topdir):
|
||||
for f in files:
|
||||
filep = os.path.join(subdir, f)
|
||||
if os.path.islink(filep):
|
||||
#print("Considering %s" % filep)
|
||||
handlelink(filep, subdir)
|
||||
Reference in New Issue
Block a user