Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Mar 2017 20:25:29 +0000 (UTC)
From:      Tijl Coosemans <tijl@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r436025 - in head/lang: . OpenCoarrays OpenCoarrays/files
Message-ID:  <201703122025.v2CKPT3j040756@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tijl
Date: Sun Mar 12 20:25:29 2017
New Revision: 436025
URL: https://svnweb.freebsd.org/changeset/ports/436025

Log:
  Add lang/OpenCoarrays, an implementation of Fortran coarrays using MPI.
  
  OpenCoarrays is an open-source software project that supports the coarray
  Fortran (CAF) parallel programming features of the Fortran 2008 standard
  and several features proposed for Fortran 2015.
  
  WWW: http://www.opencoarrays.org/
  
  PR:		217283
  Submitted by:	Anton Shterenlikht <mexas@bris.ac.uk>

Added:
  head/lang/OpenCoarrays/
  head/lang/OpenCoarrays/Makefile   (contents, props changed)
  head/lang/OpenCoarrays/distinfo   (contents, props changed)
  head/lang/OpenCoarrays/files/
  head/lang/OpenCoarrays/files/patch-CMakeLists.txt   (contents, props changed)
  head/lang/OpenCoarrays/files/patch-src_mpi_CMakeLists.txt   (contents, props changed)
  head/lang/OpenCoarrays/files/patch-src_mpi_mpi__caf.c   (contents, props changed)
  head/lang/OpenCoarrays/pkg-descr   (contents, props changed)
  head/lang/OpenCoarrays/pkg-plist   (contents, props changed)
Modified:
  head/lang/Makefile

Modified: head/lang/Makefile
==============================================================================
--- head/lang/Makefile	Sun Mar 12 20:18:59 2017	(r436024)
+++ head/lang/Makefile	Sun Mar 12 20:25:29 2017	(r436025)
@@ -4,6 +4,7 @@
     COMMENT = Programming languages
 
     SUBDIR += Gofer
+    SUBDIR += OpenCoarrays
     SUBDIR += abcl
     SUBDIR += adacontrol
     SUBDIR += afnix

Added: head/lang/OpenCoarrays/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/OpenCoarrays/Makefile	Sun Mar 12 20:25:29 2017	(r436025)
@@ -0,0 +1,56 @@
+# Created by: Anton Shterenlikht
+# $FreeBSD$
+
+PORTNAME=	OpenCoarrays
+PORTVERSION=	1.8.4
+CATEGORIES=	lang
+
+MAINTAINER=	mexas@bris.ac.uk
+COMMENT=	Transport layer for coarray Fortran compilers
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	bash:shells/bash
+RUN_DEPENDS=	bash:shells/bash
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	sourceryinstitute
+
+USES=		cmake:outsource fortran shebangfix
+PLIST_SUB=	GCC_VER=${_GCC_VER}
+SHEBANG_FILES=	src/extensions/caf-head \
+		src/extensions/cafrun-head
+
+OPTIONS_SINGLE=		MPI
+OPTIONS_SINGLE_MPI=	MPICH OPENMPI OPENMPI2
+OPTIONS_DEFAULT=	MPICH
+
+MPICH_DESC=		Parallel processing support via MPICH
+MPICH_BUILD_DEPENDS=	mpif90:net/mpich
+MPICH_RUN_DEPENDS=	mpif90:net/mpich
+
+OPENMPI_BUILD_DEPENDS=	${LOCALBASE}/mpi/openmpi/bin/mpif90:net/openmpi
+OPENMPI_RUN_DEPENDS=	${LOCALBASE}/mpi/openmpi/bin/mpif90:net/openmpi
+OPENMPI_CONFIGURE_ENV=	MPI_HOME=${LOCALBASE}/mpi/openmpi
+
+OPENMPI2_DESC=		Parallel processing support via Open MPI v2
+OPENMPI2_BUILD_DEPENDS=	${LOCALBASE}/mpi/openmpi2/bin/mpif90:net/openmpi2
+OPENMPI2_RUN_DEPENDS=	${LOCALBASE}/mpi/openmpi2/bin/mpif90:net/openmpi2
+OPENMPI2_CONFIGURE_ENV=	MPI_HOME=${LOCALBASE}/mpi/openmpi2
+
+.include <bsd.port.options.mk>
+
+.if ${GCC_DEFAULT:R} < 5
+IGNORE=		This port requires GCC 5 or higher.  Add\
+		DEFAULT_VERSIONS+=gcc=5 to /etc/make.conf
+.endif
+
+post-patch:
+	@${REINPLACE_CMD} '/mod_install/s/$${CMAKE_Fortran_COMPILER_VERSION}/${_GCC_VER}/' \
+		${WRKSRC}/src/mpi/CMakeLists.txt
+
+do-test:
+	(cd ${TEST_WRKSRC} && ctest)
+
+.include <bsd.port.mk>

