From 11fde3f85e4323b25a6eef753878dadb7eec8980 Mon Sep 17 00:00:00 2001 From: Alexander Regueiro <alexreg@gmail.com> Date: Tue, 8 Mar 2022 16:55:55 +0000 Subject: [PATCH] Use pkgconfig in `setup.py` script. --- pyproject.toml | 2 +- setup.py | 49 +++++++++++++++++++++++++++++++------------------ 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6d1b4c5..9bf40cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,3 @@ [build-system] -requires = ["setuptools", "wheel", "cython"] +requires = ["setuptools", "wheel", "cython", "pkgconfig"] build-backend = "setuptools.build_meta" diff --git a/setup.py b/setup.py index 2392305..2450eef 100644 --- a/setup.py +++ b/setup.py @@ -1,9 +1,13 @@ #!/usr/bin/env python3 +import os import platform -import setuptools import sys +import pkgconfig +from Cython.Build import cythonize +from pkgconfig import PackageNotFoundError +from setuptools import Extension, setup extra_compile_args = [ '-std=c++11', @@ -21,22 +25,31 @@ if platform.system() == 'Darwin': if sys.version_info < (3 , 0): raise Exception("python-rocksdb requires Python 3.x") -setuptools.setup( - ext_modules=[ - setuptools.Extension( - 'rocksdb._rocksdb', - [ - 'rocksdb/_rocksdb.pyx', - ], - extra_compile_args=extra_compile_args, - language='c++', - libraries=[ - 'rocksdb', - 'snappy', - 'bz2', - 'z', - 'lz4', - ], - ), +rocksdb_extension = Extension( + 'rocksdb._rocksdb', + [ + 'rocksdb/_rocksdb.pyx', ], + extra_compile_args=extra_compile_args, + language='c++', + libraries=['rocksdb'], +) + +try: + pkgconfig.configure_extension(rocksdb_extension, "rocksdb") +except PackageNotFoundError: + include_path = os.environ.get("INCLUDE_PATH") + library_path = os.environ.get("LIBRARY_PATH") + + rocksdb_extension.include_dirs += include_path.split(os.pathsep) if include_path else [] + rocksdb_extension.library_dirs += library_path.split(os.pathsep) if library_path else [] + rocksdb_extension.libraries += [ + 'snappy', + 'bz2', + 'z', + 'lz4', + ] + +setup( + ext_modules=cythonize([rocksdb_extension]), ) -- GitLab