From 0b0993d4ab9969dd151e50e8dfc13ca72b2287c2 Mon Sep 17 00:00:00 2001 From: Josef Melkus Date: Thu, 9 Apr 2026 13:53:11 +0200 Subject: [PATCH 1/4] feat: add function for parsing version from version.txt --- system_modules/CMUTIL_VERSION.cmake | 29 ++++++++++++++++++++++++++++- test/VERSION/CMakeLists.txt | 7 +++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/system_modules/CMUTIL_VERSION.cmake b/system_modules/CMUTIL_VERSION.cmake index 896113e..a461a88 100644 --- a/system_modules/CMUTIL_VERSION.cmake +++ b/system_modules/CMUTIL_VERSION.cmake @@ -106,13 +106,40 @@ ENDFUNCTION() +## +# +# Locate ${CMAKE_CURRENT_LIST_DIR}/version.txt, and parse the version. +# The version is expected to be defined as a key-value `version=X.Y.Z` +# +# If the version.txt file doesn't exist, or doesn't contain version key-value, an error occurs +# +# ( +# +# ) +FUNCTION(CMUTIL_VERSION_GET_FROM_VERSION_FILE output_var) + SET(version_file ${ARGN}) + IF("${version_file}" STREQUAL "") + SET(version_file "${CMAKE_CURRENT_SOURCE_DIR}/version.txt") + ENDIF() + + CMUTIL_PROPERTY_FILE_READ("${version_file}" inject) + IF(NOT inject_version) + MESSAGE(FATAL_ERROR "${version_file} is not valid") + ENDIF() + CMUTIL_VERSION_CHECK(${inject_version}) + + SET(${output_var} ${inject_version} PARENT_SCOPE) +ENDFUNCTION() + + + ## # # Locate ${CMAKE_CURRENT_LIST_DIR}/version.txt, # read the first line and compare version stored in version.txt # with ${version}. # -# If versions does not match error occurres. +# If versions does not match error occurs. # # ( # diff --git a/test/VERSION/CMakeLists.txt b/test/VERSION/CMakeLists.txt index 0eed231..15f40cc 100644 --- a/test/VERSION/CMakeLists.txt +++ b/test/VERSION/CMakeLists.txt @@ -32,6 +32,13 @@ ENDIF() CMUTIL_VERSION_VALIDATE_VERSION_FILE_FOR("1.58.3") +CMUTIL_VERSION_GET_FROM_VERSION_FILE(parsed_version) +IF (NOT parsed_version STREQUAL "1.58.3") + MESSAGE(FATAL_ERROR " Error when parsing version from version.txt. Expected: \"1.58.3\", Actual: ${parsed_version}") +ELSE () + MESSAGE("Passed test for: CMUTIL_VERSION_GET_FROM_VERSION_FILE") +ENDIF() + CMUTIL_VERSION_NORMALIZE(version_normalized "1.58.3") IF(NOT version_normalized STREQUAL "001058003") From 66ea4a90adfe67567006e09b26122f370eeb2066 Mon Sep 17 00:00:00 2001 From: Josef Melkus Date: Thu, 9 Apr 2026 14:52:39 +0200 Subject: [PATCH 2/4] doc: sync doc and real code variable name --- system_modules/CMUTIL_VERSION.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system_modules/CMUTIL_VERSION.cmake b/system_modules/CMUTIL_VERSION.cmake index a461a88..70cd83e 100644 --- a/system_modules/CMUTIL_VERSION.cmake +++ b/system_modules/CMUTIL_VERSION.cmake @@ -108,7 +108,7 @@ ENDFUNCTION() ## # -# Locate ${CMAKE_CURRENT_LIST_DIR}/version.txt, and parse the version. +# Locate ${CMAKE_CURRENT_SOURCE_DIR}/version.txt, and parse the version. # The version is expected to be defined as a key-value `version=X.Y.Z` # # If the version.txt file doesn't exist, or doesn't contain version key-value, an error occurs @@ -135,7 +135,7 @@ ENDFUNCTION() ## # -# Locate ${CMAKE_CURRENT_LIST_DIR}/version.txt, +# Locate ${CMAKE_CURRENT_SOURCE_DIR}/version.txt, # read the first line and compare version stored in version.txt # with ${version}. # From 576932a5dc24f7237fb1fccfa380e32ff9e2c397 Mon Sep 17 00:00:00 2001 From: Josef Melkus Date: Thu, 9 Apr 2026 15:16:12 +0200 Subject: [PATCH 3/4] make sure inject_version is not from parent scope --- system_modules/CMUTIL_VERSION.cmake | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/system_modules/CMUTIL_VERSION.cmake b/system_modules/CMUTIL_VERSION.cmake index 70cd83e..898bdb6 100644 --- a/system_modules/CMUTIL_VERSION.cmake +++ b/system_modules/CMUTIL_VERSION.cmake @@ -122,13 +122,14 @@ FUNCTION(CMUTIL_VERSION_GET_FROM_VERSION_FILE output_var) SET(version_file "${CMAKE_CURRENT_SOURCE_DIR}/version.txt") ENDIF() + UNSET(inject_version) CMUTIL_PROPERTY_FILE_READ("${version_file}" inject) - IF(NOT inject_version) + IF(NOT DEFINED inject_version OR "${inject_version}" STREQUAL "") MESSAGE(FATAL_ERROR "${version_file} is not valid") ENDIF() - CMUTIL_VERSION_CHECK(${inject_version}) + CMUTIL_VERSION_CHECK("${inject_version}") - SET(${output_var} ${inject_version} PARENT_SCOPE) + SET(${output_var} "${inject_version}" PARENT_SCOPE) ENDFUNCTION() @@ -151,11 +152,12 @@ FUNCTION(CMUTIL_VERSION_VALIDATE_VERSION_FILE_FOR version) SET(version_file "${CMAKE_CURRENT_SOURCE_DIR}/version.txt") ENDIF() + UNSET(inject_version) CMUTIL_PROPERTY_FILE_READ("${version_file}" inject) - IF(NOT inject_version) + IF(NOT DEFINED inject_version OR "${inject_version}" STREQUAL "") MESSAGE(FATAL_ERROR "${version_file} is not valid") ENDIF() - CMUTIL_VERSION_CHECK(${inject_version}) + CMUTIL_VERSION_CHECK("${inject_version}") IF(NOT version STREQUAL inject_version) MESSAGE(FATAL_ERROR "${version_file} is not in sync with current branch (${version} vs. ${inject_version})") ENDIF() From 7a6f9c10a4bfecd18dcd11fee114ec2231e89737 Mon Sep 17 00:00:00 2001 From: Josef Melkus Date: Thu, 9 Apr 2026 15:24:05 +0200 Subject: [PATCH 4/4] ensure sure inject_version is not from parent scope --- system_modules/CMUTIL_VERSION.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system_modules/CMUTIL_VERSION.cmake b/system_modules/CMUTIL_VERSION.cmake index 898bdb6..df3b350 100644 --- a/system_modules/CMUTIL_VERSION.cmake +++ b/system_modules/CMUTIL_VERSION.cmake @@ -122,7 +122,7 @@ FUNCTION(CMUTIL_VERSION_GET_FROM_VERSION_FILE output_var) SET(version_file "${CMAKE_CURRENT_SOURCE_DIR}/version.txt") ENDIF() - UNSET(inject_version) + SET(inject_version "") CMUTIL_PROPERTY_FILE_READ("${version_file}" inject) IF(NOT DEFINED inject_version OR "${inject_version}" STREQUAL "") MESSAGE(FATAL_ERROR "${version_file} is not valid") @@ -152,7 +152,7 @@ FUNCTION(CMUTIL_VERSION_VALIDATE_VERSION_FILE_FOR version) SET(version_file "${CMAKE_CURRENT_SOURCE_DIR}/version.txt") ENDIF() - UNSET(inject_version) + SET(inject_version "") CMUTIL_PROPERTY_FILE_READ("${version_file}" inject) IF(NOT DEFINED inject_version OR "${inject_version}" STREQUAL "") MESSAGE(FATAL_ERROR "${version_file} is not valid")