mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 12:29:55 +00:00
classes/lib/scripts: Use bb.utils.rename() instead of os.rename()
Incremental build in Docker fails with: OSError: [Errno 18] Invalid cross-device link when source and destination are on different overlay filesystems. Rather than adding fallback code to every call site, use a new wrapper in bitbake which detects this case and falls back to shutil.move which is slower but will handtle the overlay docker filesystems correctly. [YOCTO #14301] (From OE-Core rev: 656a65b2b84e7d529b89cf5de7eb838f902d84a2) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
974441aeda
commit
b71375304f
@@ -401,7 +401,7 @@ def sstate_installpkgdir(ss, d):
|
||||
|
||||
for state in ss['dirs']:
|
||||
prepdir(state[1])
|
||||
os.rename(sstateinst + state[0], state[1])
|
||||
bb.utils.rename(sstateinst + state[0], state[1])
|
||||
sstate_install(ss, d)
|
||||
|
||||
for plain in ss['plaindirs']:
|
||||
@@ -413,7 +413,7 @@ def sstate_installpkgdir(ss, d):
|
||||
dest = plain
|
||||
bb.utils.mkdirhier(src)
|
||||
prepdir(dest)
|
||||
os.rename(src, dest)
|
||||
bb.utils.rename(src, dest)
|
||||
|
||||
return True
|
||||
|
||||
@@ -664,7 +664,7 @@ def sstate_package(ss, d):
|
||||
continue
|
||||
bb.error("sstate found an absolute path symlink %s pointing at %s. Please replace this with a relative link." % (srcpath, link))
|
||||
bb.debug(2, "Preparing tree %s for packaging at %s" % (state[1], sstatebuild + state[0]))
|
||||
os.rename(state[1], sstatebuild + state[0])
|
||||
bb.utils.rename(state[1], sstatebuild + state[0])
|
||||
|
||||
workdir = d.getVar('WORKDIR')
|
||||
sharedworkdir = os.path.join(d.getVar('TMPDIR'), "work-shared")
|
||||
@@ -674,7 +674,7 @@ def sstate_package(ss, d):
|
||||
pdir = plain.replace(sharedworkdir, sstatebuild)
|
||||
bb.utils.mkdirhier(plain)
|
||||
bb.utils.mkdirhier(pdir)
|
||||
os.rename(plain, pdir)
|
||||
bb.utils.rename(plain, pdir)
|
||||
|
||||
d.setVar('SSTATE_BUILDDIR', sstatebuild)
|
||||
d.setVar('SSTATE_INSTDIR', sstatebuild)
|
||||
|
||||
Reference in New Issue
Block a user