SBOM: Handle PACKAGE_URL argument

This commit is contained in:
Tom Osika
2026-05-21 16:31:36 -04:00
parent 5f9916065f
commit 7c31cbf9ae
9 changed files with 30 additions and 0 deletions

View File

@@ -56,6 +56,7 @@ cmExportSbomGenerator::cmExportSbomGenerator(cmSbomArguments args)
, PackageDescription(std::move(args.Description))
, PackageWebsite(std::move(args.Website))
, PackageLicense(std::move(args.License))
, PackageUrl(std::move(args.PackageUrl))
, PackageFormat(args.GetFormat())
{
}

View File

@@ -41,6 +41,7 @@ public:
SbomFormat GetFormat() const;
ArgumentParser::NonEmpty<std::string> Format;
ArgumentParser::NonEmpty<std::string> PackageUrl;
protected:
cm::string_view CommandName() const override;
@@ -54,6 +55,7 @@ private:
cmProjectInfoArguments* const base = self;
Bind(base, parser, "SBOM"_s, &cmProjectInfoArguments::PackageName);
Bind(self, parser, "FORMAT"_s, &cmSbomArguments::Format);
Bind(self, parser, "PACKAGE_URL"_s, &cmSbomArguments::PackageUrl);
cmProjectInfoArguments::Bind(parser, self);
}
};

View File

@@ -1,2 +1,3 @@
file(READ "${RunCMake_TEST_BINARY_DIR}/sbom/test_targets/test_targets.spdx.json" content)
include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadata-install-check.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadataExplicitAssertions.cmake)

View File

@@ -6,5 +6,6 @@ export(
DESCRIPTION "An eloquent description"
LICENSE "BSD-3"
HOMEPAGE_URL "www.example.com"
PACKAGE_URL "https://example.com/test_targets.tar.gz"
VERSION "1.3.4"
)

View File

@@ -28,3 +28,4 @@ run_cmake_install(Requirements)
run_cmake_install(MissingPackageNamespace)
run_cmake_install(ReferencesNonExportedTarget)
run_cmake_install(ProjectMetadata)

View File

@@ -1,2 +1,3 @@
file(READ "${RunCMake_TEST_INSTALL_DIR}/test_targets.spdx.json" content)
include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadata-install-check.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/../Sbom/ProjectMetadataExplicitAssertions.cmake)

View File

@@ -5,6 +5,7 @@ install(
DESCRIPTION "An eloquent description"
LICENSE "BSD-3"
HOMEPAGE_URL "www.example.com"
PACKAGE_URL "https://example.com/test_targets.tar.gz"
VERSION "1.3.4"
EXPORT test_targets
DESTINATION .

View File

@@ -29,3 +29,4 @@ run_cmake_install(Requirements)
run_cmake_install(IgnoresInterfaceDirs)
run_cmake_install(MissingPackageNamespace)
run_cmake_install(ReferencesNonExportedTarget)
run_cmake_install(ProjectMetadata)

View File

@@ -0,0 +1,21 @@
include(${CMAKE_CURRENT_LIST_DIR}/Assertions.cmake)
set(DOCUMENT_METADATA_EXPECTED [=[
{
"description" : "An eloquent description",
"dataLicense" : "BSD-3"
}
]=])
set(PACKAGE_METADATA_EXPECTED [=[
{
"spdxId" : "urn:test#Package",
"software_packageVersion" : "1.3.4",
"software_homePage" : "www.example.com",
"software_downloadLocation" : "https://example.com/test_targets.tar.gz"
}
]=])
string(JSON SPDX_DOCUMENT GET "${content}" "@graph" "1")
expect_object("${SPDX_DOCUMENT}" DOCUMENT_METADATA_EXPECTED)
expect_object("${SPDX_DOCUMENT}" PACKAGE_METADATA_EXPECTED "rootElement")