From a3bafb236c30f00cf430f406dbcb28b24836721d Mon Sep 17 00:00:00 2001 From: Antony Polukhin Date: Sun, 12 Apr 2026 20:47:29 +0300 Subject: [PATCH 1/4] feat universal: added userver/version.hpp --- .gitignore | 1 + universal/CMakeLists.txt | 3 +++ universal/version.hpp.in | 7 +++++++ ydb/functional_tests/basic/CMakeLists.txt | 2 +- 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 universal/version.hpp.in diff --git a/.gitignore b/.gitignore index 86b71dadf945..a7d344bca5a7 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ scripts/docs/en/components_schema scripts/docs/en/dynamic_configs scripts/docs/en/versions.md scripts/docs/scripts/versions.js +universal/include/userver/version.hpp diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index e8b6e73a3a8f..15908ef95322 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -163,6 +163,9 @@ target_compile_definitions( "USERVER_NAMESPACE_END=${USERVER_NAMESPACE_END}" "USERVER=1" ) +set(VERSION_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/include/userver/version.hpp) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.hpp.in ${VERSION_CONFIG} ESCAPE_QUOTES @ONLY) + # https://github.com/jemalloc/jemalloc/issues/820 if(USERVER_FEATURE_JEMALLOC AND NOT USERVER_SANITIZE diff --git a/universal/version.hpp.in b/universal/version.hpp.in new file mode 100644 index 000000000000..fe1eae6044b4 --- /dev/null +++ b/universal/version.hpp.in @@ -0,0 +1,7 @@ +#pragma once + +// NOLINTNEXTLINE(cppcoreguidelines-macro-usage) +#cmakedefine USERVER_VERSION_MAJOR "@USERVER_MAJOR_VERSION@" + +// NOLINTNEXTLINE(cppcoreguidelines-macro-usage) +#cmakedefine USERVER_VERSION_MINOR "@USERVER_MINOR_VERSION@" diff --git a/ydb/functional_tests/basic/CMakeLists.txt b/ydb/functional_tests/basic/CMakeLists.txt index b8513317e633..45462714609c 100644 --- a/ydb/functional_tests/basic/CMakeLists.txt +++ b/ydb/functional_tests/basic/CMakeLists.txt @@ -2,7 +2,7 @@ project(userver-ydb-tests-basic CXX) add_executable( ${PROJECT_NAME} "ydb_service.cpp" "views/describe-table/post/view.cpp" "views/select-list/post/view.cpp" - "views/select-rows/post/view.cpp" "views/upsert-row/post/view.cpp" "views/upsert-row-old/post/view.cpp"" + "views/select-rows/post/view.cpp" "views/upsert-row/post/view.cpp" "views/upsert-row-old/post/view.cpp" ) target_link_libraries(${PROJECT_NAME} userver::ydb) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) From c1f9342a1ce539d748ebb74ed29089d20ec33065 Mon Sep 17 00:00:00 2001 From: Antony Polukhin Date: Sun, 12 Apr 2026 22:20:51 +0300 Subject: [PATCH 2/4] fixes --- cmake/GetUserverVersion.cmake | 5 +++-- universal/CMakeLists.txt | 4 ++++ universal/version.hpp.in | 8 ++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/cmake/GetUserverVersion.cmake b/cmake/GetUserverVersion.cmake index ec3817666bf2..649c60497ddb 100644 --- a/cmake/GetUserverVersion.cmake +++ b/cmake/GetUserverVersion.cmake @@ -23,14 +23,15 @@ endif() file(READ ${USERVER_ROOT_DIR}/version.txt VERSION) string(STRIP ${VERSION} VERSION) -string(REGEX MATCH "^([0-9]+)\.([0-9]+[\-a-z0-9]*)" USERVER_MATCHED_VERSION_STRING "${VERSION}") +string(REGEX MATCH "^([0-9]+)\.([0-9]+)([-a-z0-9]*)" USERVER_MATCHED_VERSION_STRING "${VERSION}") if(NOT USERVER_MATCHED_VERSION_STRING STREQUAL VERSION) message(FATAL_ERROR "Failed to retrieve userver major/minor version number from '${VERSION}'") endif() set(USERVER_MAJOR_VERSION ${CMAKE_MATCH_1}) set(USERVER_MINOR_VERSION ${CMAKE_MATCH_2}) +set(USERVER_RELEASE_CANDIDATE ${CMAKE_MATCH_3}) -set(USERVER_VERSION "${USERVER_MAJOR_VERSION}.${USERVER_MINOR_VERSION}") +set(USERVER_VERSION "${USERVER_MAJOR_VERSION}.${USERVER_MINOR_VERSION}${USERVER_RELEASE_CANDIDATE}") string(REPLACE "-" "_" USERVER_VERSION_STR "${USERVER_VERSION}") string(REPLACE "." "_" USERVER_VERSION_STR "${USERVER_VERSION_STR}") set(USERVER_VERSION_STR "v${USERVER_VERSION_STR}") diff --git a/universal/CMakeLists.txt b/universal/CMakeLists.txt index 15908ef95322..36fe09e1a1ea 100644 --- a/universal/CMakeLists.txt +++ b/universal/CMakeLists.txt @@ -164,6 +164,10 @@ target_compile_definitions( ) set(VERSION_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/include/userver/version.hpp) +math(EXPR USERVER_VERSION_FULL "10000 * ${USERVER_MAJOR_VERSION} + 100 * ${USERVER_MINOR_VERSION}") +if(USERVER_RELEASE_CANDIDATE) + math(EXPR USERVER_VERSION_FULL "${USERVER_VERSION_FULL} - 1") +endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.hpp.in ${VERSION_CONFIG} ESCAPE_QUOTES @ONLY) # https://github.com/jemalloc/jemalloc/issues/820 diff --git a/universal/version.hpp.in b/universal/version.hpp.in index fe1eae6044b4..b8e07de7242e 100644 --- a/universal/version.hpp.in +++ b/universal/version.hpp.in @@ -1,7 +1,11 @@ #pragma once // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) -#cmakedefine USERVER_VERSION_MAJOR "@USERVER_MAJOR_VERSION@" +#define USERVER_VERSION_MAJOR @USERVER_MAJOR_VERSION@ // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) -#cmakedefine USERVER_VERSION_MINOR "@USERVER_MINOR_VERSION@" +#define USERVER_VERSION_MINOR @USERVER_MINOR_VERSION@ + +// NOLINTNEXTLINE(cppcoreguidelines-macro-usage) +#define USERVER_VERSION_FULL @USERVER_VERSION_FULL@ + From 810de3a907ecf373673a98c817bae129434a20ff Mon Sep 17 00:00:00 2001 From: Antony Polukhin Date: Sun, 12 Apr 2026 22:49:07 +0300 Subject: [PATCH 3/4] fix --- cmake/GetUserverVersion.cmake | 2 +- universal/version.hpp.in | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmake/GetUserverVersion.cmake b/cmake/GetUserverVersion.cmake index 649c60497ddb..5f6c8ce1b25e 100644 --- a/cmake/GetUserverVersion.cmake +++ b/cmake/GetUserverVersion.cmake @@ -23,7 +23,7 @@ endif() file(READ ${USERVER_ROOT_DIR}/version.txt VERSION) string(STRIP ${VERSION} VERSION) -string(REGEX MATCH "^([0-9]+)\.([0-9]+)([-a-z0-9]*)" USERVER_MATCHED_VERSION_STRING "${VERSION}") +string(REGEX MATCH "^([0-9]+)\.([0-9]+)([\-a-z0-9]*)" USERVER_MATCHED_VERSION_STRING "${VERSION}") if(NOT USERVER_MATCHED_VERSION_STRING STREQUAL VERSION) message(FATAL_ERROR "Failed to retrieve userver major/minor version number from '${VERSION}'") endif() diff --git a/universal/version.hpp.in b/universal/version.hpp.in index b8e07de7242e..2a2d1c7ff604 100644 --- a/universal/version.hpp.in +++ b/universal/version.hpp.in @@ -1,11 +1,11 @@ #pragma once -// NOLINTNEXTLINE(cppcoreguidelines-macro-usage) -#define USERVER_VERSION_MAJOR @USERVER_MAJOR_VERSION@ - -// NOLINTNEXTLINE(cppcoreguidelines-macro-usage) -#define USERVER_VERSION_MINOR @USERVER_MINOR_VERSION@ - +/// Version in form of `10000*major + 100*minor - (is_rc ? 1 : 0)` +/// 2.1 -> 20100 +/// 2.16 -> 21600 +/// 2.16-rc -> 21599 +/// 3.0 -> 30000 +/// 3.0-rc -> 29999 // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) #define USERVER_VERSION_FULL @USERVER_VERSION_FULL@ From ea098f8f54430ad13aa1005fe858c19ef685722a Mon Sep 17 00:00:00 2001 From: Antony Polukhin Date: Sun, 12 Apr 2026 22:51:59 +0300 Subject: [PATCH 4/4] add docs --- universal/version.hpp.in | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/universal/version.hpp.in b/universal/version.hpp.in index 2a2d1c7ff604..4e42a6fbc94b 100644 --- a/universal/version.hpp.in +++ b/universal/version.hpp.in @@ -1,11 +1,18 @@ #pragma once -/// Version in form of `10000*major + 100*minor - (is_rc ? 1 : 0)` +/// @file userver/version.hpp +/// @brief Version macro + +/// @brief Version in form of `10000*major + 100*minor - (is_rc ? 1 : 0)` +/// +/// Examples: +/// @code /// 2.1 -> 20100 /// 2.16 -> 21600 /// 2.16-rc -> 21599 /// 3.0 -> 30000 /// 3.0-rc -> 29999 +/// @endcode // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) #define USERVER_VERSION_FULL @USERVER_VERSION_FULL@