Skip to content

Commit dff9543

Browse files
committed
Use pkgconfig in setup.py script.
1 parent d412772 commit dff9543

File tree

2 files changed

+32
-19
lines changed

2 files changed

+32
-19
lines changed

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
[build-system]
2-
requires = ["setuptools", "wheel", "cython"]
2+
requires = ["setuptools", "wheel", "cython", "pkgconfig"]
33
build-backend = "setuptools.build_meta"

setup.py

+31-18
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
#!/usr/bin/env python3
22

3+
import os
34
import platform
4-
import setuptools
55
import sys
66

7+
import pkgconfig
8+
from Cython.Build import cythonize
9+
from pkgconfig import PackageNotFoundError
10+
from setuptools import Extension, setup
711

812
extra_compile_args = [
913
'-std=c++11',
@@ -21,22 +25,31 @@
2125
if sys.version_info < (3 , 0):
2226
raise Exception("python-rocksdb requires Python 3.x")
2327

24-
setuptools.setup(
25-
ext_modules=[
26-
setuptools.Extension(
27-
'rocksdb._rocksdb',
28-
[
29-
'rocksdb/_rocksdb.pyx',
30-
],
31-
extra_compile_args=extra_compile_args,
32-
language='c++',
33-
libraries=[
34-
'rocksdb',
35-
'snappy',
36-
'bz2',
37-
'z',
38-
'lz4',
39-
],
40-
),
28+
rocksdb_extension = Extension(
29+
'rocksdb._rocksdb',
30+
[
31+
'rocksdb/_rocksdb.pyx',
4132
],
33+
extra_compile_args=extra_compile_args,
34+
language='c++',
35+
libraries=['rocksdb'],
36+
)
37+
38+
try:
39+
pkgconfig.configure_extension(rocksdb_extension, "rocksdb")
40+
except PackageNotFoundError:
41+
include_path = os.environ.get("INCLUDE_PATH")
42+
library_path = os.environ.get("LIBRARY_PATH")
43+
44+
rocksdb_extension.include_dirs += include_path.split(os.pathsep) if include_path else []
45+
rocksdb_extension.library_dirs += library_path.split(os.pathsep) if library_path else []
46+
rocksdb_extension.libraries += [
47+
'snappy',
48+
'bz2',
49+
'z',
50+
'lz4',
51+
]
52+
53+
setup(
54+
ext_modules=cythonize([rocksdb_extension]),
4255
)

0 commit comments

Comments
 (0)