mirror of
https://git.yoctoproject.org/poky
synced 2026-06-01 00:59:48 +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
@@ -165,7 +165,7 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath):
|
||||
shutil.rmtree(temp_sdkbasepath)
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
os.rename(sdkbasepath, temp_sdkbasepath)
|
||||
bb.utils.rename(sdkbasepath, temp_sdkbasepath)
|
||||
cmdprefix = '. %s .; ' % conf_initpath
|
||||
logfile = d.getVar('WORKDIR') + '/tasklist_bb_log.txt'
|
||||
try:
|
||||
@@ -175,7 +175,7 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath):
|
||||
if 'attempted to execute unexpectedly and should have been setscened' in e.stdout:
|
||||
msg += '\n----------\n\nNOTE: "attempted to execute unexpectedly and should have been setscened" errors indicate this may be caused by missing sstate artifacts that were likely produced in earlier builds, but have been subsequently deleted for some reason.\n'
|
||||
bb.fatal(msg)
|
||||
os.rename(temp_sdkbasepath, sdkbasepath)
|
||||
bb.utils.rename(temp_sdkbasepath, sdkbasepath)
|
||||
# Clean out residue of running bitbake, which check_sstate_task_list()
|
||||
# will effectively do
|
||||
clean_esdk_builddir(d, sdkbasepath)
|
||||
|
||||
Reference in New Issue
Block a user