|
17 | 17 |
|
18 | 18 |
|
19 | 19 | def get_boost_libraries():
|
20 |
| - base_lib = "boost_python" |
21 |
| - major, minor = str(sys.version_info[0]), str(sys.version_info[1]) |
22 |
| - tags = [f"{major}{minor}", major, ""] |
23 |
| - mttags = ["", "-mt"] |
24 |
| - candidates = [base_lib + tag for tag in tags for mt in mttags] + [base_lib] |
25 |
| - for lib in candidates: |
26 |
| - if find_library(lib): |
27 |
| - return [lib] |
| 20 | + major, minor = sys.version_info[:2] |
| 21 | + candidates = [ |
| 22 | + f"boost_python{major}{minor}", |
| 23 | + f"boost_python{major}", |
| 24 | + "boost_python", |
| 25 | + ] |
| 26 | + |
| 27 | + conda_prefix = os.environ.get("CONDA_PREFIX") |
| 28 | + if conda_prefix: |
| 29 | + libdir = os.path.join(conda_prefix, "lib") |
| 30 | + for name in candidates: |
| 31 | + so = f"lib{name}.so" |
| 32 | + if os.path.isfile(os.path.join(libdir, so)): |
| 33 | + return [name] |
| 34 | + |
| 35 | + # fallback to ldconfig |
| 36 | + for name in candidates: |
| 37 | + found = find_library(name) |
| 38 | + if found: |
| 39 | + return [name] |
28 | 40 | raise RuntimeError("Cannot find a suitable Boost.Python library.")
|
29 | 41 |
|
30 | 42 |
|
@@ -111,11 +123,11 @@ def create_extensions():
|
111 | 123 |
|
112 | 124 |
|
113 | 125 | # Extensions not included in pyproject.toml
|
114 |
| -setup_args = dict( |
115 |
| - ext_modules=[], |
116 |
| -) |
| 126 | +def ext_modules(): |
| 127 | + if set(sys.argv) & {"build_ext", "bdist_wheel", "install"}: |
| 128 | + return create_extensions() |
| 129 | + return [] |
117 | 130 |
|
118 | 131 |
|
119 | 132 | if __name__ == "__main__":
|
120 |
| - setup_args["ext_modules"] = create_extensions() |
121 |
| - setup(**setup_args) |
| 133 | + setup(ext_modules=ext_modules()) |
0 commit comments