From 2ae2e3a15fa3e361b5f2e186d2450a8ccd38f698 Mon Sep 17 00:00:00 2001 From: Leonid Pliushch Date: Mon, 26 Jul 2021 13:30:08 +0300 Subject: [PATCH] Termux borgbackup: use distutils instead of packaging Do not remove this patch unless you know what you are doing! We don't have module "packaging" packaged and thus cannot use it without installing through "pip". But for stable packages we cannot use it in postinst script to add missing dependencies. So if you decide to drop this patch: * Add python3-packaging to termux-packages. * Alternatively: create a postinst deb script (pip3 install packaging) and move borgbackup to https://github.com/termux/unstable-packages --- setup.py | 24 ++++++++---------------- src/borg/__init__.py | 5 ++--- src/borg/xattr.py | 6 +++--- 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/setup.py b/setup.py index 87e93d25..5ca79af2 100644 --- a/setup.py +++ b/setup.py @@ -37,9 +37,7 @@ # Are we building on ReadTheDocs? on_rtd = os.environ.get('READTHEDOCS') -install_requires = [ - 'packaging', -] +install_requires = [] # note for package maintainers: if you package borgbackup for distribution, # please add llfuse as a *requirement* on all platforms that have a working @@ -54,8 +52,10 @@ ], } -from setuptools import setup, find_packages, Extension, Command +from setuptools import setup, find_packages, Extension from setuptools.command.sdist import sdist +from distutils.core import Command +from distutils.command.clean import clean compress_source = 'src/borg/compress.pyx' crypto_ll_source = 'src/borg/crypto/low_level.pyx' @@ -146,7 +146,7 @@ def __init__(self, *args, **kwargs): msgpack_packer_source = msgpack_packer_source.replace('.pyx', '.cpp') msgpack_unpacker_source = msgpack_unpacker_source.replace('.pyx', '.cpp') - from setuptools.command.build_ext import build_ext + from distutils.command.build_ext import build_ext if not on_rtd and not all(os.path.exists(path) for path in [ compress_source, crypto_ll_source, chunker_source, hashindex_source, item_source, checksums_source, platform_posix_source, platform_linux_source, platform_syncfilerange_source, platform_freebsd_source, platform_darwin_source, @@ -767,16 +767,9 @@ def rm(file): pass -class Clean(Command): - user_options = [] - - def initialize_options(self): - pass - - def finalize_options(self): - pass - +class Clean(clean): def run(self): + super().run() for source in cython_c_sources: genc = source.replace('.pyx', '.c') rm(genc) @@ -793,7 +786,7 @@ def run(self): 'build_usage': build_usage, 'build_man': build_man, 'sdist': Sdist, - 'clean2': Clean, + 'clean': Clean, } ext_modules = [] @@ -882,7 +875,6 @@ def run(self): 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: 3.10', 'Topic :: Security :: Cryptography', 'Topic :: System :: Archiving :: Backup', ], diff --git a/src/borg/__init__.py b/src/borg/__init__.py index 9f13c7d6..47adb1b6 100644 --- a/src/borg/__init__.py +++ b/src/borg/__init__.py @@ -1,12 +1,11 @@ -from packaging.version import parse as parse_version +from distutils.version import LooseVersion # IMPORTANT keep imports from borg here to a minimum because our testsuite depends on # being able to import borg.constants and then monkey patching borg.constants.PBKDF2_ITERATIONS from ._version import version as __version__ -_v = parse_version(__version__) -__version_tuple__ = _v._version.release +__version_tuple__ = tuple(LooseVersion(__version__).version[:3]) # assert that all semver components are integers # this is mainly to show errors when people repackage poorly diff --git a/src/borg/xattr.py b/src/borg/xattr.py index f611a80a..8f77ab95 100644 --- a/src/borg/xattr.py +++ b/src/borg/xattr.py @@ -8,7 +8,7 @@ import tempfile from ctypes import CDLL, create_string_buffer, c_ssize_t, c_size_t, c_char_p, c_int, c_uint32, get_errno from ctypes.util import find_library -from packaging.version import parse as parse_version +from distutils.version import LooseVersion from .helpers import Buffer, prepare_subprocess_env @@ -91,8 +91,8 @@ def get_all(path, follow_symlinks=True): if preload.startswith("libfakeroot"): env = prepare_subprocess_env(system=True) fakeroot_output = subprocess.check_output(['fakeroot', '-v'], env=env) - fakeroot_version = parse_version(fakeroot_output.decode('ascii').split()[-1]) - if fakeroot_version >= parse_version("1.20.2"): + fakeroot_version = LooseVersion(fakeroot_output.decode('ascii').split()[-1]) + if fakeroot_version >= LooseVersion("1.20.2"): # 1.20.2 has been confirmed to have xattr support # 1.18.2 has been confirmed not to have xattr support # Versions in-between are unknown -- 2.30.2