From 6f9d330de6e144f29e9673e8e9aa74aaa8342660 Mon Sep 17 00:00:00 2001 From: Jan Moren <jan.moren@gmail.com> Date: Fri, 29 Jan 2016 12:48:47 +0900 Subject: [PATCH] Add a check for mpi4py version during Cythin compilation. Version 2 of mpi4py has changed the name of a submodule from mpi_c to libmpi. We need to check which one to use at compile time. --- pymusic/Makefile.am | 10 +++++++--- pymusic/pybuffer.pxd | 6 +++++- pymusic/pymusic.pxd | 6 +++++- pymusic/tests.py | 10 ++++++++++ 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 pymusic/tests.py diff --git a/pymusic/Makefile.am b/pymusic/Makefile.am index c65e6e6..1d383d9 100644 --- a/pymusic/Makefile.am +++ b/pymusic/Makefile.am @@ -1,14 +1,18 @@ -EXTRA_DIST = setup.py.in pymusic.pyx pymusic.pxd music_c.h pybuffer.pyx pybuffer.pxd +EXTRA_DIST = setup.py.in tests.py pymusic.pyx pymusic.pxd music_c.h pybuffer.pyx pybuffer.pxd BUILT_SOURCES = pymusic.cpp pybuffer.cpp -pybuffer.cpp: pybuffer.pyx pybuffer.pxd + +pyconfig.pxi: tests.py + cd $(top_srcdir)/pymusic; $(PYTHON) tests.py + +pybuffer.cpp: pyconfig.pxi pybuffer.pyx pybuffer.pxd cd $(top_srcdir)/pymusic; $(PYTHON) -c \ "from Cython.Build import cythonize; \ cythonize('pybuffer.pyx', verbose=1)" -pymusic.cpp: pymusic.pyx pymusic.pxd +pymusic.cpp: pyconfig.pxi pymusic.pyx pymusic.pxd cd $(top_srcdir)/pymusic; $(PYTHON) -c \ "from Cython.Build import cythonize; \ cythonize('pymusic.pyx', verbose=1)" diff --git a/pymusic/pybuffer.pxd b/pymusic/pybuffer.pxd index 94aa5c6..7ad5b0b 100644 --- a/pymusic/pybuffer.pxd +++ b/pymusic/pybuffer.pxd @@ -3,8 +3,12 @@ cdef extern from "mpi_compat.h": pass +include "pyconfig.pxi" cimport mpi4py.MPI as MPI -from mpi4py.mpi_c cimport * +IF MPI4V2: + from mpi4py.libmpi cimport * +ELSE: + from mpi4py.mpi_c cimport * cdef extern from "music/pymusic_c.h": object PyUnicodeString_FromString(const char*) diff --git a/pymusic/pymusic.pxd b/pymusic/pymusic.pxd index bf8261e..92aa5c6 100644 --- a/pymusic/pymusic.pxd +++ b/pymusic/pymusic.pxd @@ -3,8 +3,12 @@ cdef extern from "mpi_compat.h": pass +include "pyconfig.pxi" cimport mpi4py.MPI as MPI -from mpi4py.mpi_c cimport * +IF MPI4V2: + from mpi4py.libmpi cimport * +ELSE: + from mpi4py.mpi_c cimport * from libcpp cimport bool as cbool from libcpp.string cimport string diff --git a/pymusic/tests.py b/pymusic/tests.py new file mode 100644 index 0000000..50c7407 --- /dev/null +++ b/pymusic/tests.py @@ -0,0 +1,10 @@ +# compile time python tests + +# Test mpi4py version +import mpi4py +from distutils.version import LooseVersion +is_v2 = LooseVersion(mpi4py.__version__) > LooseVersion("1.3.1") + +# Write configuration file +with open("pyconfig.pxi", "w") as f: + f.write("DEF MPI4V2 = {0}".format(is_v2)) -- GitLab