-
Notifications
You must be signed in to change notification settings - Fork 12
Description
Summary
Request to add two new CPS Supplemental properties: package_url and package_provider.
These supply provenance and discovery metadata that help consumers trace, reproduce, and report package origins.
This proposal grew out of spdx-to-cps, where we saw a need to represent provenance fields.
As noted in CMake issue #27128:
"Sbom generation would like to list all the information it can, including each dependencies Description, PackageUrl, Website, and License."
This proposal addresses the need for package_url (canonical retrievable source) as well as package_provider (ecosystem identifier).
Motivation / Problem
Currently, CPS packages contain metadata about the package name, version, and requirements, but lack a standardized way to indicate:
- Where the package can be retrieved from (URL, registry, distribution archive, etc.).
- Which provider or ecosystem is responsible for the package (e.g., vcpkg, Conan, system package manager).
This information is important for:
- Reproducibility: tools or humans can trace back to the original distribution.
- Provenance: consumers can validate where a package was sourced.
- Ecosystem integration: enabling bridges between CPS and existing package ecosystems.
Proposed Specification Changes (Supplemental)
-
package_url-
Type:
string -
Applies To:
package -
Required: No
-
Semantics:
A URL pointing to the canonical location of the package.
This may be:- A fetchable VCS or distribution URL, e.g.:
git+https://github.com/madler/zlib@v1.3.1
https://example.com/foo-1.2.3.tar.gz, - A canonical identifier (e.g. purl spec).
At present, the
spdx-to-cpsscript emitsgit+https://...style URLs. - A fetchable VCS or distribution URL, e.g.:
-
Example:
{ "package": { "name": "zlib", "version": "1.2.11", "package_url": "git+https://github.com/madler/zlib@v1.3.1" } }
Distinction from
website:package_urlidentifies a canonical retrievable source for the package (e.g., VCS URL, distribution archive, or purl), whilewebsiteis informational and intended to point to a project or package homepage for human use. -
-
package_provider-
Type:
string -
Applies To:
package -
Required: No
-
Semantics:
The ecosystem or distribution source that supplied this package.
Intended values may includevcpkg,conan,system,spack, etc.
Tools can use this to customize resolution strategies or provenance reports. -
Example:
{ "package": { "name": "zlib", "version": "1.2.11", "package_provider": "vcpkg" } }
-
Compatibility
- Additive change, backward compatible.
- Existing consumers that do not recognize these properties may safely ignore them.
- If accepted into the Supplemental Schema, tools MAY support them.