feat: add make sbom / install-sbom / uninstall-sbom targets - #258
feat: add make sbom / install-sbom / uninstall-sbom targets#258MarkAtwood wants to merge 7 commits into
Conversation
Adds CycloneDX + SPDX SBOM generation via wolfssl's gen-sbom script. Usage: make sbom WOLFSSL_DIR=/path/to/wolfssl wolfCLU is a binary (not .so); artifact hash uses --srcs from wolfssl_SOURCES. Version from CLUWOLFSSL_VERSION_STRING in version.h.
There was a problem hiding this comment.
Pull request overview
Adds SBOM (CycloneDX + SPDX) generation and installation/uninstallation targets to the autotools build, along with configure-time discovery of required tooling, to support compliance/evidence needs.
Changes:
- Adds
make sbom,make install-sbom,make uninstall-sbomtargets that generate SBOM artifacts and install/remove them under$(datadir)/doc/wolfclu/. - Introduces
configure.acchecks forpython3andpyspdxtoolsintended to support the SBOM generation flow.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| Makefile.am | Adds SBOM targets and wiring for generation + install/uninstall. |
| configure.ac | Adds configure-time tool detection for SBOM prerequisites. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
automake runs with -Werror; a second .PHONY (unconditional) overlapping the existing conditional .PHONY: manpages-gz triggered 'already defined' -> automake failed -> all CI configs red at autoreconf. Consolidate to one unconditional .PHONY covering manpages-gz + the sbom targets.
Signed-off-by: Sameeh Jubran <sameeh@wolfssl.com>
Signed-off-by: Sameeh Jubran <sameeh@wolfssl.com>
jackctj117
left a comment
There was a problem hiding this comment.
Skoll Multi-Scan Review
Modes: review + review-securityOverall recommendation: COMMENT
Findings: 6 total — 6 posted, 0 skipped
6 finding(s) posted as inline comments (see file-level comments below)
Posted findings
- [Medium] [review+review-security] SBOM build-options capture misses wolfCLU's config.h and AM_CFLAGS feature defines —
scripts/sbom.am:129-131 - [Medium] [review] PR description (--srcs / no staging) does not match implementation (--lib on staged binary) —
scripts/sbom.am:106-183 - [Low] [review] AC_PATH_PROG([PYTHON3]) duplicates AM_PATH_PYTHON and requires an executable literally named 'python3' —
configure.ac:65 - [Low] [review] Reproducibility CI step excludes the .spdx tag-value output from the byte-identical check —
.github/workflows/sbom.yml:121-133 - [Low] [review+review-security] pull_request branch filter '*' won't match base branches containing a slash —
.github/workflows/sbom.yml:4-7 - [Info] [review-security] CI builds and executes code from an unmerged external PR ref by default —
.github/workflows/sbom.yml:40-59
Review generated by Skoll
Sync scripts/sbom.am with the canonical wolfSSL copy (capture AM_CFLAGS/CFLAGS, overridable SBOM_CONFIG_H, $(docdir) sbomdir, [[:space:]] version parse, GNU-make/uninstall docs), set SBOM_CONFIG_H=src/config.h and ship the fragment via EXTRA_DIST so the wolfCLU feature macros land in the SBOM, fall back to $PYTHON when python3 is absent, include the .spdx tag-value in the reproducibility check, and widen the workflow pull_request filter to '**'. Signed-off-by: Sameeh Jubran <sameeh@wolfssl.com>
Sync scripts/sbom.am with the unified canonical copy in wolfSSL (scripts/sbom.am), which adds the SBOM_OPTIONS_H override unifying options.h- and config.h/AM_CFLAGS-based macro capture into one fragment. wolfCLU keeps its subdir config.h override (SBOM_CONFIG_H = $(abs_builddir)/src/config.h) and does not set SBOM_OPTIONS_H, so the compiler + config.h path is unchanged; no behavior change. Keeps the vendored fragment byte-identical to the canonical. Signed-off-by: Sameeh Jubran <sameeh@wolfssl.com>
dgarske
left a comment
There was a problem hiding this comment.
Please resolve merge conflicts
| if: steps.gate.outputs.have == 'yes' | ||
| working-directory: wolfclu | ||
| run: | | ||
| autoreconf -ivf |
|
Un-assigning wolfSSL-bot, needs rebased and review comments addressed. |
Summary
make sbom,make install-sbom, andmake uninstall-sbomtargets to wolfCLU's autotools build for EU CRA compliance evidence (CycloneDX 1.6 + SPDX 2.3 output)AC_CHECK_PROGchecks forpython3andpyspdxtoolsinconfigure.acUsage
WOLFSSL_DIRmust point to a wolfssl checkout containingscripts/gen-sbom(branchfeat/sbom-embedded, ormasteronce wolfSSL/wolfssl#10343 merges).Notes
wolfssl), not a shared library — artifact hash uses--srcs $(wolfssl_SOURCES)(the compiled.csource list) rather than--lib; no staging step neededCLUWOLFSSL_VERSION_STRINGinwolfclu/version.h(the#define VERSION 0.3inclu_header_main.his stale and ignored)WOLFSSL_INCLUDEDIRdefaults to$(WOLFSSL_DIR)/include; wolfssl'soptions.his used for the config source since wolfCLU has no generated options header of its ownuninstall-hookdependency ensuresmake uninstallremoves SBOM files