Commit 6bd21102356a4f846899fc8e353b23b78cb36820

Authored by Thiago Franco de Moraes
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(
... ...