summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe/spdx30_tasks.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oe/spdx30_tasks.py')
-rw-r--r--meta/lib/oe/spdx30_tasks.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/meta/lib/oe/spdx30_tasks.py b/meta/lib/oe/spdx30_tasks.py
index 6a39246fe1..e3e5dbc742 100644
--- a/meta/lib/oe/spdx30_tasks.py
+++ b/meta/lib/oe/spdx30_tasks.py
@@ -19,6 +19,10 @@ from datetime import datetime, timezone
19from pathlib import Path 19from pathlib import Path
20 20
21 21
22def walk_error(err):
23 bb.error(f"ERROR walking {err.filename}: {err}")
24
25
22def set_timestamp_now(d, o, prop): 26def set_timestamp_now(d, o, prop):
23 if d.getVar("SPDX_INCLUDE_TIMESTAMPS") == "1": 27 if d.getVar("SPDX_INCLUDE_TIMESTAMPS") == "1":
24 setattr(o, prop, datetime.now(timezone.utc)) 28 setattr(o, prop, datetime.now(timezone.utc))
@@ -148,11 +152,13 @@ def add_package_files(
148 spdx_files = set() 152 spdx_files = set()
149 153
150 file_counter = 1 154 file_counter = 1
151 for subdir, dirs, files in os.walk(topdir): 155 for subdir, dirs, files in os.walk(topdir, onerror=walk_error):
152 dirs[:] = [d for d in dirs if d not in ignore_dirs] 156 dirs[:] = [d for d in dirs if d not in ignore_dirs]
153 if subdir == str(topdir): 157 if subdir == str(topdir):
154 dirs[:] = [d for d in dirs if d not in ignore_top_level_dirs] 158 dirs[:] = [d for d in dirs if d not in ignore_top_level_dirs]
155 159
160 dirs.sort()
161 files.sort()
156 for file in files: 162 for file in files:
157 filepath = Path(subdir) / file 163 filepath = Path(subdir) / file
158 if filepath.is_symlink() or not filepath.is_file(): 164 if filepath.is_symlink() or not filepath.is_file():
@@ -356,7 +362,9 @@ def add_download_files(d, objset):
356 if fd.type == "file": 362 if fd.type == "file":
357 if os.path.isdir(fd.localpath): 363 if os.path.isdir(fd.localpath):
358 walk_idx = 1 364 walk_idx = 1
359 for root, dirs, files in os.walk(fd.localpath): 365 for root, dirs, files in os.walk(fd.localpath, onerror=walk_error):
366 dirs.sort()
367 files.sort()
360 for f in files: 368 for f in files:
361 f_path = os.path.join(root, f) 369 f_path = os.path.join(root, f)
362 if os.path.islink(f_path): 370 if os.path.islink(f_path):
@@ -1046,7 +1054,9 @@ def create_rootfs_spdx(d):
1046 collect_build_package_inputs(d, objset, rootfs_build, packages, files_by_hash) 1054 collect_build_package_inputs(d, objset, rootfs_build, packages, files_by_hash)
1047 1055
1048 files = set() 1056 files = set()
1049 for dirpath, dirnames, filenames in os.walk(image_rootfs): 1057 for dirpath, dirnames, filenames in os.walk(image_rootfs, onerror=walk_error):
1058 dirnames.sort()
1059 filenames.sort()
1050 for fn in filenames: 1060 for fn in filenames:
1051 fpath = Path(dirpath) / fn 1061 fpath = Path(dirpath) / fn
1052 if not fpath.is_file() or fpath.is_symlink(): 1062 if not fpath.is_file() or fpath.is_symlink():
@@ -1282,7 +1292,9 @@ def create_sdk_sbom(d, sdk_deploydir, spdx_work_dir, toolchain_outputname):
1282 root_files = [] 1292 root_files = []
1283 1293
1284 # NOTE: os.walk() doesn't return symlinks 1294 # NOTE: os.walk() doesn't return symlinks
1285 for dirpath, dirnames, filenames in os.walk(sdk_deploydir): 1295 for dirpath, dirnames, filenames in os.walk(sdk_deploydir, onerror=walk_error):
1296 dirnames.sort()
1297 filenames.sort()
1286 for fn in filenames: 1298 for fn in filenames:
1287 fpath = Path(dirpath) / fn 1299 fpath = Path(dirpath) / fn
1288 if not fpath.is_file() or fpath.is_symlink(): 1300 if not fpath.is_file() or fpath.is_symlink():