From 9d94294f30572685c0c259524d17f74625e271b3 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 18 Mar 2021 10:12:42 -0400 Subject: [PATCH 1/2] cmake/generate_version_file: strip whitespace from version.txt contents This avoids having to remember to use `echo -n` or other such bits. --- cmake/generate_version_file.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/generate_version_file.cmake b/cmake/generate_version_file.cmake index 92390efc..4d16fc69 100644 --- a/cmake/generate_version_file.cmake +++ b/cmake/generate_version_file.cmake @@ -10,6 +10,7 @@ if(status AND NOT status EQUAL 0) # for source package files (generated for ubuntu builds on launchpad) read the version from version.txt if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/../version.txt) file(READ ${CMAKE_CURRENT_LIST_DIR}/../version.txt git_version_string ) + string(STRIP "${git_version_string}" git_version_string) else() get_filename_component(git_version_string ${CMAKE_CURRENT_LIST_DIR}/.. NAME) string(REGEX REPLACE "^netgen(.*)" "\\1" git_version_string "${git_version_string}") From 1020b999484ade3bc8f90849011c0b8e0fb216c3 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 18 Mar 2021 10:13:14 -0400 Subject: [PATCH 2/2] cmake/generate_version_file: catch errors at the end The directory-based extraction can fail if the directory was renamed before netgen was configured (e.g., CMake's ExternalProject will generally rename the top-level directory to `src` for consistency). If the directory name extraction failed, an empty string ended up in the binary which causes runtime failures when trying to parse as an integer. --- cmake/generate_version_file.cmake | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cmake/generate_version_file.cmake b/cmake/generate_version_file.cmake index 4d16fc69..eb5e26e6 100644 --- a/cmake/generate_version_file.cmake +++ b/cmake/generate_version_file.cmake @@ -15,12 +15,14 @@ if(status AND NOT status EQUAL 0) get_filename_component(git_version_string ${CMAKE_CURRENT_LIST_DIR}/.. NAME) string(REGEX REPLACE "^netgen(.*)" "\\1" git_version_string "${git_version_string}") endif() - else() - MESSAGE(WARNING "Could not determine git-version from source code - assuming 6.2.0.0") - set(git_version_string "v6.2.0.0") endif() endif() +if (NOT git_version_string) + message(WARNING "Could not determine git-version from source code - assuming 6.2.0.0") + set(git_version_string "v6.2.0.0") +endif () + string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" NETGEN_VERSION_MAJOR "${git_version_string}") string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" NETGEN_VERSION_MINOR "${git_version_string}") string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" NETGEN_VERSION_PATCH "${git_version_string}")