summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/staging.bbclass9
1 files changed, 7 insertions, 2 deletions
diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass
index b97f26127f..1fe60ac2cb 100644
--- a/meta/classes/staging.bbclass
+++ b/meta/classes/staging.bbclass
@@ -260,9 +260,11 @@ def staging_copyfile(c, target, fixme, postinsts, stagingdir):
if os.path.islink(c):
linkto = os.readlink(c)
if os.path.lexists(dest):
+ if not os.path.islink(dest):
+ raise OSError(errno.EEXIST, "Link %s already exists as a file" % dest, dest)
if os.readlink(dest) == linkto:
return dest
- bb.fatal("Link %s already exists to a different location?" % dest)
+ raise OSError(errno.EEXIST, "Link %s already exists to a different location? (%s vs %s)" % (dest, os.readlink(dest), linkto), dest)
os.symlink(linkto, dest)
#bb.warn(c)
else:
@@ -331,7 +333,10 @@ def staging_populate_sysroot_dir(targetsysroot, nativesysroot, native, d):
if l.endswith("/"):
staging_copydir(l, targetdir, stagingdir)
continue
- staging_copyfile(l, targetdir, fixme, postinsts, stagingdir)
+ try:
+ staging_copyfile(l, targetdir, fixme, postinsts, stagingdir)
+ except FileExistsError:
+ continue
staging_processfixme(fixme, targetdir, targetsysroot, nativesysroot, d)
for p in postinsts: