Skip to content
Merged
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
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ if(NOT CMAKE_BUILD_TYPE)
endif()
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")

set(GIT_COMMIT "" CACHE STRING "Git commit hash (skips git invocation if set)")

option(LIBDDWAF_BUILD_SHARED "Build shared library" ON)
option(LIBDDWAF_BUILD_STATIC "Build shared library" ON)
option(LIBDDWAF_TESTING "Load test subdirectories and targets" ON)
Expand Down
25 changes: 15 additions & 10 deletions cmake/package.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,25 @@ set(CPACK_GENERATOR "TGZ")
set(CPACK_SOURCE_GENERATOR "TGZ")

## Package name
execute_process(COMMAND git describe --exact-match --tags HEAD
WORKING_DIRECTORY ${libddwaf_SOURCE_DIR}
OUTPUT_VARIABLE DDWAF_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)

if (NOT DDWAF_VERSION)
if(GIT_COMMIT)
set(DDWAF_VERSION ${CMAKE_PROJECT_VERSION})
execute_process(COMMAND git rev-parse --short HEAD
string(SUBSTRING "${GIT_COMMIT}" 0 7 SHORT_BUILD_ID)
else()
Comment on lines +25 to +28

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve tag-based package naming when GIT_COMMIT set

When GIT_COMMIT is provided, the code skips the tag check and always derives DDWAF_VERSION from CMAKE_PROJECT_VERSION while also unconditionally setting SHORT_BUILD_ID, which means CPACK_PACKAGE_FILE_NAME will always get a -<short> suffix even for tagged releases. In environments without a git checkout (the stated use case), this changes the filename format compared to the tagged build path (which previously produced no suffix), so release pipelines or consumers expecting tag-named artifacts can break when they pass GIT_COMMIT (e.g., building from a release tarball). Consider mirroring the tag behavior when GIT_COMMIT is set or making the suffix conditional.

Useful? React with 👍 / 👎.

execute_process(COMMAND git describe --exact-match --tags HEAD
WORKING_DIRECTORY ${libddwaf_SOURCE_DIR}
OUTPUT_VARIABLE SHORT_BUILD_ID
OUTPUT_VARIABLE DDWAF_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)

if (NOT DDWAF_VERSION)
set(DDWAF_VERSION ${CMAKE_PROJECT_VERSION})
execute_process(COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${libddwaf_SOURCE_DIR}
OUTPUT_VARIABLE SHORT_BUILD_ID
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
endif()

set(CPACK_PACKAGE_FILE_NAME ${CMAKE_PROJECT_NAME}-${DDWAF_VERSION}-${CMAKE_SYSTEM_NAME}-${LIBDDWAF_PACKAGE_PROCESSOR})
Expand Down
14 changes: 9 additions & 5 deletions cmake/shared.cmake
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
execute_process(COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${libddwaf_SOURCE_DIR}
OUTPUT_VARIABLE BUILD_ID
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(GIT_COMMIT)
set(BUILD_ID "${GIT_COMMIT}")
else()
execute_process(COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${libddwaf_SOURCE_DIR}
OUTPUT_VARIABLE BUILD_ID
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()

message(STATUS "Build id is ${BUILD_ID}")
string(SUBSTRING "${BUILD_ID}" 0 2 BUILD_ID_PREFIX)
Expand Down
Loading