diff --git a/CHANGELOG.md b/CHANGELOG.md index aec4f0d66..aa6ef8c73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ - FIXED: Added a variable to preprocessor guard in file osrm-backend/include/util/range_table.hpp to solve build error. [#6596](https://github.com/Project-OSRM/osrm-backend/pull/6596) - FIXED: Ensure required file check in osrm-routed is correctly enforced. [#6655](https://github.com/Project-OSRM/osrm-backend/pull/6655) - FIXED: Correct HTTP docs to reflect summary output dependency on steps parameter. [#6655](https://github.com/Project-OSRM/osrm-backend/pull/6655) + - ADDED: Extract prerelease/build information from package semver [#6839](https://github.com/Project-OSRM/osrm-backend/pull/6839) - Profiles: - FIXED: Bicycle and foot profiles now don't route on proposed ways [#6615](https://github.com/Project-OSRM/osrm-backend/pull/6615) - Routing: diff --git a/CMakeLists.txt b/CMakeLists.txt index cf18d6ac4..1230bc310 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,14 +73,17 @@ include(JSONParser) file(READ "package.json" packagejsonraw) sbeParseJson(packagejson packagejsonraw) -if (packagejson.version MATCHES "^([0-9]+)\.([0-9]+)\.([0-9]+)") - set(OSRM_VERSION_MAJOR ${CMAKE_MATCH_1}) - set(OSRM_VERSION_MINOR ${CMAKE_MATCH_2}) - set(OSRM_VERSION_PATCH ${CMAKE_MATCH_3}) +# This regex is not strict enough, but the correct one is too complicated for cmake matching. +# https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string +if (packagejson.version MATCHES "^([0-9]+)\.([0-9]+)\.([0-9]+)([-+][0-9a-zA-Z.-]+)?$") + set(OSRM_VERSION_MAJOR ${CMAKE_MATCH_1}) + set(OSRM_VERSION_MINOR ${CMAKE_MATCH_2}) + set(OSRM_VERSION_PATCH ${CMAKE_MATCH_3}) + set(OSRM_VERSION_PRERELEASE_BUILD ${CMAKE_MATCH_4}) - set(OSRM_VERSION "${OSRM_VERSION_MAJOR}.${OSRM_VERSION_MINOR}.${OSRM_VERSION_PATCH}") + set(OSRM_VERSION packagejson.version) else() - message(FATAL_ERROR "Version from package.json cannot be parsed, expected semver compatible X.Y.Z, but found ${packagejson.version}") + message(FATAL_ERROR "Version from package.json cannot be parsed, expected semver compatible label, but found ${packagejson.version}") endif() if (MSVC) diff --git a/include/util/version.hpp.in b/include/util/version.hpp.in index 7f830bb3b..67b0b4fc7 100644 --- a/include/util/version.hpp.in +++ b/include/util/version.hpp.in @@ -1,12 +1,13 @@ #ifndef VERSION_HPP #define VERSION_HPP -#define OSRM_VERSION_MAJOR @OSRM_VERSION_MAJOR@ -#define OSRM_VERSION_MINOR @OSRM_VERSION_MINOR@ -#define OSRM_VERSION_PATCH @OSRM_VERSION_PATCH@ +#define OSRM_VERSION_MAJOR @OSRM_VERSION_MAJOR@ +#define OSRM_VERSION_MINOR @OSRM_VERSION_MINOR@ +#define OSRM_VERSION_PATCH @OSRM_VERSION_PATCH@ +#define OSRM_VERSION_PRERELEASE_BUILD "@OSRM_VERSION_PRERELEASE_BUILD@" -#define OSRM_VERSION__(A,B,C) "v" #A "." #B "." #C -#define OSRM_VERSION_(A,B,C) OSRM_VERSION__(A,B,C) -#define OSRM_VERSION OSRM_VERSION_(OSRM_VERSION_MAJOR, OSRM_VERSION_MINOR, OSRM_VERSION_PATCH) +#define OSRM_VERSION__(A,B,C,D) "v" #A "." #B "." #C D +#define OSRM_VERSION_(A,B,C,D) OSRM_VERSION__(A,B,C,D) +#define OSRM_VERSION OSRM_VERSION_(OSRM_VERSION_MAJOR, OSRM_VERSION_MINOR, OSRM_VERSION_PATCH, OSRM_VERSION_PRERELEASE_BUILD) #endif // VERSION_HPP