summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2023-11-06 14:51:12 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-11-08 10:56:35 +0000
commit3d35d09ff2a9bb79f99ee45923fbe74c8fd6d0d7 (patch)
tree1bf09224000df61f266845eb460b760023e45386 /meta/lib/oe
parent6806bd23499aa66942c2b6b8fbc52dbec8ff8483 (diff)
downloadpoky-3d35d09ff2a9bb79f99ee45923fbe74c8fd6d0d7.tar.gz
sstate: Ensure sstate searches update file mtime
Commands like "bitbake XXX -S printdiff" search for sstate files but don't download them. This means that local files aren't touched as the download code would do, meaning the sstate cleanup scripts can delete them. This can then lead to obtuse build failures. Have the search code touch local files in the same way as the main code paths would to avoid these files disappearing. Move the function to a common touch() function in lib/oe instead of duplicating code. (From OE-Core rev: a27fc0bd5706ab5b9c68a0271fcf57377a678cdf) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oe')
-rw-r--r--meta/lib/oe/utils.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
index a3b1bb1087..14a7d07ef0 100644
--- a/meta/lib/oe/utils.py
+++ b/meta/lib/oe/utils.py
@@ -7,6 +7,7 @@
7import subprocess 7import subprocess
8import multiprocessing 8import multiprocessing
9import traceback 9import traceback
10import errno
10 11
11def read_file(filename): 12def read_file(filename):
12 try: 13 try:
@@ -528,3 +529,14 @@ def directory_size(root, blocksize=4096):
528 total += sum(roundup(getsize(os.path.join(root, name))) for name in files) 529 total += sum(roundup(getsize(os.path.join(root, name))) for name in files)
529 total += roundup(getsize(root)) 530 total += roundup(getsize(root))
530 return total 531 return total
532
533# Update the mtime of a file, skip if permission/read-only issues
534def touch(filename):
535 try:
536 os.utime(filename, None)
537 except PermissionError:
538 pass
539 except OSError as e:
540 # Handle read-only file systems gracefully
541 if e.errno != errno.EROFS:
542 raise e