summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/siggen.py
diff options
context:
space:
mode:
authorDevendra Tewari <devendra.tewari@gmail.com>2021-04-19 11:23:58 -0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-05-06 11:04:59 +0100
commit581233a798434f178898f12fa35bbcccb92e7768 (patch)
tree85b7608515935ce107304532ea64cda8a0e80dd9 /bitbake/lib/bb/siggen.py
parent7fbd7744ea68c17f396e87e15f9c7c9f6a371f23 (diff)
downloadpoky-581233a798434f178898f12fa35bbcccb92e7768.tar.gz
bitbake: lib/bb: Add bb.utils.rename() helper function and use for renaming
os.rename can fail for example an incremental build in Docker fails with: OSError: [Errno 18] Invalid cross-device link when source and destination are on different overlay filesystems. Rather than trying to fix every call site, add a wrapper in bb.utils for renames. We can then handle cross device failures and fall back to shutil.move. The reason os.rename is still used is because shutil.move is too slow for speed sensitive sections of code. [YOCTO #14301] (Bitbake rev: c5c4e49574ab2a65e06298a0a77bb98b041cf56b) Signed-off-by: Devendra Tewari <devendra.tewari@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/siggen.py')
-rw-r--r--bitbake/lib/bb/siggen.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py
index f3fa3000fa..07692e673c 100644
--- a/bitbake/lib/bb/siggen.py
+++ b/bitbake/lib/bb/siggen.py
@@ -402,7 +402,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
402 p = pickle.dump(data, stream, -1) 402 p = pickle.dump(data, stream, -1)
403 stream.flush() 403 stream.flush()
404 os.chmod(tmpfile, 0o664) 404 os.chmod(tmpfile, 0o664)
405 os.rename(tmpfile, sigfile) 405 bb.utils.rename(tmpfile, sigfile)
406 except (OSError, IOError) as err: 406 except (OSError, IOError) as err:
407 try: 407 try:
408 os.unlink(tmpfile) 408 os.unlink(tmpfile)