Merge pull request #9125 from ThomasWaldmann/port-9111-to-master

BORG_MSGPACK_VERSION_CHECK=no to disable the version check, fixes #9109
This commit is contained in:
TW 2025-11-01 17:30:00 +01:00 committed by GitHub
commit ad89feb0ce
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 16 additions and 0 deletions

View file

@ -163,6 +163,8 @@ New features:
- export-tar/import-tar: support for POSIX ACLs (PAX format)
- list --format: add "inode" placeholder
- improved tty-less progress reporting (--progress), #9055
- BORG_MSGPACK_VERSION_CHECK=no to optionally disable the msgpack version
check; default is "yes", use at your own risk, #9109.
Fixes:
@ -888,6 +890,7 @@ New features:
borg serve --socket # server side (not started automatically!)
borg -r socket:///path/to/repo ... # client side
- add get_runtime_dir / BORG_RUNTIME_DIR (contains e.g. .sock and .pid file)
- support shell-style alternatives, like: sh:image.{png,jpg}, #7602

View file

@ -78,6 +78,11 @@ General:
When set to no (default: yes), system information (like OS, Python version, ...) in
exceptions is not shown.
Please only use for good reasons as it makes issues harder to analyze.
BORG_MSGPACK_VERSION_CHECK
Controls whether Borg checks the ``msgpack`` version.
The default is ``yes`` (strict check). Set to ``no`` to disable the version check and
allow any installed ``msgpack`` version. Use this at your own risk; malfunctioning or
incompatible ``msgpack`` versions may cause subtle bugs or repository data corruption.
BORG_FUSE_IMPL
Choose the low-level FUSE implementation borg shall use for ``borg mount``.
This is a comma-separated list of implementation names, they are tried in the

View file

@ -46,6 +46,8 @@ Current behavior in msgpack terms
- unpacks bin to bytes and raw to str (thus we need to convert to desired type if we want bytes from "raw")
"""
import os
from .datastruct import StableDict
from ..constants import * # NOQA
@ -206,8 +208,14 @@ def is_slow_msgpack():
def is_supported_msgpack():
# DO NOT CHANGE OR REMOVE! See also requirements and comments in pyproject.toml.
# This function now also respects the env var BORG_MSGPACK_VERSION_CHECK.
# Set BORG_MSGPACK_VERSION_CHECK=no to disable the version check at your own risk.
import msgpack
version_check = os.environ.get("BORG_MSGPACK_VERSION_CHECK", "yes").strip().lower()
if version_check == "no":
return True
if msgpack.version in []: # < add bad releases here to deny list
return False
return (1, 0, 3) <= msgpack.version[:3] <= (1, 1, 2)