2022-01-03 18:23:58 +03:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
#
|
|
|
|
# This file is part of Nominatim. (https://nominatim.org)
|
|
|
|
#
|
|
|
|
# Copyright (C) 2022 by the Nominatim developer community.
|
|
|
|
# For a full list of authors see the git log.
|
2021-01-27 00:45:24 +03:00
|
|
|
"""
|
|
|
|
Version information for Nominatim.
|
|
|
|
"""
|
2022-12-13 12:36:19 +03:00
|
|
|
from typing import Optional, NamedTuple
|
2021-01-27 00:45:24 +03:00
|
|
|
|
2022-12-13 12:36:19 +03:00
|
|
|
class NominatimVersion(NamedTuple):
|
|
|
|
""" Version information for Nominatim. We follow semantic versioning.
|
|
|
|
|
|
|
|
Major, minor and patch_level refer to the last released version.
|
|
|
|
The database patch level tracks important changes between releases
|
|
|
|
and must always be increased when there is a change to the database or code
|
|
|
|
that requires a migration.
|
|
|
|
|
|
|
|
When adding a migration on the development branch, raise the patch level
|
|
|
|
to 99 to make sure that the migration is applied when updating from a
|
|
|
|
patch release to the next minor version. Patch releases usually shouldn't
|
|
|
|
have migrations in them. When they are needed, then make sure that the
|
|
|
|
migration can be reapplied and set the migration version to the appropriate
|
|
|
|
patch level when cherry-picking the commit with the migration.
|
|
|
|
"""
|
|
|
|
|
|
|
|
major: int
|
|
|
|
minor: int
|
|
|
|
patch_level: int
|
|
|
|
db_patch_level: int
|
|
|
|
|
|
|
|
def __str__(self) -> str:
|
|
|
|
return f"{self.major}.{self.minor}.{self.patch_level}-{self.db_patch_level}"
|
|
|
|
|
|
|
|
|
|
|
|
NOMINATIM_VERSION = NominatimVersion(4, 2, 99, 0)
|
2021-02-24 00:50:23 +03:00
|
|
|
|
2022-08-05 15:33:11 +03:00
|
|
|
POSTGRESQL_REQUIRED_VERSION = (9, 6)
|
2021-02-24 00:50:23 +03:00
|
|
|
POSTGIS_REQUIRED_VERSION = (2, 2)
|
2022-05-04 16:48:23 +03:00
|
|
|
|
2022-07-20 17:05:25 +03:00
|
|
|
# Cmake sets a variable @GIT_HASH@ by executing 'git --log'. It is not run
|
2022-05-04 16:48:23 +03:00
|
|
|
# on every execution of 'make'.
|
|
|
|
# cmake/tool-installed.tmpl is used to build the binary 'nominatim'. Inside
|
|
|
|
# there is a call to set the variable value below.
|
2022-06-30 15:36:19 +03:00
|
|
|
GIT_COMMIT_HASH : Optional[str] = None
|
2022-05-11 00:00:18 +03:00
|
|
|
|
|
|
|
|
2022-12-13 12:36:19 +03:00
|
|
|
def parse_version(version: str) -> NominatimVersion:
|
|
|
|
""" Parse a version string into a version consisting of a tuple of
|
|
|
|
four ints: major, minor, patch level, database patch level
|
|
|
|
|
|
|
|
This is the reverse operation of `version_str()`.
|
2022-05-11 00:00:18 +03:00
|
|
|
"""
|
2022-12-13 12:36:19 +03:00
|
|
|
parts = version.split('.')
|
|
|
|
return NominatimVersion(*[int(x) for x in parts[:2] + parts[2].split('-')])
|