aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2022-03-23 14:48:08 +0000
committerSteve Sakoman <steve@sakoman.com>2022-11-15 04:12:46 -1000
commite3db9c2e9eded3c5cb6040714a6054b44f6b3880 (patch)
tree144c46af0ba0901c600616976bc7c2f65b7cd8dd
parent30d42ef030d03e11322b6b05ea7bbb64ab3d6f21 (diff)
downloadbitbake-1.46.tar.gz
If the path to bitbake.lock is in a deep directory, bitbake will hang. The reason was that the max file length limiting code (to 255 chars) was including the directory name and it should only act on the filename within the directory. Fix it to just use the base filename. [YOCTO #14766] Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 89d70e7b71eecfe06592202f326e566c579ba01d) Signed-off-by: Steve Sakoman <steve@sakoman.com>
-rw-r--r--lib/bb/utils.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/bb/utils.py b/lib/bb/utils.py
index 210e535f..82602466 100644
--- a/lib/bb/utils.py
+++ b/lib/bb/utils.py
@@ -461,13 +461,16 @@ def lockfile(name, shared=False, retry=True, block=False):
consider the possibility of sending a signal to the process to break
out - at which point you want block=True rather than retry=True.
"""
- if len(name) > 255:
- root, ext = os.path.splitext(name)
- name = root[:255 - len(ext)] + ext
+ basename = os.path.basename(name)
+ if len(basename) > 255:
+ root, ext = os.path.splitext(basename)
+ basename = root[:255 - len(ext)] + ext
dirname = os.path.dirname(name)
mkdirhier(dirname)
+ name = os.path.join(dirname, basename)
+
if not os.access(dirname, os.W_OK):
logger.error("Unable to acquire lock '%s', directory is not writable",
name)