authorgravatar for jay@jayschwa.netJay Petacat <jay@jayschwa.net> 2020-12-14 21:09:13-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-29 13:17:08-08:00
logbbe2cca1ae32af322abcf4cc4a6d6bee671bf5b8
tree2133d3804817c6cd5c471db2a3f5a1f07bb07e6c
parent8078d8cd3fb989b0c7a26adde0ee2486e1f473f8

Comply with semantic versioning pre-release format

Example version: 0.8.0-dev.460+g81b343a16 From a semantic versioning perspective, development builds will now be considered distinct from a tagged release. The number of commits added since the last tag is included in the pre-release component. Updates #6466

1 files changed, 21 insertions(+), 8 deletions(-)

CMakeLists.txt+21-8
......@@ -25,8 +25,8 @@ project(zig C CXX)
2525set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
2626
2727set(ZIG_VERSION_MAJOR 0)
28set(ZIG_VERSION_MINOR 7)
29set(ZIG_VERSION_PATCH 1)
28set(ZIG_VERSION_MINOR 8)
29set(ZIG_VERSION_PATCH 0)
3030set(ZIG_VERSION "" CACHE STRING "Override Zig version string. Default is to find out with git.")
3131
3232if("${ZIG_VERSION}" STREQUAL "")
......@@ -34,18 +34,31 @@ if("${ZIG_VERSION}" STREQUAL "")
3434 find_program(GIT_EXE NAMES git)
3535 if(GIT_EXE)
3636 execute_process(
37 COMMAND ${GIT_EXE} -C ${CMAKE_SOURCE_DIR} name-rev HEAD --tags --name-only --no-undefined --always
37 COMMAND ${GIT_EXE} -C ${CMAKE_SOURCE_DIR} describe --match *.*.* --tags
3838 RESULT_VARIABLE EXIT_STATUS
39 OUTPUT_VARIABLE ZIG_GIT_REV
39 OUTPUT_VARIABLE GIT_DESCRIBE
4040 OUTPUT_STRIP_TRAILING_WHITESPACE
4141 ERROR_QUIET)
4242 if(EXIT_STATUS EQUAL "0")
43 if(ZIG_GIT_REV MATCHES "\\^0$")
44 if(NOT("${ZIG_GIT_REV}" STREQUAL "${ZIG_VERSION}^0"))
45 message("WARNING: Tag does not match configured Zig version")
43 if(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)$")
44 # Tagged release version.
45 set(GIT_TAG ${CMAKE_MATCH_1})
46 if(NOT GIT_TAG VERSION_EQUAL ZIG_VERSION)
47 message(SEND_ERROR "Configured Zig version (${ZIG_VERSION}) does not match Git tag (${GIT_TAG}).")
4648 endif()
49 elseif(GIT_DESCRIBE MATCHES "^v?([0-9]+\\.[0-9]+\\.[0-9]+)-([0-9]+)-(.+)$")
50 # Untagged pre-release. The Zig version is updated to include the number of commits
51 # since the last tagged version and the commit hash. The version is formatted in
52 # accordance with the https://semver.org specification.
53 set(GIT_TAG ${CMAKE_MATCH_1})
54 set(GIT_COMMITS_AFTER_TAG ${CMAKE_MATCH_2})
55 set(GIT_COMMIT ${CMAKE_MATCH_3})
56 if(NOT ZIG_VERSION VERSION_GREATER GIT_TAG)
57 message(SEND_ERROR "Configured Zig version (${ZIG_VERSION}) must be greater than tagged ancestor (${GIT_TAG}).")
58 endif()
59 set(ZIG_VERSION "${ZIG_VERSION}-dev.${GIT_COMMITS_AFTER_TAG}+${GIT_COMMIT}")
4760 else()
48 set(ZIG_VERSION "${ZIG_VERSION}+${ZIG_GIT_REV}")
61 message(WARNING "Failed to parse version from output of `git describe`.")
4962 endif()
5063 endif()
5164 endif()