simplify code by merging kwargs dicts at caller

This commit is contained in:
Thomas Waldmann 2019-03-13 03:01:00 +01:00
parent 7b2b8980b4
commit 80ade7093d
5 changed files with 76 additions and 103 deletions

View File

@ -2,6 +2,7 @@ import os
import io
import re
import sys
from collections import defaultdict
from collections import OrderedDict
from datetime import datetime
from glob import glob
@ -142,13 +143,27 @@ cmdclass = {
ext_modules = []
if not on_rtd:
compress_ext_kwargs = dict(sources=[compress_source])
compress_ext_kwargs = setup_lz4.lz4_ext_kwargs(prefer_system_liblz4, **compress_ext_kwargs)
compress_ext_kwargs = setup_zstd.zstd_ext_kwargs(prefer_system_libzstd,
multithreaded=False, legacy=False, **compress_ext_kwargs)
crypto_ext_kwargs = dict(sources=[crypto_ll_source, crypto_helpers])
crypto_ext_kwargs = setup_crypto.crypto_ext_kwargs(**crypto_ext_kwargs)
crypto_ext_kwargs = setup_b2.b2_ext_kwargs(prefer_system_libb2, **crypto_ext_kwargs)
def members_appended(*ds):
result = defaultdict(list)
for d in ds:
for k, v in d.items():
assert isinstance(v, list)
result[k].extend(v)
return result
compress_ext_kwargs = members_appended(
dict(sources=[compress_source]),
setup_lz4.lz4_ext_kwargs(prefer_system_liblz4),
setup_zstd.zstd_ext_kwargs(prefer_system_libzstd, multithreaded=False, legacy=False),
)
crypto_ext_kwargs = members_appended(
dict(sources=[crypto_ll_source, crypto_helpers]),
setup_crypto.crypto_ext_kwargs(),
setup_b2.b2_ext_kwargs(prefer_system_libb2),
)
ext_modules += [
Extension('borg.compress', **compress_ext_kwargs),
Extension('borg.crypto.low_level', **crypto_ext_kwargs),

View File

@ -23,18 +23,17 @@ b2_includes = [
]
def b2_ext_kwargs(prefer_system, **kwargs):
"""amend kwargs with b2 stuff for a distutils.extension.Extension initialization.
def b2_ext_kwargs(prefer_system):
"""return kwargs with b2 stuff for a distutils.extension.Extension initialization.
prefer_system: prefer the system-installed library (if found) over the bundled C code
kwargs: distutils.extension.Extension kwargs that should be amended
returns: amended kwargs
returns: kwargs for this lib
"""
def multi_join(paths, *path_segments):
"""apply os.path.join on a list of paths"""
return [os.path.join(*(path_segments + (path, ))) for path in paths]
define_macros = kwargs.get('define_macros', [])
define_macros = []
system_prefix = os.environ.get('BORG_LIBB2_PREFIX')
if prefer_system and system_prefix:
@ -47,29 +46,18 @@ def b2_ext_kwargs(prefer_system, **kwargs):
use_system = system and system_prefix is not None
sources = kwargs.get('sources', [])
if not use_system:
sources += multi_join(b2_sources, bundled_path)
include_dirs = kwargs.get('include_dirs', [])
if use_system:
include_dirs += multi_join(['include'], system_prefix)
sources = []
include_dirs = multi_join(['include'], system_prefix)
library_dirs = multi_join(['lib'], system_prefix)
libraries = ['b2', ]
else:
include_dirs += multi_join(b2_includes, bundled_path)
sources = multi_join(b2_sources, bundled_path)
include_dirs = multi_join(b2_includes, bundled_path)
library_dirs = []
libraries = []
library_dirs = kwargs.get('library_dirs', [])
if use_system:
library_dirs += multi_join(['lib'], system_prefix)
extra_compile_args = []
libraries = kwargs.get('libraries', [])
if use_system:
libraries += ['b2', ]
extra_compile_args = kwargs.get('extra_compile_args', [])
if not use_system:
extra_compile_args += [] # not used yet
ret = dict(**kwargs)
ret.update(dict(sources=sources, define_macros=define_macros, extra_compile_args=extra_compile_args,
include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries))
return ret
return dict(sources=sources, define_macros=define_macros, extra_compile_args=extra_compile_args,
include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries)

View File

@ -10,11 +10,10 @@
import os
def crypto_ext_kwargs(**kwargs):
"""amend kwargs with crypto stuff for a distutils.extension.Extension initialization.
def crypto_ext_kwargs():
"""return kwargs with crypto stuff for a distutils.extension.Extension initialization.
kwargs: distutils.extension.Extension kwargs that should be amended
returns: amended kwargs
returns: kwargs for this lib
"""
def multi_join(paths, *path_segments):
"""apply os.path.join on a list of paths"""
@ -26,15 +25,8 @@ def crypto_ext_kwargs(**kwargs):
else:
raise Exception('Could not find OpenSSL lib/headers, please set BORG_OPENSSL_PREFIX')
include_dirs = kwargs.get('include_dirs', [])
include_dirs += multi_join(['include'], system_prefix)
include_dirs = multi_join(['include'], system_prefix)
library_dirs = multi_join(['lib'], system_prefix)
libraries = ['crypto', ]
library_dirs = kwargs.get('library_dirs', [])
library_dirs += multi_join(['lib'], system_prefix)
libraries = kwargs.get('libraries', [])
libraries += ['crypto', ]
ret = dict(**kwargs)
ret.update(dict(include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries))
return ret
return dict(include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries)

View File

@ -23,18 +23,17 @@ lz4_includes = [
]
def lz4_ext_kwargs(prefer_system, **kwargs):
"""amend kwargs with lz4 stuff for a distutils.extension.Extension initialization.
def lz4_ext_kwargs(prefer_system):
"""return kwargs with lz4 stuff for a distutils.extension.Extension initialization.
prefer_system: prefer the system-installed library (if found) over the bundled C code
kwargs: distutils.extension.Extension kwargs that should be amended
returns: amended kwargs
returns: kwargs for this lib
"""
def multi_join(paths, *path_segments):
"""apply os.path.join on a list of paths"""
return [os.path.join(*(path_segments + (path, ))) for path in paths]
define_macros = kwargs.get('define_macros', [])
define_macros = []
system_prefix = os.environ.get('BORG_LIBLZ4_PREFIX')
if prefer_system and system_prefix:
@ -47,29 +46,18 @@ def lz4_ext_kwargs(prefer_system, **kwargs):
use_system = system and system_prefix is not None
sources = kwargs.get('sources', [])
if not use_system:
sources += multi_join(lz4_sources, bundled_path)
include_dirs = kwargs.get('include_dirs', [])
if use_system:
include_dirs += multi_join(['include'], system_prefix)
sources = []
include_dirs = multi_join(['include'], system_prefix)
library_dirs = multi_join(['lib'], system_prefix)
libraries = ['lz4', ]
else:
include_dirs += multi_join(lz4_includes, bundled_path)
sources = multi_join(lz4_sources, bundled_path)
include_dirs = multi_join(lz4_includes, bundled_path)
library_dirs = []
libraries = []
library_dirs = kwargs.get('library_dirs', [])
if use_system:
library_dirs += multi_join(['lib'], system_prefix)
extra_compile_args = []
libraries = kwargs.get('libraries', [])
if use_system:
libraries += ['lz4', ]
extra_compile_args = kwargs.get('extra_compile_args', [])
if not use_system:
extra_compile_args += [] # not used yet
ret = dict(**kwargs)
ret.update(dict(sources=sources, define_macros=define_macros, extra_compile_args=extra_compile_args,
include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries))
return ret
return dict(sources=sources, define_macros=define_macros, extra_compile_args=extra_compile_args,
include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries)

View File

@ -70,20 +70,19 @@ zstd_includes_legacy = [
]
def zstd_ext_kwargs(prefer_system, multithreaded=False, legacy=False, **kwargs):
"""amend kwargs with zstd suff for a distutils.extension.Extension initialization.
def zstd_ext_kwargs(prefer_system, multithreaded=False, legacy=False):
"""return kwargs with zstd suff for a distutils.extension.Extension initialization.
prefer_system: prefer the system-installed library (if found) over the bundled C code
multithreaded: True: define ZSTD_MULTITHREAD
legacy: include legacy API support
kwargs: distutils.extension.Extension kwargs that should be amended
returns: amended kwargs
returns: kwargs for this lib
"""
def multi_join(paths, *path_segments):
"""apply os.path.join on a list of paths"""
return [os.path.join(*(path_segments + (path, ))) for path in paths]
define_macros = kwargs.get('define_macros', [])
define_macros = []
system_prefix = os.environ.get('BORG_LIBZSTD_PREFIX')
if prefer_system and system_prefix:
@ -96,29 +95,22 @@ def zstd_ext_kwargs(prefer_system, multithreaded=False, legacy=False, **kwargs):
use_system = system and system_prefix is not None
sources = kwargs.get('sources', [])
if not use_system:
sources += multi_join(zstd_sources, bundled_path)
if use_system:
sources = []
include_dirs = multi_join(['include'], system_prefix)
library_dirs = multi_join(['lib'], system_prefix)
libraries = ['zstd', ]
else:
sources = multi_join(zstd_sources, bundled_path)
if legacy:
sources += multi_join(zstd_sources_legacy, bundled_path)
include_dirs = kwargs.get('include_dirs', [])
if use_system:
include_dirs += multi_join(['include'], system_prefix)
else:
include_dirs += multi_join(zstd_includes, bundled_path)
include_dirs = multi_join(zstd_includes, bundled_path)
if legacy:
include_dirs += multi_join(zstd_includes_legacy, bundled_path)
library_dirs = []
libraries = []
library_dirs = kwargs.get('library_dirs', [])
if use_system:
library_dirs += multi_join(['lib'], system_prefix)
libraries = kwargs.get('libraries', [])
if use_system:
libraries += ['zstd', ]
extra_compile_args = kwargs.get('extra_compile_args', [])
extra_compile_args = []
if multithreaded:
extra_compile_args += ['-DZSTD_MULTITHREAD', ]
if not use_system:
@ -127,7 +119,5 @@ def zstd_ext_kwargs(prefer_system, multithreaded=False, legacy=False, **kwargs):
if legacy:
extra_compile_args += ['-DZSTD_LEGACY_SUPPORT=1', ]
ret = dict(**kwargs)
ret.update(dict(sources=sources, define_macros=define_macros, extra_compile_args=extra_compile_args,
include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries))
return ret
return dict(sources=sources, define_macros=define_macros, extra_compile_args=extra_compile_args,
include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries)