Commit 6bd21102356a4f846899fc8e353b23b78cb36820
1 parent
d1b18fa7
Exists in
master
Added a command to setup.py to build plugins
Showing
1 changed file
with
45 additions
and
6 deletions
Show diff stats
setup.py
| 1 | +import distutils.cmd | |
| 2 | +import distutils.log | |
| 1 | 3 | import os |
| 4 | +import pathlib | |
| 5 | +import subprocess | |
| 2 | 6 | import sys |
| 3 | 7 | from distutils.core import setup |
| 4 | 8 | from distutils.extension import Extension |
| ... | ... | @@ -7,12 +11,16 @@ import numpy |
| 7 | 11 | from Cython.Build import cythonize |
| 8 | 12 | from Cython.Distutils import build_ext |
| 9 | 13 | |
| 10 | -if sys.platform == 'darwin': | |
| 11 | - unix_copt = ['-Xpreprocessor', '-fopenmp', '-lomp'] | |
| 12 | - unix_lopt = ['-Xpreprocessor', '-fopenmp', '-lomp'] | |
| 14 | +if sys.platform == "darwin": | |
| 15 | + unix_copt = ["-Xpreprocessor", "-fopenmp", "-lomp"] | |
| 16 | + unix_lopt = ["-Xpreprocessor", "-fopenmp", "-lomp"] | |
| 13 | 17 | else: |
| 14 | - unix_copt = ['-fopenmp',] | |
| 15 | - unix_lopt = ['-fopenmp',] | |
| 18 | + unix_copt = [ | |
| 19 | + "-fopenmp", | |
| 20 | + ] | |
| 21 | + unix_lopt = [ | |
| 22 | + "-fopenmp", | |
| 23 | + ] | |
| 16 | 24 | |
| 17 | 25 | |
| 18 | 26 | copt = {"msvc": ["/openmp"], "mingw32": ["-fopenmp"], "unix": unix_copt} |
| ... | ... | @@ -35,8 +43,39 @@ class build_ext_subclass(build_ext): |
| 35 | 43 | build_ext.build_extensions(self) |
| 36 | 44 | |
| 37 | 45 | |
| 46 | +class BuildPluginsCommand(distutils.cmd.Command): | |
| 47 | + """ | |
| 48 | + A custom command to build all plugins with cython code. | |
| 49 | + """ | |
| 50 | + | |
| 51 | + description = "Build all plugins with cython code" | |
| 52 | + user_options = [] | |
| 53 | + | |
| 54 | + def initialize_options(self): | |
| 55 | + pass | |
| 56 | + | |
| 57 | + def finalize_options(self): | |
| 58 | + pass | |
| 59 | + | |
| 60 | + def run(self): | |
| 61 | + compilable_plugins = ["porous_creation", "remove_tiny_objects"] | |
| 62 | + inv_folder = pathlib.Path(__file__).parent.resolve() | |
| 63 | + plugins_folder = inv_folder.joinpath("plugins") | |
| 64 | + for p in compilable_plugins: | |
| 65 | + plugin_folder = plugins_folder.joinpath(p) | |
| 66 | + self.announce("Compiling plugin: {}".format(p), level=distutils.log.INFO) | |
| 67 | + os.chdir(plugin_folder) | |
| 68 | + subprocess.check_call( | |
| 69 | + [sys.executable, "setup.py", "build_ext", "--inplace"] | |
| 70 | + ) | |
| 71 | + os.chdir(inv_folder) | |
| 72 | + | |
| 73 | + | |
| 38 | 74 | setup( |
| 39 | - cmdclass={"build_ext": build_ext_subclass}, | |
| 75 | + cmdclass={ | |
| 76 | + "build_ext": build_ext_subclass, | |
| 77 | + "build_plugins": BuildPluginsCommand, | |
| 78 | + }, | |
| 40 | 79 | ext_modules=cythonize( |
| 41 | 80 | [ |
| 42 | 81 | Extension( | ... | ... |