1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-02-24 23:13:25 +00:00

check msgpack version, terminate for unsupported versions

This commit is contained in:
Thomas Waldmann 2019-02-02 23:52:16 +01:00
parent c7ad4f12f8
commit 7786eea531
3 changed files with 16 additions and 3 deletions

View file

@ -43,8 +43,10 @@
# if you can't satisfy the above requirement, these are versions that might
# also work ok, IF you make sure to use the COMPILED version of msgpack-python,
# NOT the PURE PYTHON fallback implementation: ==0.5.1, ==0.5.4
# using any other version is not supported by borg development, feel free to
# do it on your own risk (and after own testing).
#
# Please note:
# using any other version is not supported by borg development and
# any feedback related to issues caused by this will be ignored.
]
# note for package maintainers: if you package borgbackup for distribution,

View file

@ -57,7 +57,7 @@
from .helpers import hardlinkable
from .helpers import StableDict
from .helpers import check_python, check_extension_modules
from .helpers import dir_is_tagged, is_slow_msgpack, yes, sysinfo
from .helpers import dir_is_tagged, is_slow_msgpack, is_supported_msgpack, yes, sysinfo
from .helpers import log_multi
from .helpers import signal_handler, raising_signal_handler, SigHup, SigTerm
from .helpers import ErrorIgnoringTextIOWrapper
@ -4340,6 +4340,11 @@ def run(self, args):
if args.show_version:
logging.getLogger('borg.output.show-version').info('borgbackup version %s' % __version__)
self.prerun_checks(logger)
if not is_supported_msgpack():
logger.error("You do not have a supported msgpack[-python] version installed. Terminating.")
logger.error("This should never happen as specific, supported versions are required by our setup.py.")
logger.error("Do not contact borgbackup support about this.")
return set_ec(EXIT_ERROR)
if is_slow_msgpack():
logger.warning("Using a pure-python msgpack! This will result in lower performance.")
if args.debug_profile:

View file

@ -1290,6 +1290,12 @@ def is_slow_msgpack():
return msgpack.Packer is msgpack.fallback.Packer
def is_supported_msgpack():
# DO NOT CHANGE OR REMOVE! See also requirements and comments in setup.py.
return (0, 4, 6) <= msgpack.version <= (0, 5, 6) and \
msgpack.version not in [(0, 5, 0), (0, 5, 2), (0, 5, 3), (0, 5, 5)]
FALSISH = ('No', 'NO', 'no', 'N', 'n', '0', )
TRUISH = ('Yes', 'YES', 'yes', 'Y', 'y', '1', )
DEFAULTISH = ('Default', 'DEFAULT', 'default', 'D', 'd', '', )