|
|
03b4f82 |
diff --git a/setup.py b/setup.py
|
|
|
ee79417 |
index 80267e8..164cabf 100644
|
|
|
03b4f82 |
--- a/setup.py
|
|
|
03b4f82 |
+++ b/setup.py
|
|
|
ee79417 |
@@ -26,6 +26,8 @@ prefer_system_libb2 = True
|
|
|
ee79417 |
prefer_system_libxxhash = True
|
|
|
03b4f82 |
|
|
|
03b4f82 |
# prefer_system_msgpack is another option, but you need to set it in src/borg/helpers.py.
|
|
|
03b4f82 |
+prefer_system_msgpack = bool(os.environ.get('BORG_EXTERNAL_MSGPACK'))
|
|
|
03b4f82 |
+
|
|
|
03b4f82 |
|
|
|
ee79417 |
min_python = (3, 5)
|
|
|
03b4f82 |
my_python = sys.version_info
|
|
|
03b4f82 |
@@ -38,6 +40,20 @@ if my_python < min_python:
|
|
|
03b4f82 |
on_rtd = os.environ.get('READTHEDOCS')
|
|
|
03b4f82 |
|
|
|
03b4f82 |
install_requires = []
|
|
|
03b4f82 |
+if prefer_system_msgpack:
|
|
|
03b4f82 |
+ install_requires.extend([
|
|
|
03b4f82 |
+ # we are rather picky about msgpack versions, because a good working msgpack is
|
|
|
03b4f82 |
+ # very important for borg, see https://github.com/borgbackup/borg/issues/3753
|
|
|
03b4f82 |
+ # best versions seem to be 0.4.6, 0.4.7, 0.4.8 and 0.5.6:
|
|
|
03b4f82 |
+ 'msgpack-python >=0.4.6, <=0.5.6, !=0.5.0, !=0.5.1, !=0.5.2, !=0.5.3, !=0.5.4, !=0.5.5',
|
|
|
03b4f82 |
+ # if you can't satisfy the above requirement, these are versions that might
|
|
|
03b4f82 |
+ # also work ok, IF you make sure to use the COMPILED version of msgpack-python,
|
|
|
03b4f82 |
+ # NOT the PURE PYTHON fallback implementation: ==0.5.1, ==0.5.4
|
|
|
03b4f82 |
+ #
|
|
|
03b4f82 |
+ # Please note:
|
|
|
03b4f82 |
+ # using any other version is not supported by borg development and
|
|
|
03b4f82 |
+ # any feedback related to issues caused by this will be ignored.
|
|
|
03b4f82 |
+ ])
|
|
|
03b4f82 |
|
|
|
03b4f82 |
# note for package maintainers: if you package borgbackup for distribution,
|
|
|
03b4f82 |
# please add llfuse as a *requirement* on all platforms that have a working
|
|
|
ee79417 |
@@ -88,9 +104,9 @@ cython_c_sources = [
|
|
|
03b4f82 |
|
|
|
03b4f82 |
cython_cpp_sources = [
|
|
|
03b4f82 |
# these .pyx will get compiled to .cpp
|
|
|
03b4f82 |
- msgpack_packer_source,
|
|
|
03b4f82 |
- msgpack_unpacker_source,
|
|
|
03b4f82 |
]
|
|
|
03b4f82 |
+if not prefer_system_msgpack:
|
|
|
03b4f82 |
+ cython_cpp_sources.extend([msgpack_packer_source, msgpack_unpacker_source])
|
|
|
03b4f82 |
|
|
|
03b4f82 |
try:
|
|
|
03b4f82 |
from Cython.Distutils import build_ext
|
|
|
ee79417 |
@@ -121,9 +137,12 @@ try:
|
|
|
96748b3 |
'src/borg/platform/syncfilerange.c',
|
|
|
03b4f82 |
'src/borg/platform/freebsd.c',
|
|
|
03b4f82 |
'src/borg/platform/darwin.c',
|
|
|
03b4f82 |
- 'src/borg/algorithms/msgpack/_packer.cpp',
|
|
|
03b4f82 |
- 'src/borg/algorithms/msgpack/_unpacker.cpp',
|
|
|
03b4f82 |
])
|
|
|
03b4f82 |
+ if not prefer_system_msgpack:
|
|
|
03b4f82 |
+ self.filelist.extend([
|
|
|
03b4f82 |
+ 'src/borg/algorithms/msgpack/_packer.cpp',
|
|
|
03b4f82 |
+ 'src/borg/algorithms/msgpack/_unpacker.cpp',
|
|
|
03b4f82 |
+ ])
|
|
|
03b4f82 |
super().make_distribution()
|
|
|
03b4f82 |
|
|
|
03b4f82 |
except ImportError:
|
|
|
ee79417 |
@@ -146,11 +165,15 @@ except ImportError:
|
|
|
03b4f82 |
msgpack_packer_source = msgpack_packer_source.replace('.pyx', '.cpp')
|
|
|
03b4f82 |
msgpack_unpacker_source = msgpack_unpacker_source.replace('.pyx', '.cpp')
|
|
|
03b4f82 |
|
|
|
03b4f82 |
- from distutils.command.build_ext import build_ext
|
|
|
03b4f82 |
- if not on_rtd and not all(os.path.exists(path) for path in [
|
|
|
03b4f82 |
+ cythonized_sources = [
|
|
|
03b4f82 |
compress_source, crypto_ll_source, chunker_source, hashindex_source, item_source, checksums_source,
|
|
|
96748b3 |
platform_posix_source, platform_linux_source, platform_syncfilerange_source, platform_freebsd_source, platform_darwin_source,
|
|
|
03b4f82 |
- msgpack_packer_source, msgpack_unpacker_source]):
|
|
|
03b4f82 |
+ ]
|
|
|
03b4f82 |
+ if not prefer_system_msgpack:
|
|
|
03b4f82 |
+ cythonized_sources.extend([msgpack_packer_source, msgpack_unpacker_source])
|
|
|
03b4f82 |
+
|
|
|
03b4f82 |
+ from distutils.command.build_ext import build_ext
|
|
|
03b4f82 |
+ if not on_rtd and not all(os.path.exists(path) for path in cythonized_sources):
|
|
|
03b4f82 |
raise ImportError('The GIT version of Borg needs Cython. Install Cython or use a released version.')
|
|
|
03b4f82 |
|
|
|
03b4f82 |
|
|
|
ee79417 |
@@ -809,26 +832,29 @@ if not on_rtd:
|
|
|
ee79417 |
system_prefix=libxxhash_prefix, system=libxxhash_system,
|
|
|
03b4f82 |
**crypto_ext_kwargs)
|
|
|
03b4f82 |
|
|
|
03b4f82 |
- msgpack_endian = '__BIG_ENDIAN__' if (sys.byteorder == 'big') else '__LITTLE_ENDIAN__'
|
|
|
03b4f82 |
- msgpack_macros = [(msgpack_endian, '1')]
|
|
|
03b4f82 |
- msgpack_packer_ext_kwargs = dict(
|
|
|
03b4f82 |
- sources=[msgpack_packer_source],
|
|
|
03b4f82 |
- include_dirs=include_dirs,
|
|
|
03b4f82 |
- library_dirs=library_dirs,
|
|
|
03b4f82 |
- define_macros=msgpack_macros,
|
|
|
03b4f82 |
- language='c++',
|
|
|
03b4f82 |
- )
|
|
|
03b4f82 |
- msgpack_unpacker_ext_kwargs = dict(
|
|
|
03b4f82 |
- sources=[msgpack_unpacker_source],
|
|
|
03b4f82 |
- include_dirs=include_dirs,
|
|
|
03b4f82 |
- library_dirs=library_dirs,
|
|
|
03b4f82 |
- define_macros=msgpack_macros,
|
|
|
03b4f82 |
- language='c++',
|
|
|
03b4f82 |
- )
|
|
|
03b4f82 |
+ if not prefer_system_msgpack:
|
|
|
03b4f82 |
+ msgpack_endian = '__BIG_ENDIAN__' if (sys.byteorder == 'big') else '__LITTLE_ENDIAN__'
|
|
|
03b4f82 |
+ msgpack_macros = [(msgpack_endian, '1')]
|
|
|
03b4f82 |
+ msgpack_packer_ext_kwargs = dict(
|
|
|
03b4f82 |
+ sources=[msgpack_packer_source],
|
|
|
03b4f82 |
+ include_dirs=include_dirs,
|
|
|
03b4f82 |
+ library_dirs=library_dirs,
|
|
|
03b4f82 |
+ define_macros=msgpack_macros,
|
|
|
03b4f82 |
+ language='c++',
|
|
|
03b4f82 |
+ )
|
|
|
03b4f82 |
+ msgpack_unpacker_ext_kwargs = dict(
|
|
|
03b4f82 |
+ sources=[msgpack_unpacker_source],
|
|
|
03b4f82 |
+ include_dirs=include_dirs,
|
|
|
03b4f82 |
+ library_dirs=library_dirs,
|
|
|
03b4f82 |
+ define_macros=msgpack_macros,
|
|
|
03b4f82 |
+ language='c++',
|
|
|
03b4f82 |
+ )
|
|
|
03b4f82 |
+ ext_modules += [
|
|
|
03b4f82 |
+ Extension('borg.algorithms.msgpack._packer', **msgpack_packer_ext_kwargs),
|
|
|
03b4f82 |
+ Extension('borg.algorithms.msgpack._unpacker', **msgpack_unpacker_ext_kwargs),
|
|
|
03b4f82 |
+ ]
|
|
|
03b4f82 |
|
|
|
03b4f82 |
ext_modules += [
|
|
|
03b4f82 |
- Extension('borg.algorithms.msgpack._packer', **msgpack_packer_ext_kwargs),
|
|
|
03b4f82 |
- Extension('borg.algorithms.msgpack._unpacker', **msgpack_unpacker_ext_kwargs),
|
|
|
03b4f82 |
Extension('borg.compress', **compress_ext_kwargs),
|
|
|
03b4f82 |
Extension('borg.crypto.low_level', **crypto_ext_kwargs),
|
|
|
03b4f82 |
Extension('borg.hashindex', [hashindex_source]),
|