|
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