diff mbox series

[2/2] insane: unimplemented-ptest: ignore source file errors

Message ID 20231016155113.54796-2-yoann.congal@smile.fr
State Accepted, archived
Commit 85ddbb67f0f6f823cac0966db78e5b74c5a54c4c
Headers show
Series [1/2] insane: skip unimplemented-ptest on S=WORKDIR recipes | expand

Commit Message

Yoann Congal Oct. 16, 2023, 3:51 p.m. UTC
In some cases, pathlib.Path.glob() might throw FileNotFoundError when
file/directory disappear while it is iterating over them.

This "warning" is not important enough to crash build in this case so
just take a bb.note of the problem and move on.

Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Reported-by: Mark Hatle <mark.hatle@amd.com>
Closes: https://lists.openembedded.org/g/openembedded-core/message/189254
---
 meta/classes-global/insane.bbclass | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)
diff mbox series

Patch

diff --git a/meta/classes-global/insane.bbclass b/meta/classes-global/insane.bbclass
index f7a2c392cf..6f3cd3026d 100644
--- a/meta/classes-global/insane.bbclass
+++ b/meta/classes-global/insane.bbclass
@@ -1353,16 +1353,22 @@  python do_qa_patch() {
     ###########################################################################
     def match_line_in_files(toplevel, filename_glob, line_regex):
         import pathlib
-        toppath = pathlib.Path(toplevel)
-        for entry in toppath.glob(filename_glob):
-            try:
-                with open(entry, 'r', encoding='utf-8', errors='ignore') as f:
-                    for line in f.readlines():
-                        if re.match(line_regex, line):
-                            return True
-            except FileNotFoundError:
-                # Broken symlink in source
-                pass
+        try:
+            toppath = pathlib.Path(toplevel)
+            for entry in toppath.glob(filename_glob):
+                try:
+                    with open(entry, 'r', encoding='utf-8', errors='ignore') as f:
+                        for line in f.readlines():
+                            if re.match(line_regex, line):
+                                return True
+                except FileNotFoundError:
+                    # Broken symlink in source
+                    pass
+        except FileNotFoundError:
+            # pathlib.Path.glob() might throw this when file/directory
+            # disappear while scanning.
+            bb.note("unimplemented-ptest: FileNotFoundError exception while scanning (disappearing file while scanning?). Check was ignored." % d.getVar('PN'))
+            pass
         return False
 
     srcdir = d.getVar('S')