Skip to content

Commit a8734a8

Browse files
aclark4lifehugovk
andcommitted
Update wheels.yml and generate-sbom.py
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
1 parent 6c2c62f commit a8734a8

2 files changed

Lines changed: 36 additions & 13 deletions

File tree

.github/generate-sbom.py

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ def generate(version: str) -> dict:
110110
],
111111
"patches": [
112112
{
113-
"type": "generated",
113+
"type": "unofficial",
114114
"diff": {
115115
"text": {
116116
# raqm-version.h.in → raqm-version.h:
@@ -493,25 +493,43 @@ def generate(version: str) -> dict:
493493
"metadata": {
494494
"timestamp": now,
495495
"lifecycles": [{"phase": "build"}],
496-
"tools": [
497-
{
498-
"type": "application",
499-
"name": "generate-sbom.py",
500-
"vendor": "Pillow",
501-
}
502-
],
496+
"tools": {
497+
"components": [
498+
{
499+
"type": "application",
500+
"name": "generate-sbom.py",
501+
"group": "Pillow"
502+
}
503+
]
504+
},
503505
"component": metadata_component,
504506
},
505507
"components": ext_components + vendored_components + native_deps,
506508
"dependencies": dependencies,
507509
}
508510

509511

510-
if __name__ == "__main__":
512+
def main() -> None:
511513
version = get_version()
512-
output = (
513-
Path(sys.argv[1]) if len(sys.argv) > 1 else Path(f"pillow-{version}.cdx.json")
514+
515+
parser = argparse.ArgumentParser(
516+
description=__doc__, formatter_class=argparse.ArgumentDefaultsHelpFormatter
517+
)
518+
parser.add_argument(
519+
"output",
520+
nargs="?",
521+
type=Path,
522+
default=Path(f"pillow-{version}.cdx.json"),
523+
help="output file",
514524
)
525+
args = parser.parse_args()
526+
515527
sbom = generate(version)
516-
output.write_text(json.dumps(sbom, indent=2) + "\n", encoding="utf-8")
517-
print(f"Wrote {output} (Pillow {version}, {len(sbom['components'])} components)")
528+
args.output.write_text(json.dumps(sbom, indent=2) + "\n", encoding="utf-8")
529+
print(
530+
f"Wrote {args.output} (Pillow {version}, {len(sbom['components'])} components)"
531+
)
532+
533+
534+
if __name__ == "__main__":
535+
main()

.github/workflows/wheels.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,11 @@ jobs:
298298
- name: Generate CycloneDX SBOM
299299
run: python3 .github/generate-sbom.py
300300

301+
- name: Validate SBOM
302+
run: |
303+
pip install check-jsonschema
304+
check-jsonschema --schemafile "https://raw.githubusercontent.com/CycloneDX/specification/1.7/schema/bom-1.7.schema.json" *.cdx.json
305+
301306
- name: Upload SBOM as workflow artifact
302307
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
303308
with:

0 commit comments

Comments
 (0)