Skip to content
Merged

Dev #124

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@


..
SPDX-FileCopyrightText: 2023-2025 Jochem Rutgers
SPDX-FileCopyrightText: 2023-2026 Jochem Rutgers

SPDX-License-Identifier: CC0-1.0

Expand All @@ -25,7 +25,19 @@ Added

...

.. _Unreleased: https://github.com/DEMCON/cmake-sbom/compare/v1.4.0...HEAD
.. _Unreleased: https://github.com/DEMCON/cmake-sbom/compare/v1.4.1...HEAD



`1.4.1`_ - 2026-04-07
---------------------

Fixed
`````

- #123: Fix handling spaces in paths.

.. _1.4.1: https://github.com/DEMCON/cmake-sbom/releases/tag/v1.4.1



Expand Down
28 changes: 13 additions & 15 deletions cmake/git_version.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023-2025 Jochem Rutgers
# SPDX-FileCopyrightText: 2023-2026 Jochem Rutgers
#
# SPDX-License-Identifier: MIT

Expand Down Expand Up @@ -45,14 +45,14 @@ function(version_extract)

if(Git_FOUND)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
COMMAND "${GIT_EXECUTABLE}" rev-parse --short HEAD
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
OUTPUT_VARIABLE version_git_head
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
)

execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
COMMAND "${GIT_EXECUTABLE}" rev-parse HEAD
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
OUTPUT_VARIABLE version_git_hash
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
Expand All @@ -64,7 +64,7 @@ function(version_extract)

if("${GIT_VERSION_BRANCH}" STREQUAL "")
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
COMMAND "${GIT_EXECUTABLE}" rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
OUTPUT_VARIABLE version_git_branch
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
Expand All @@ -79,7 +79,7 @@ function(version_extract)

if("${GIT_VERSION_TAG}" STREQUAL "")
execute_process(
COMMAND ${GIT_EXECUTABLE} tag --points-at HEAD
COMMAND "${GIT_EXECUTABLE}" tag --points-at HEAD
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
OUTPUT_VARIABLE version_git_tag
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
Expand All @@ -91,7 +91,7 @@ function(version_extract)
endif()

execute_process(
COMMAND ${GIT_EXECUTABLE} status -s
COMMAND "${GIT_EXECUTABLE}" status -s
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
OUTPUT_VARIABLE version_git_dirty
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
Expand All @@ -103,7 +103,7 @@ function(version_extract)

macro(git_hash TAG TAG_VAR)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse ${TAG}
COMMAND "${GIT_EXECUTABLE}" rev-parse ${TAG}
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
OUTPUT_VARIABLE ${TAG_VAR}_
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
Expand All @@ -116,7 +116,7 @@ function(version_extract)
endmacro()

execute_process(
COMMAND ${GIT_EXECUTABLE} tag
COMMAND "${GIT_EXECUTABLE}" tag
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_TAGS
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
Expand All @@ -136,7 +136,7 @@ function(version_extract)
endif()

execute_process(
COMMAND ${GIT_EXECUTABLE} show --no-patch --format=%ci
COMMAND "${GIT_EXECUTABLE}" show --no-patch --format=%ci
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_TIMESTAMP
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
Expand Down Expand Up @@ -166,9 +166,7 @@ function(version_extract)
string(REGEX REPLACE "[^A-Za-z0-9]+" "+" _version_git_branch
"${version_git_branch}"
)
set(GIT_VERSION
"${version_git_head}+${_version_git_branch}${version_git_dirty}"
)
set(GIT_VERSION "${version_git_head}+${_version_git_branch}${version_git_dirty}")
endif()

set(GIT_VERSION
Expand Down Expand Up @@ -291,13 +289,13 @@ function(version_generate)
string(REGEX REPLACE "[^A-Z0-9]+" "_" PROJECT_NAME_UC "${PROJECT_NAME_UC}")

configure_file(
${VERSION_SOURCE_DIR}/git_version.sh.in ${PROJECT_BINARY_DIR}/version.sh
"${VERSION_SOURCE_DIR}/git_version.sh.in" "${PROJECT_BINARY_DIR}/version.sh"
ESCAPE_QUOTES @ONLY
)

configure_file(
${VERSION_SOURCE_DIR}/git_version.h.in
${PROJECT_BINARY_DIR}/include/${PROJECT_NAME}_version.h ESCAPE_QUOTES @ONLY
"${VERSION_SOURCE_DIR}/git_version.h.in"
"${PROJECT_BINARY_DIR}/include/${PROJECT_NAME}_version.h" ESCAPE_QUOTES @ONLY
)
file(WRITE ${PROJECT_BINARY_DIR}/version.txt "${GIT_VERSION}")

Expand Down
24 changes: 12 additions & 12 deletions cmake/sbom.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023-2025 Jochem Rutgers
# SPDX-FileCopyrightText: 2023-2026 Jochem Rutgers
#
# SPDX-License-Identifier: MIT

Expand Down Expand Up @@ -459,22 +459,22 @@ function(sbom_finalize)

get_property(_packages GLOBAL PROPERTY sbom_packages)
foreach(_p IN LISTS _packages)
file(APPEND ${PROJECT_BINARY_DIR}/sbom/CMakeLists.txt "install(SCRIPT ${_p})
file(APPEND ${PROJECT_BINARY_DIR}/sbom/CMakeLists.txt "install(SCRIPT \"${_p}\")
"
)
endforeach()

get_property(_licenses GLOBAL PROPERTY sbom_licenses)
foreach(_lic IN LISTS _licenses)
file(APPEND ${PROJECT_BINARY_DIR}/sbom/CMakeLists.txt
"install(SCRIPT ${PROJECT_BINARY_DIR}/sbom/${_lic}.cmake)
"install(SCRIPT \"${PROJECT_BINARY_DIR}/sbom/${_lic}.cmake\")
"
)
endforeach()

get_property(_relations GLOBAL PROPERTY sbom_relations)
foreach(_rel IN LISTS _relations)
file(APPEND ${PROJECT_BINARY_DIR}/sbom/CMakeLists.txt "install(SCRIPT ${_rel})
file(APPEND ${PROJECT_BINARY_DIR}/sbom/CMakeLists.txt "install(SCRIPT \"${_rel}\")
"
)
endforeach()
Expand Down Expand Up @@ -523,7 +523,7 @@ function(sbom_finalize)
"
message(STATUS \"Verifying: ${_sbom}\")
execute_process(
COMMAND ${Python3_EXECUTABLE} -m spdx_tools.spdx.clitools.pyspdxtools
COMMAND \"${Python3_EXECUTABLE}\" -m spdx_tools.spdx.clitools.pyspdxtools
-i \"${_sbom}\" ${_graph}
RESULT_VARIABLE _res
)
Expand All @@ -532,7 +532,7 @@ function(sbom_finalize)
endif()

execute_process(
COMMAND ${Python3_EXECUTABLE} -m ntia_conformance_checker.main
COMMAND \"${Python3_EXECUTABLE}\" -m ntia_conformance_checker.main
--file \"${_sbom}\"
RESULT_VARIABLE _res
)
Expand Down Expand Up @@ -725,7 +725,7 @@ FileCopyrightText: NOASSERTION${relationship}
"
)

install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/${SBOM_FILE_SPDXID}.cmake)
install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/${SBOM_FILE_SPDXID}.cmake")
endfunction()

# Append a target output to the SBOM. Use this after calling sbom_generate().
Expand Down Expand Up @@ -875,7 +875,7 @@ Relationship: ${SBOM_DIRECTORY_RELATIONSHIP}-\${_count}
"
)

install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/${SBOM_DIRECTORY_SPDXID}.cmake)
install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/${SBOM_DIRECTORY_SPDXID}.cmake")

set(SBOM_LAST_SPDXID
""
Expand Down Expand Up @@ -1250,7 +1250,7 @@ function(reuse_lint)
set(REUSE_LINT_TARGET ${PROJECT_NAME}-reuse-lint)
endif()

if(REUSE_LINT_ALL OR NOT REUSE_LINT_CONFIG)
if(REUSE_LINT_ALL AND NOT REUSE_LINT_CONFIG)
set(lint_all ALL)
else()
set(lint_all)
Expand All @@ -1262,7 +1262,7 @@ function(reuse_lint)
add_custom_target(
${REUSE_LINT_TARGET}
${lint_all}
COMMAND ${Python3_EXECUTABLE} -m reuse --root "${PROJECT_SOURCE_DIR}" lint
COMMAND "${Python3_EXECUTABLE}" -m reuse --root "${PROJECT_SOURCE_DIR}" lint
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
VERBATIM
)
Expand All @@ -1274,7 +1274,7 @@ function(reuse_lint)
# It seems that there is a race in linting and generating build artifacts. So, run
# this (also) during config, to make sure that there is nothing else going on.
execute_process(
COMMAND ${Python3_EXECUTABLE} -m reuse --root "${PROJECT_SOURCE_DIR}" lint
COMMAND "${Python3_EXECUTABLE}" -m reuse --root "${PROJECT_SOURCE_DIR}" lint
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE res
)
Expand Down Expand Up @@ -1306,7 +1306,7 @@ function(reuse_spdx)

add_custom_target(
${REUSE_SPDX_TARGET} ALL
COMMAND ${Python3_EXECUTABLE} -m reuse --root "${PROJECT_SOURCE_DIR}" spdx
COMMAND "${Python3_EXECUTABLE}" -m reuse --root "${PROJECT_SOURCE_DIR}" spdx
-o "${REUSE_SPDX_OUTPUT}"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
VERBATIM
Expand Down
6 changes: 3 additions & 3 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023-2025 Jochem Rutgers
# SPDX-FileCopyrightText: 2023-2026 Jochem Rutgers
#
# SPDX-License-Identifier: MIT

Expand Down Expand Up @@ -48,12 +48,12 @@ include(git_version)
${TEST_TARGET}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${name}.cmake
COMMAND
${CMAKE_COMMAND} -E env ${TEST_ENV} ${CMAKE_COMMAND} "${_dir}/src" -G
"${CMAKE_COMMAND}" -E env ${TEST_ENV} ${CMAKE_COMMAND} "${_dir}/src" -G
"${CMAKE_GENERATOR}" "-DCMAKE_INSTALL_PREFIX=${_dir}/out"
"-DCMAKE_MODULE_PATH=${PROJECT_SOURCE_DIR}/cmake"
"-DPython3_EXECUTABLE=${Python3_EXECUTABLE}"
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
COMMAND ${CMAKE_COMMAND} --build . --target install
COMMAND "${CMAKE_COMMAND}" --build . --target install
WORKING_DIRECTORY "${_dir}/build"
COMMENT "Testing ${name}"
VERBATIM
Expand Down
4 changes: 2 additions & 2 deletions test/external.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023-2024 Jochem Rutgers
# SPDX-FileCopyrightText: 2023-2026 Jochem Rutgers
#
# SPDX-License-Identifier: MIT

Expand All @@ -13,7 +13,7 @@ file(
WRITE ${CMAKE_CURRENT_BINARY_DIR}/other/CMakeLists.txt
"
project(other)
sbom_generate(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/other-sbom.spdx)
sbom_generate(OUTPUT \"${CMAKE_CURRENT_BINARY_DIR}/other-sbom.spdx\")
sbom_finalize()
"
)
Expand Down
4 changes: 2 additions & 2 deletions test/input_doc.cmake
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# SPDX-FileCopyrightText: 2023-2024 Jochem Rutgers
# SPDX-FileCopyrightText: 2023-2026 Jochem Rutgers
#
# SPDX-License-Identifier: MIT

@TEST_PREAMBLE@

include(sbom)

sbom_generate(INPUT @CMAKE_CURRENT_LIST_DIR@/input_doc.spdx.in COPYRIGHT "2023 me")
sbom_generate(INPUT "@CMAKE_CURRENT_LIST_DIR@/input_doc.spdx.in" COPYRIGHT "2023 me")

sbom_finalize()