diff --git a/setup.py b/setup.py index d3e271fd0..f8a73d032 100644 --- a/setup.py +++ b/setup.py @@ -152,16 +152,22 @@ def members_appended(*ds): result[k].extend(v) return result + try: + import pkgconfig as pc + except ImportError: + print('Warning: can not import pkgconfig python package.') + pc = None + 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), + setup_crypto.crypto_ext_kwargs(pc), + setup_b2.b2_ext_kwargs(pc, prefer_system_libb2), ) 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), + setup_lz4.lz4_ext_kwargs(pc, prefer_system_liblz4), + setup_zstd.zstd_ext_kwargs(pc, prefer_system_libzstd, multithreaded=False, legacy=False), ) ext_modules += [ diff --git a/setup_b2.py b/setup_b2.py index 4b1f5ec8c..309cdb101 100644 --- a/setup_b2.py +++ b/setup_b2.py @@ -21,7 +21,7 @@ def multi_join(paths, *path_segments): return [os.path.join(*(path_segments + (path,))) for path in paths] -def b2_ext_kwargs(prefer_system): +def b2_ext_kwargs(pc, prefer_system): if prefer_system: system_prefix = os.environ.get('BORG_LIBB2_PREFIX') if system_prefix: @@ -30,11 +30,9 @@ def b2_ext_kwargs(prefer_system): library_dirs=[os.path.join(system_prefix, 'lib')], libraries=['b2']) - import pkgconfig - - if pkgconfig.installed('libb2', '>= 0.98.1'): + if pc and pc.installed('libb2', '>= 0.98.1'): print('Detected and preferring libb2 [via pkg-config]') - return pkgconfig.parse('libb2') + return pc.parse('libb2') print('Using bundled BLAKE2') sources = multi_join(b2_sources, bundled_path) diff --git a/setup_crypto.py b/setup_crypto.py index 6252c013e..b0971ff62 100644 --- a/setup_crypto.py +++ b/setup_crypto.py @@ -3,7 +3,7 @@ import os -def crypto_ext_kwargs(): +def crypto_ext_kwargs(pc): system_prefix = os.environ.get('BORG_OPENSSL_PREFIX') if system_prefix: print('Detected OpenSSL [via BORG_OPENSSL_PREFIX]') @@ -11,10 +11,8 @@ def crypto_ext_kwargs(): library_dirs=[os.path.join(system_prefix, 'lib')], libraries=['crypto']) - import pkgconfig - - if pkgconfig.exists('libcrypto'): + if pc and pc.exists('libcrypto'): print('Detected OpenSSL [via pkg-config]') - return pkgconfig.parse('libcrypto') + return pc.parse('libcrypto') raise Exception('Could not find OpenSSL lib/headers, please set BORG_OPENSSL_PREFIX') diff --git a/setup_lz4.py b/setup_lz4.py index 574017688..b8b5f7dfb 100644 --- a/setup_lz4.py +++ b/setup_lz4.py @@ -21,7 +21,7 @@ def multi_join(paths, *path_segments): return [os.path.join(*(path_segments + (path,))) for path in paths] -def lz4_ext_kwargs(prefer_system): +def lz4_ext_kwargs(pc, prefer_system): if prefer_system: system_prefix = os.environ.get('BORG_LIBLZ4_PREFIX') if system_prefix: @@ -30,11 +30,9 @@ def lz4_ext_kwargs(prefer_system): library_dirs=[os.path.join(system_prefix, 'lib')], libraries=['lz4']) - import pkgconfig - - if pkgconfig.installed('liblz4', '>= 1.7.0'): + if pc and pc.installed('liblz4', '>= 1.7.0'): print('Detected and preferring liblz4 [via pkg-config]') - return pkgconfig.parse('liblz4') + return pc.parse('liblz4') print('Using bundled LZ4') sources = multi_join(lz4_sources, bundled_path) diff --git a/setup_zstd.py b/setup_zstd.py index 117aca0b7..050c72f79 100644 --- a/setup_zstd.py +++ b/setup_zstd.py @@ -68,7 +68,7 @@ def multi_join(paths, *path_segments): return [os.path.join(*(path_segments + (path,))) for path in paths] -def zstd_ext_kwargs(prefer_system, multithreaded=False, legacy=False): +def zstd_ext_kwargs(pc, prefer_system, multithreaded=False, legacy=False): if prefer_system: system_prefix = os.environ.get('BORG_LIBZSTD_PREFIX') if system_prefix: @@ -77,11 +77,9 @@ def zstd_ext_kwargs(prefer_system, multithreaded=False, legacy=False): library_dirs=[os.path.join(system_prefix, 'lib')], libraries=['zstd']) - import pkgconfig - - if pkgconfig.installed('libzstd', '>= 1.3.0'): + if pc and pc.installed('libzstd', '>= 1.3.0'): print('Detected and preferring libzstd [via pkg-config]') - return pkgconfig.parse('libzstd') + return pc.parse('libzstd') print('Using bundled ZSTD') sources = multi_join(zstd_sources, bundled_path)