Added: head/lang/OpenCoarrays/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/OpenCoarrays/distinfo	Sun Mar 12 20:25:29 2017	(r436025)
@@ -0,0 +1,3 @@
+TIMESTAMP = 1487389722
+SHA256 (sourceryinstitute-OpenCoarrays-1.8.4_GH0.tar.gz) = c40b504a65ea2933a3b68979c4e08dc9522f22b7a8d560d734d1a8bc6bcc1ee7
+SIZE (sourceryinstitute-OpenCoarrays-1.8.4_GH0.tar.gz) = 243759

Added: head/lang/OpenCoarrays/files/patch-CMakeLists.txt
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/OpenCoarrays/files/patch-CMakeLists.txt	Sun Mar 12 20:25:29 2017	(r436025)
@@ -0,0 +1,51 @@
+--- CMakeLists.txt.orig	2017-02-07 05:19:01 UTC
++++ CMakeLists.txt
+@@ -164,48 +164,6 @@ if ( (NOT MPI_C_FOUND) OR (NOT MPI_Fortr
+   find_package( MPI REQUIRED )
+ endif()
+ 
+-#--------------------------------------------------------
+-# Make sure a simple "hello world" C mpi program compiles
+-#--------------------------------------------------------
+-set(OLD_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+-set(CMAKE_REQUIRED_FLAGS ${MPI_C_COMPILE_FLAGS} ${MPI_C_LINK_FLAGS})
+-set(OLD_INCLUDES ${CMAKE_REQUIRED_INCLUDES})
+-set(CMAKE_REQUIRED_INCLUDES ${MPI_C_INCLUDE_PATH})
+-set(OLD_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+-set(CMAKE_REQUIRED_LIBRARIES ${MPI_C_LIBRARIES})
+-include (CheckCSourceCompiles)
+-CHECK_C_SOURCE_COMPILES("
+-#include <mpi.h>
+-#include <stdio.h>
+-int main(int argc, char** argv) {
+-  MPI_Init(NULL, NULL);
+-  int world_size;
+-  MPI_Comm_size(MPI_COMM_WORLD, &world_size);
+-  int world_rank;
+-  MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
+-  char processor_name[MPI_MAX_PROCESSOR_NAME];
+-  int name_len;
+-  MPI_Get_processor_name(processor_name, &name_len);
+-  printf('Hello world from processor %s, rank %d out of %d processors',
+-         processor_name, world_rank, world_size);
+-  MPI_Finalize();
+-}"
+-MPI_C_COMPILES)
+-set(CMAKE_REQUIRED_FLAGS ${OLD_REQUIRED_FLAGS})
+-set(CMAKE_REQUIRED_INCLUDES ${OLD_INCLUDES})
+-set(CMAKE_REQUIRED_LIBRARIES ${OLD_LIBRARIES})
+-unset(OLD_REQUIRED_FLAGS)
+-unset(OLD_INCLUDES)
+-unset(OLD_LIBRARIES)
+-
+-if (NOT MPI_C_COMPILES)
+-  message(FATAL_ERROR "MPI_C is missing! "
+-    "Try setting MPI_C_COMPILER to the appropriate C compiler wrapper script and reconfigure. "
+-    "i.e., `cmake -DMPI_C_COMPILER=/path/to/mpicc ..` or set it by editing the cache using "
+-    "cmake-gui or ccmake."
+-    )
+-endif()
+-
+ #--------------------------------------------------------------
+ # Make sure a simple "hello world" Fortran mpi program compiles
+ # Try using mpi.mod first then fall back on includ 'mpif.h'

Added: head/lang/OpenCoarrays/files/patch-src_mpi_CMakeLists.txt
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/OpenCoarrays/files/patch-src_mpi_CMakeLists.txt	Sun Mar 12 20:25:29 2017	(r436025)
@@ -0,0 +1,39 @@
+--- src/mpi/CMakeLists.txt.orig	2017-02-07 05:19:01 UTC
++++ src/mpi/CMakeLists.txt
+@@ -58,15 +58,15 @@ install(TARGETS caf_mpi EXPORT OpenCoarr
+ )
+ 
+ # Install modules to standard include dir, but namespace them with compiler/version
+-set (mod_install "${CMAKE_INSTALL_FULL_INCLUDEDIR}/OpenCoarrays/${CMAKE_Fortran_COMPILER_ID}/${CMAKE_Fortran_COMPILER_VERSION}")
++set (mod_install "OpenCoarrays/${CMAKE_Fortran_COMPILER_ID}/${CMAKE_Fortran_COMPILER_VERSION}")
+ install(DIRECTORY  "${CMAKE_BINARY_DIR}/mod/"
+-  DESTINATION "${mod_install}"
++  DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/${mod_install}"
+   FILES_MATCHING PATTERN "*.mod"
+ )
+ 
+ # Now add a link in standard include dir so that compilers will find by default... this may or may not actually be a good idea...
+ if ( "${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU" )
+-  INSTALL(CODE "execute_process( COMMAND ${CMAKE_COMMAND} -E create_symlink ${mod_install}/opencoarrays.mod ${CMAKE_INSTALL_FULL_INCLUDEDIR}/opencoarrays.mod )"
++  INSTALL(CODE "execute_process( COMMAND ${CMAKE_COMMAND} -E create_symlink ${mod_install}/opencoarrays.mod \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_INCLUDEDIR}/opencoarrays.mod )"
+   )
+ endif ()
+ 
+@@ -76,7 +76,7 @@ set(exe_dir ${CMAKE_BINARY_DIR}/bin_stag
+ set(compiler_wrapper ${exe_dir}/caf)
+ install(
+     FILES "${compiler_wrapper}"
+-    PERMISSIONS WORLD_EXECUTE WORLD_READ WORLD_WRITE OWNER_EXECUTE OWNER_READ OWNER_WRITE GROUP_EXECUTE GROUP_READ GROUP_WRITE
++    PERMISSIONS WORLD_EXECUTE WORLD_READ OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ
+     DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ )
+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../extensions/caf-head CAF_HEADER)
+@@ -109,7 +109,7 @@ file(APPEND "${compiler_wrapper}" "${FOO
+ set(caf_launcher ${exe_dir}/cafrun)
+ install(
+     FILES "${caf_launcher}"
+-    PERMISSIONS WORLD_EXECUTE WORLD_READ WORLD_WRITE OWNER_EXECUTE OWNER_READ OWNER_WRITE GROUP_EXECUTE GROUP_READ GROUP_WRITE
++    PERMISSIONS WORLD_EXECUTE WORLD_READ OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ
+     DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ )
+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/../extensions/cafrun-head CAFRUN_HEADER)

Added: head/lang/OpenCoarrays/files/patch-src_mpi_mpi__caf.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/OpenCoarrays/files/patch-src_mpi_mpi__caf.c	Sun Mar 12 20:25:29 2017	(r436025)
@@ -0,0 +1,10 @@
+--- src/mpi/mpi_caf.c.orig	2017-02-07 05:19:01 UTC
++++ src/mpi/mpi_caf.c
+@@ -37,7 +37,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
+ #include <stdlib.h>
+ #include <string.h>        /* For memcpy.  */
+ #include <stdarg.h>        /* For variadic arguments.  */
+-#include <alloca.h>
+ #include <unistd.h>
+ #include <mpi.h>
+ #include <pthread.h>

Added: head/lang/OpenCoarrays/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/OpenCoarrays/pkg-descr	Sun Mar 12 20:25:29 2017	(r436025)
@@ -0,0 +1,5 @@
+OpenCoarrays is an open-source software project that supports the coarray
+Fortran (CAF) parallel programming features of the Fortran 2008 standard
+and several features proposed for Fortran 2015.
+
+WWW: http://www.opencoarrays.org/

Added: head/lang/OpenCoarrays/pkg-plist
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/OpenCoarrays/pkg-plist	Sun Mar 12 20:25:29 2017	(r436025)
@@ -0,0 +1,11 @@
+bin/caf
+bin/cafrun
+include/OpenCoarrays/GNU/%%GCC_VER%%/opencoarrays.mod
+include/libcaf-gfortran-descriptor.h
+include/libcaf.h
+include/opencoarrays.mod
+lib/cmake/opencoarrays/OpenCoarraysConfig.cmake
+lib/cmake/opencoarrays/OpenCoarraysConfigVersion.cmake
+lib/cmake/opencoarrays/OpenCoarraysTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/opencoarrays/OpenCoarraysTargets.cmake
+lib/libcaf_mpi.a



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201703122025.v2CKPT3j040756>