diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-11-06 14:51:12 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-11-08 10:56:35 +0000 |
commit | 3d35d09ff2a9bb79f99ee45923fbe74c8fd6d0d7 (patch) | |
tree | 1bf09224000df61f266845eb460b760023e45386 /meta/lib/oe/utils.py | |
parent | 6806bd23499aa66942c2b6b8fbc52dbec8ff8483 (diff) | |
download | poky-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/utils.py')
-rw-r--r-- | meta/lib/oe/utils.py | 12 |
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 @@ | |||
7 | import subprocess | 7 | import subprocess |
8 | import multiprocessing | 8 | import multiprocessing |
9 | import traceback | 9 | import traceback |
10 | import errno | ||
10 | 11 | ||
11 | def read_file(filename): | 12 | def 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 | ||
534 | def 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 | ||