From: Yoann Congal Date: Mon, 16 Oct 2023 15:51:13 +0000 (+0200) Subject: insane: unimplemented-ptest: ignore source file errors X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=85ddbb67f0f6f823cac0966db78e5b74c5a54c4c;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git insane: unimplemented-ptest: ignore source file errors 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 Reported-by: Mark Hatle Closes: https://lists.openembedded.org/g/openembedded-core/message/189254 Signed-off-by: Richard Purdie --- diff --git a/meta/classes-global/insane.bbclass b/meta/classes-global/insane.bbclass index f7a2c392cf4..6f3cd3026de 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')