summaryrefslogtreecommitdiff
path: root/net/py-mpi4py
diff options
context:
space:
mode:
authorYuri Victorovich <yuri@FreeBSD.org>2018-09-21 03:48:57 +0000
committerYuri Victorovich <yuri@FreeBSD.org>2018-09-21 03:48:57 +0000
commit3d517de43c272d92629535be05de2ccac6221d66 (patch)
tree251ab5ac9e43cd898efc2326c36680dc2196e826 /net/py-mpi4py
parentwww/grafana5: update to 5.2.4 (diff)
New port: net/py-mpi4py: Python bindings for MPI
PR: 211768 Submitted by: Michael Danilov <mike.d.ft402@gmail.com>
Notes
Notes: svn path=/head/; revision=480224
Diffstat (limited to 'net/py-mpi4py')
-rw-r--r--net/py-mpi4py/Makefile61
-rw-r--r--net/py-mpi4py/distinfo3
-rw-r--r--net/py-mpi4py/files/mpi.cfg6
-rw-r--r--net/py-mpi4py/files/mpi2.cfg6
-rw-r--r--net/py-mpi4py/files/patch-setup.py25
-rw-r--r--net/py-mpi4py/pkg-descr5
6 files changed, 106 insertions, 0 deletions
diff --git a/net/py-mpi4py/Makefile b/net/py-mpi4py/Makefile
new file mode 100644
index 000000000000..208ab795050c
--- /dev/null
+++ b/net/py-mpi4py/Makefile
@@ -0,0 +1,61 @@
+# $FreeBSD$
+
+PORTNAME= mpi4py
+DISTVERSION= 3.0.0
+CATEGORIES= net parallel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= mike.d.ft402@gmail.com
+COMMENT= Python bindings for MPI
+
+LICENSE= BSD2CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE.rst
+
+USES= python
+USE_PYTHON= distutils cython autoplist concurrent
+
+OPTIONS_DEFINE= DOCS MANPAGES
+OPTIONS_SINGLE= MP
+OPTIONS_SINGLE_MP= MPICH2 OPENMPI OPENMPI2
+OPTIONS_DEFAULT= OPENMPI # the only non-failing MPI implementation
+MP_DESC= MPI Implementation
+
+MPICH2_USES= fortran
+MPICH2_LIB_DEPENDS= libmpich.so:net/mpich2
+MPICH2_LDFLAGS= ${LOCALBASE}/lib/gcc${GCC_DEFAULT}/libgcc_s.so
+
+OPENMPI_LIB_DEPENDS= libmpi.so:net/openmpi
+
+OPENMPI2_DESC= ${OPENMPI_DESC} 2.x
+OPENMPI2_LIB_DEPENDS= libmpi.so:net/openmpi2
+
+PORTDOCS= *
+
+do-patch-OPENMPI-on:
+ @${CP} ${FILESDIR}/mpi.cfg ${WRKSRC}/
+ @${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|' ${WRKSRC}/mpi.cfg
+
+do-patch-OPENMPI2-on:
+ @${CP} ${FILESDIR}/mpi2.cfg ${WRKSRC}/mpi.cfg
+ @${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|' ${WRKSRC}/mpi.cfg
+
+do-install-DOCS-on:
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/README.rst ${STAGEDIR}${DOCSDIR}
+ cd ${WRKSRC}/docs && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}
+ @${RM} ${STAGEDIR}${DOCSDIR}/${PORTNAME}.1
+
+do-install-MANPAGES-on:
+ ${INSTALL_MAN} ${WRKSRC}/docs/${PORTNAME}.1 ${STAGEDIR}${PREFIX}/man/man1
+ @${ECHO} man/man1/mpi4py.1.gz >> ${TMPPLIST}
+
+post-install:
+ @cd ${STAGEDIR}${PYTHON_SITELIBDIR}/mpi4py && ${STRIP_CMD} dl.so MPI.so lib-pmpi/libvt-hyb.so lib-pmpi/libvt.so lib-pmpi/libvt-mpi.so lib-pmpi/libmpe.so
+
+do-test:
+ # tests fail with MPICH2=on: https://bitbucket.org/mpi4py/mpi4py/issues/110/tests-fail-with-mpich2-on-freebsd-error
+ # tests fail with OPENMPI2=on: https://bitbucket.org/mpi4py/mpi4py/issues/109/tests-fail-with-openmpi2-on-freebsd
+ @cd ${WRKSRC} && ${PYTHON_CMD} ${PYDISTUTILS_SETUP} test
+
+.include <bsd.port.mk>
diff --git a/net/py-mpi4py/distinfo b/net/py-mpi4py/distinfo
new file mode 100644
index 000000000000..36870cb6331a
--- /dev/null
+++ b/net/py-mpi4py/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1537487949
+SHA256 (mpi4py-3.0.0.tar.gz) = b457b02d85bdd9a4775a097fac5234a20397b43e073f14d9e29b6cd78c68efd7
+SIZE (mpi4py-3.0.0.tar.gz) = 1426843
diff --git a/net/py-mpi4py/files/mpi.cfg b/net/py-mpi4py/files/mpi.cfg
new file mode 100644
index 000000000000..2057be4b343f
--- /dev/null
+++ b/net/py-mpi4py/files/mpi.cfg
@@ -0,0 +1,6 @@
+[mpi]
+mpi_dir = %%LOCALBASE%%/mpi/openmpi
+mpicc = %(mpi_dir)s/bin/mpicc
+mpicxx = %(mpi_dir)s/bin/mpicxx
+library_dirs = %(mpi_dir)s/lib
+runtime_library_dirs = %(library_dirs)s
diff --git a/net/py-mpi4py/files/mpi2.cfg b/net/py-mpi4py/files/mpi2.cfg
new file mode 100644
index 000000000000..3ce4d9df0afd
--- /dev/null
+++ b/net/py-mpi4py/files/mpi2.cfg
@@ -0,0 +1,6 @@
+[mpi]
+mpi_dir = %%LOCALBASE%%/mpi/openmpi2
+mpicc = %(mpi_dir)s/bin/mpicc
+mpicxx = %(mpi_dir)s/bin/mpicxx
+library_dirs = %(mpi_dir)s/lib
+runtime_library_dirs = %(library_dirs)s
diff --git a/net/py-mpi4py/files/patch-setup.py b/net/py-mpi4py/files/patch-setup.py
new file mode 100644
index 000000000000..8eecac4eec0a
--- /dev/null
+++ b/net/py-mpi4py/files/patch-setup.py
@@ -0,0 +1,25 @@
+--- setup.py.orig 2017-11-25 07:11:10 UTC
++++ setup.py
+@@ -174,10 +174,10 @@ def configure_dl(ext, config_cmd):
+ log.info("checking for dlopen() availability ...")
+ ok = config_cmd.check_header('dlfcn.h')
+ if ok : ext.define_macros += [('HAVE_DLFCN_H', 1)]
+- ok = config_cmd.check_library('dl')
+- if ok: ext.libraries += ['dl']
++ #ok = config_cmd.check_library('dl')
++ #if ok: ext.libraries += ['dl']
+ ok = config_cmd.check_function('dlopen',
+- libraries=['dl'],
++ #libraries=['dl'],
+ decl=1, call=1)
+ if ok: ext.define_macros += [('HAVE_DLOPEN', 1)]
+
+@@ -287,7 +287,7 @@ def configure_libvt(lib, config_cmd):
+ log_lib = 'vt.ompi'
+ else:
+ log_lib = 'vt.mpi'
+- dep_libs = ('dl', 'z', 'otf',)
++ dep_libs = ('z', 'otf',)
+ ok = config_cmd.check_library(log_lib, lib.library_dirs)
+ if not ok: return
+ libraries = []
diff --git a/net/py-mpi4py/pkg-descr b/net/py-mpi4py/pkg-descr
new file mode 100644
index 000000000000..43e33fe96b3c
--- /dev/null
+++ b/net/py-mpi4py/pkg-descr
@@ -0,0 +1,5 @@
+This package provides Python bindings for the Message Passing Interface (MPI)
+standard. It is implemented on top of the MPI-1/MPI-2 specification and
+exposes an API which grounds on the standard MPI-2 C++ bindings
+
+WWW: https://bitbucket.org/mpi4py/mpi4py/