1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2024-12-26 09:47:58 +00:00

Merge pull request #4315 from ThomasWaldmann/check-msgpack-master

check msgpack version, terminate for unsupported versions
This commit is contained in:
TW 2019-02-03 04:34:51 +01:00 committed by GitHub
commit 50666c3e44
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 4 deletions

View file

@ -49,8 +49,10 @@
# if you can't satisfy the above requirement, these are versions that might # 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, # 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 # 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, # note for package maintainers: if you package borgbackup for distribution,

View file

@ -55,7 +55,7 @@
from .helpers import hardlinkable from .helpers import hardlinkable
from .helpers import StableDict from .helpers import StableDict
from .helpers import check_python, check_extension_modules 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 log_multi
from .helpers import signal_handler, raising_signal_handler, SigHup, SigTerm from .helpers import signal_handler, raising_signal_handler, SigHup, SigTerm
from .helpers import ErrorIgnoringTextIOWrapper from .helpers import ErrorIgnoringTextIOWrapper
@ -4187,6 +4187,11 @@ def run(self, args):
if args.show_version: if args.show_version:
logging.getLogger('borg.output.show-version').info('borgbackup version %s' % __version__) logging.getLogger('borg.output.show-version').info('borgbackup version %s' % __version__)
self.prerun_checks(logger) self.prerun_checks(logger)
if not is_supported_msgpack():
logger.error("You do not have a supported version of the msgpack python package 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(): if is_slow_msgpack():
logger.warning("Using a pure-python msgpack! This will result in lower performance.") logger.warning("Using a pure-python msgpack! This will result in lower performance.")
if args.debug_profile: if args.debug_profile:

View file

@ -18,7 +18,7 @@
from .time import * # NOQA from .time import * # NOQA
from .yes import * # NOQA from .yes import * # NOQA
from .msgpack import is_slow_msgpack, int_to_bigint, bigint_to_int, get_limited_unpacker from .msgpack import is_slow_msgpack, is_supported_msgpack, int_to_bigint, bigint_to_int, get_limited_unpacker
from . import msgpack from . import msgpack
""" """

View file

@ -169,6 +169,13 @@ def is_slow_msgpack():
return msgpack.Packer is msgpack.fallback.Packer return msgpack.Packer is msgpack.fallback.Packer
def is_supported_msgpack():
# DO NOT CHANGE OR REMOVE! See also requirements and comments in setup.py.
import msgpack
return (0, 5, 6) <= msgpack.version <= (0, 6, 0) and \
msgpack.version not in [(0, 5, 7), (0, 5, 8), (0, 5, 9)]
def get_limited_unpacker(kind): def get_limited_unpacker(kind):
"""return a limited Unpacker because we should not trust msgpack data received from remote""" """return a limited Unpacker because we should not trust msgpack data received from remote"""
args = dict(use_list=False, # return tuples, not lists args = dict(use_list=False, # return tuples, not lists