@@ -73,18 +73,23 @@ class PackageFiles(typing.NamedTuple):
73
73
}
74
74
75
75
76
+ def spdx_id (value : str ) -> str :
77
+ """Encode a value into characters that are valid in an SPDX ID"""
78
+ return re .sub (r"[^a-zA-Z0-9.\-]+" , "-" , value )
79
+
80
+
76
81
def main ():
77
82
root_dir = pathlib .Path (__file__ ).parent .parent .parent
78
- sbom_path = ( root_dir / "Misc/sbom.spdx.json" )
83
+ sbom_path = root_dir / "Misc/sbom.spdx.json"
79
84
sbom_data = json .loads (sbom_path .read_bytes ())
80
85
81
- # Make a bunch of assertions about the SBOM data to ensure its consistent.
86
+ # Make a bunch of assertions about the SBOM data to ensure it's consistent.
82
87
assert {package ["name" ] for package in sbom_data ["packages" ]} == set (PACKAGE_TO_FILES )
83
88
for package in sbom_data ["packages" ]:
84
89
85
90
# Properties and ID must be properly formed.
86
91
assert set (package .keys ()) == REQUIRED_PROPERTIES_PACKAGE
87
- assert package ["SPDXID" ] == f"SPDXRef-PACKAGE-{ package ['name' ]} "
92
+ assert package ["SPDXID" ] == spdx_id ( f"SPDXRef-PACKAGE-{ package ['name' ]} " )
88
93
89
94
# Version must be in the download and external references.
90
95
version = package ["versionInfo" ]
@@ -100,7 +105,7 @@ def main():
100
105
101
106
# We call 'sorted()' here a lot to avoid filesystem scan order issues.
102
107
for name , files in sorted (PACKAGE_TO_FILES .items ()):
103
- package_spdx_id = f"SPDXRef-PACKAGE-{ name } "
108
+ package_spdx_id = spdx_id ( f"SPDXRef-PACKAGE-{ name } " )
104
109
exclude = files .exclude or ()
105
110
for include in sorted (files .include ):
106
111
paths = sorted (glob .glob (include , root_dir = root_dir , recursive = True ))
@@ -116,7 +121,7 @@ def main():
116
121
checksum_sha1 = hashlib .sha1 (data ).hexdigest ()
117
122
checksum_sha256 = hashlib .sha256 (data ).hexdigest ()
118
123
119
- file_spdx_id = re . sub ( r"[^a-zA-Z0-9.\-]+" , "-" , f"SPDXRef-FILE-{ path } " )
124
+ file_spdx_id = spdx_id ( f"SPDXRef-FILE-{ path } " )
120
125
sbom_files .append ({
121
126
"SPDXID" : file_spdx_id ,
122
127
"fileName" : path ,
0 commit comments