Extract prerelease/build information from package semver (#6839)
* Extract prerelease/build information from package semver Currently we only extract the major.minor.patch identifiers from the semver label stored in package.json. This leads to version information in executables incorrectly reporting a release version is running on prereleases and special builds. This commit is a quickfix to extract this information and report it in version strings. CMake regex parsing is not sophisticated enough to handle the full semver regex, so we might need to explore other CMake modules if we want to strictly parse the label.
This commit is contained in:
parent
8526cc7d45
commit
d0e3e2af23
@ -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:
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user