diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f928056 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +SOURCES/openmpi-1.10.7.tar.bz2 +SOURCES/openmpi-1.6.4-clean.tar.xz +SOURCES/openmpi-3.1.3.tar.bz2 diff --git a/.openmpi.metadata b/.openmpi.metadata new file mode 100644 index 0000000..0d680ad --- /dev/null +++ b/.openmpi.metadata @@ -0,0 +1,3 @@ +fe359d8caa4888625308cf03343d913dd5ac6198 SOURCES/openmpi-1.10.7.tar.bz2 +24ec0fd3b82c72df9086e5b6b6be6d0a72f70892 SOURCES/openmpi-1.6.4-clean.tar.xz +b3c60e2bdd5a8a8e758fd741f9a5bebb84da5e81 SOURCES/openmpi-3.1.3.tar.bz2 diff --git a/SOURCES/0001-Add-Chelsio-T6-adapter-device-parameters.patch b/SOURCES/0001-Add-Chelsio-T6-adapter-device-parameters.patch new file mode 100644 index 0000000..b4dba68 --- /dev/null +++ b/SOURCES/0001-Add-Chelsio-T6-adapter-device-parameters.patch @@ -0,0 +1,33 @@ +From 0d4d36a2dd40bddb866d10fe056e371a8441a116 Mon Sep 17 00:00:00 2001 +From: Potnuri Bharat Teja +Date: Tue, 23 Aug 2016 10:38:13 +0530 +Subject: [PATCH] Add Chelsio T6 adapter device parameters. + +Signed-off-by: Potnuri Bharat Teja +(cherry picked from commit 9b7f9ece2031531d159283000ebeecb0eaa1ef0d) +--- + ompi/mca/btl/openib/mca-btl-openib-device-params.ini | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/ompi/mca/btl/openib/mca-btl-openib-device-params.ini b/ompi/mca/btl/openib/mca-btl-openib-device-params.ini +index a61b91ffcb..406f2f917e 100644 +--- a/ompi/mca/btl/openib/mca-btl-openib-device-params.ini ++++ b/ompi/mca/btl/openib/mca-btl-openib-device-params.ini +@@ -253,6 +253,14 @@ mtu = 2048 + receive_queues = P,65536,64 + max_inline_data = 280 + ++[Chelsio T6] ++vendor_id = 0x1425 ++vendor_part_id = 0x6400,0x6401,0x6402,0x6403,0x6404,0x6405,0x6406,0x6407,0x6408,0x6409,0x640d,0x6410,0x6411,0x6414,0x6415 ++use_eager_rdma = 1 ++mtu = 2048 ++receive_queues = P,65536,64 ++max_inline_data = 280 ++ + ############################################################################ + + # I'm *assuming* that 0x4040 is the PCI ID... +-- +2.9.3 + diff --git a/SOURCES/0001-tests-disable-opal_fifo-test.patch b/SOURCES/0001-tests-disable-opal_fifo-test.patch new file mode 100644 index 0000000..c1c042c --- /dev/null +++ b/SOURCES/0001-tests-disable-opal_fifo-test.patch @@ -0,0 +1,133 @@ +From 666ed459887782994fa963f77f3144eb647e2b1e Mon Sep 17 00:00:00 2001 +From: Michal Schmidt +Date: Fri, 3 Nov 2017 10:34:07 +0100 +Subject: [PATCH] tests: disable opal_fifo test + +The opal_fifo test hangs on ppc64le. +https://github.com/open-mpi/ompi/issues/2526 +https://github.com/open-mpi/ompi/issues/2966 +--- + test/class/Makefile.am | 16 +++++++++------- + test/class/Makefile.in | 26 +++----------------------- + 2 files changed, 12 insertions(+), 30 deletions(-) + +diff --git a/test/class/Makefile.am b/test/class/Makefile.am +index 4dc7daf24c..fc325ef96e 100644 +--- a/test/class/Makefile.am ++++ b/test/class/Makefile.am +@@ -35,8 +35,7 @@ check_PROGRAMS = \ + opal_list \ + opal_value_array \ + opal_pointer_array \ +- opal_lifo \ +- opal_fifo ++ opal_lifo + + TESTS = $(check_PROGRAMS) + +@@ -95,11 +94,14 @@ opal_lifo_LDADD = \ + $(top_builddir)/test/support/libsupport.a + opal_lifo_DEPENDENCIES = $(opal_lifo_LDADD) + +-opal_fifo_SOURCES = opal_fifo.c +-opal_fifo_LDADD = \ +- $(top_builddir)/opal/lib@OPAL_LIB_PREFIX@open-pal.la \ +- $(top_builddir)/test/support/libsupport.a +-opal_fifo_DEPENDENCIES = $(opal_fifo_LDADD) ++# Disabled due to: ++# https://github.com/open-mpi/ompi/issues/2526 ++# https://github.com/open-mpi/ompi/issues/2966 ++#opal_fifo_SOURCES = opal_fifo.c ++#opal_fifo_LDADD = \ ++# $(top_builddir)/opal/lib@OPAL_LIB_PREFIX@open-pal.la \ ++# $(top_builddir)/test/support/libsupport.a ++#opal_fifo_DEPENDENCIES = $(opal_fifo_LDADD) + + clean-local: + rm -f opal_bitmap_test_out.txt opal_hash_table_test_out.txt opal_proc_table_test_out.txt +diff --git a/test/class/Makefile.in b/test/class/Makefile.in +index c6c20f30b9..2ed128a77f 100644 +--- a/test/class/Makefile.in ++++ b/test/class/Makefile.in +@@ -115,7 +115,7 @@ check_PROGRAMS = $(am__EXEEXT_1) opal_bitmap$(EXEEXT) \ + opal_hash_table$(EXEEXT) opal_proc_table$(EXEEXT) \ + opal_tree$(EXEEXT) opal_list$(EXEEXT) \ + opal_value_array$(EXEEXT) opal_pointer_array$(EXEEXT) \ +- opal_lifo$(EXEEXT) opal_fifo$(EXEEXT) ++ opal_lifo$(EXEEXT) + subdir = test/class + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/config/c_get_alignment.m4 \ +@@ -426,8 +426,6 @@ am__v_lt_0 = --silent + am__v_lt_1 = + am_opal_bitmap_OBJECTS = opal_bitmap.$(OBJEXT) + opal_bitmap_OBJECTS = $(am_opal_bitmap_OBJECTS) +-am_opal_fifo_OBJECTS = opal_fifo.$(OBJEXT) +-opal_fifo_OBJECTS = $(am_opal_fifo_OBJECTS) + am_opal_hash_table_OBJECTS = opal_hash_table.$(OBJEXT) + opal_hash_table_OBJECTS = $(am_opal_hash_table_OBJECTS) + am_opal_lifo_OBJECTS = opal_lifo.$(OBJEXT) +@@ -477,12 +475,12 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) + am__v_CCLD_0 = @echo " CCLD " $@; + am__v_CCLD_1 = + SOURCES = $(ompi_rb_tree_SOURCES) $(opal_bitmap_SOURCES) \ +- $(opal_fifo_SOURCES) $(opal_hash_table_SOURCES) \ ++ $(opal_hash_table_SOURCES) \ + $(opal_lifo_SOURCES) $(opal_list_SOURCES) \ + $(opal_pointer_array_SOURCES) $(opal_proc_table_SOURCES) \ + $(opal_tree_SOURCES) $(opal_value_array_SOURCES) + DIST_SOURCES = $(ompi_rb_tree_SOURCES) $(opal_bitmap_SOURCES) \ +- $(opal_fifo_SOURCES) $(opal_hash_table_SOURCES) \ ++ $(opal_hash_table_SOURCES) \ + $(opal_lifo_SOURCES) $(opal_list_SOURCES) \ + $(opal_pointer_array_SOURCES) $(opal_proc_table_SOURCES) \ + $(opal_tree_SOURCES) $(opal_value_array_SOURCES) +@@ -1974,12 +1972,6 @@ opal_lifo_LDADD = \ + $(top_builddir)/test/support/libsupport.a + + opal_lifo_DEPENDENCIES = $(opal_lifo_LDADD) +-opal_fifo_SOURCES = opal_fifo.c +-opal_fifo_LDADD = \ +- $(top_builddir)/opal/lib@OPAL_LIB_PREFIX@open-pal.la \ +- $(top_builddir)/test/support/libsupport.a +- +-opal_fifo_DEPENDENCIES = $(opal_fifo_LDADD) + all: all-am + + .SUFFIXES: +@@ -2031,10 +2023,6 @@ opal_bitmap$(EXEEXT): $(opal_bitmap_OBJECTS) $(opal_bitmap_DEPENDENCIES) $(EXTRA + @rm -f opal_bitmap$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(opal_bitmap_OBJECTS) $(opal_bitmap_LDADD) $(LIBS) + +-opal_fifo$(EXEEXT): $(opal_fifo_OBJECTS) $(opal_fifo_DEPENDENCIES) $(EXTRA_opal_fifo_DEPENDENCIES) +- @rm -f opal_fifo$(EXEEXT) +- $(AM_V_CCLD)$(LINK) $(opal_fifo_OBJECTS) $(opal_fifo_LDADD) $(LIBS) +- + opal_hash_table$(EXEEXT): $(opal_hash_table_OBJECTS) $(opal_hash_table_DEPENDENCIES) $(EXTRA_opal_hash_table_DEPENDENCIES) + @rm -f opal_hash_table$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(opal_hash_table_OBJECTS) $(opal_hash_table_LDADD) $(LIBS) +@@ -2071,7 +2059,6 @@ distclean-compile: + + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ompi_rb_tree.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opal_bitmap.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opal_fifo.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opal_hash_table.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opal_lifo.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opal_list.Po@am__quote@ +@@ -2366,13 +2353,6 @@ opal_lifo.log: opal_lifo$(EXEEXT) + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +-opal_fifo.log: opal_fifo$(EXEEXT) +- @p='opal_fifo$(EXEEXT)'; \ +- b='opal_fifo'; \ +- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ +- --log-file $$b.log --trs-file $$b.trs \ +- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ +- "$$tst" $(AM_TESTS_FD_REDIRECT) + .test.log: + @p='$<'; \ + $(am__set_b); \ +-- +2.13.6 + diff --git a/SOURCES/0002-btl-openib-fix-segmentation-fault.patch b/SOURCES/0002-btl-openib-fix-segmentation-fault.patch new file mode 100644 index 0000000..725ba66 --- /dev/null +++ b/SOURCES/0002-btl-openib-fix-segmentation-fault.patch @@ -0,0 +1,37 @@ +From 5efe6f70f310858f554287bcf7883442380a0701 Mon Sep 17 00:00:00 2001 +From: Nathan Hjelm +Date: Tue, 28 Jun 2016 10:26:16 -0600 +Subject: [PATCH] btl/openib: fix segmentation fault + +This commit fixes a segmentation fault that occurs if a device can be +initialized but not used. In this case the devices_count is not equal +to the number of usable devices in the devices pointer array. + +Thanks to @artpol84 for tracking this down. + +Fixes open-mpi/ompi#1823 + +Signed-off-by: Nathan Hjelm +(cherry picked from commit 8128c8eb29d6adde288fca5db3f71fb98e1727f6) +--- + ompi/mca/btl/openib/btl_openib_component.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/ompi/mca/btl/openib/btl_openib_component.c b/ompi/mca/btl/openib/btl_openib_component.c +index 40831f2373..d1376e0a58 100644 +--- a/ompi/mca/btl/openib/btl_openib_component.c ++++ b/ompi/mca/btl/openib/btl_openib_component.c +@@ -3630,7 +3630,9 @@ static int btl_openib_component_progress(void) + for(i = 0; i < mca_btl_openib_component.devices_count; i++) { + mca_btl_openib_device_t *device = + (mca_btl_openib_device_t *) opal_pointer_array_get_item(&mca_btl_openib_component.devices, i); +- count += progress_one_device(device); ++ if (NULL != device) { ++ count += progress_one_device(device); ++ } + } + + #if OPAL_CUDA_SUPPORT /* CUDA_ASYNC_SEND */ +-- +2.13.5 + diff --git a/SOURCES/macros.openmpi.in b/SOURCES/macros.openmpi.in new file mode 100644 index 0000000..7232d2f --- /dev/null +++ b/SOURCES/macros.openmpi.in @@ -0,0 +1,7 @@ +%_@MACRONAME@_load \ + . /etc/profile.d/modules.sh; \ + module load mpi/@MODULENAME@; \ + export CFLAGS="$CFLAGS %{optflags}"; +%_@MACRONAME@_unload \ + . /etc/profile.d/modules.sh; \ + module unload mpi/@MODULENAME@; diff --git a/SOURCES/macros.openmpi3 b/SOURCES/macros.openmpi3 new file mode 100644 index 0000000..7740881 --- /dev/null +++ b/SOURCES/macros.openmpi3 @@ -0,0 +1,6 @@ +%_openmpi3_load \ + . /etc/profile.d/modules.sh; \ + module load mpi/openmpi3-%{_arch}; +%_openmpi3_unload \ + . /etc/profile.d/modules.sh; \ + module unload mpi/openmpi3-%{_arch}; diff --git a/SOURCES/openmpi-1.6.4-aarch64.patch b/SOURCES/openmpi-1.6.4-aarch64.patch new file mode 100644 index 0000000..f9ccbbb --- /dev/null +++ b/SOURCES/openmpi-1.6.4-aarch64.patch @@ -0,0 +1,657 @@ +From 351e63eeb4123aa2d2dc13a01912968ad1365fa1 Mon Sep 17 00:00:00 2001 +From: Brian Barrett +Date: Wed, 23 Nov 2011 04:25:41 +0000 +Subject: [PATCH] Add (optional/last ditch effort) support for GCC/Intel + __sync_ builtin atomic operations. Much easier than adding support for a new + architecture. + +--- + LICENSE | 2 +- + opal/config/opal_config_asm.m4 | 38 +++++++- + opal/include/opal/sys/Makefile.am | 2 + + opal/include/opal/sys/architecture.h | 2 + + opal/include/opal/sys/atomic.h | 9 ++ + opal/include/opal/sys/sync_builtin/Makefile.am | 24 +++++ + opal/include/opal/sys/sync_builtin/atomic.h | 116 +++++++++++++++++++++++++ + opal/include/opal/sys/sync_builtin/timer.h | 27 ++++++ + 8 files changed, 217 insertions(+), 3 deletions(-) + create mode 100644 opal/include/opal/sys/sync_builtin/Makefile.am + create mode 100644 opal/include/opal/sys/sync_builtin/atomic.h + create mode 100644 opal/include/opal/sys/sync_builtin/timer.h + +diff --git a/LICENSE b/LICENSE +index d6424ab..0712868 100644 +--- a/LICENSE ++++ b/LICENSE +@@ -19,7 +19,7 @@ Copyright (c) 2006-2010 Los Alamos National Security, LLC. All rights + reserved. + Copyright (c) 2006-2010 Cisco Systems, Inc. All rights reserved. + Copyright (c) 2006-2010 Voltaire, Inc. All rights reserved. +-Copyright (c) 2006-2010 Sandia National Laboratories. All rights reserved. ++Copyright (c) 2006-2011 Sandia National Laboratories. All rights reserved. + Copyright (c) 2006-2010 Sun Microsystems, Inc. All rights reserved. + Use is subject to license terms. + Copyright (c) 2006-2010 The University of Houston. All rights reserved. +diff --git a/opal/config/opal_config_asm.m4 b/opal/config/opal_config_asm.m4 +index fc7fdcd..591f4c3 100644 +--- a/opal/config/opal_config_asm.m4 ++++ b/opal/config/opal_config_asm.m4 +@@ -19,6 +19,17 @@ dnl $HEADER$ + dnl + + ++AC_DEFUN([OPAL_CHECK_SYNC_BUILTINS], [ ++ AC_MSG_CHECKING([for __sync builtin atomics]) ++ ++ AC_TRY_COMPILE([], [__sync_synchronize()], ++ [AC_MSG_RESULT([yes]) ++ $1], ++ [AC_MSG_RESULT([no]) ++ $2]) ++]) ++ ++ + dnl ################################################################# + dnl + dnl OMPI_CHECK_ASM_TEXT +@@ -841,8 +852,21 @@ AC_DEFUN([OPAL_CONFIG_ASM],[ + AC_DEFINE_UNQUOTED([OPAL_WANT_SMP_LOCKS], [$want_smp_locks], + [whether we want to have smp locks in atomic ops or not]) + ++ AC_ARG_ENABLE([builtin-atomics], ++ [AC_HELP_STRING([--enable-builtin-atomics], ++ [Enable use of __sync builtin atomics (default: disabled)])]) ++ + if test "$ompi_cv_c_compiler_vendor" = "microsoft" ; then + ompi_cv_asm_arch="WINDOWS" ++ elif test "$enable_builtin_atomics" = "yes" ; then ++ OPAL_CHECK_SYNC_BUILTINS([ompi_cv_asm_arch="SYNC_BUILTIN"], ++ [AC_MSG_ERROR([__sync builtin atomics requested but not found.])]) ++ AC_DEFINE([OPAL_C_GCC_INLINE_ASSEMBLY], [1], ++ [Whether C compiler supports GCC style inline assembly]) ++ m4_ifdef([project_ompi], ++ [AS_IF([test "$WANT_MPI_CXX_SUPPORT" = "1"], ++ [AC_DEFINE([OMPI_CXX_GCC_INLINE_ASSEMBLY], [1], ++ [Whether C++ compiler supports GCC style inline assembly])])]) + else + OMPI_CHECK_ASM_PROC + OMPI_CHECK_ASM_TEXT +@@ -946,10 +970,19 @@ AC_MSG_ERROR([Can not continue.]) + ;; + + *) +- AC_MSG_ERROR([No atomic primitives available for $host]) ++ OPAL_CHECK_SYNC_BUILTINS([ompi_cv_asm_arch="SYNC_BUILTIN"], ++ [AC_MSG_ERROR([No atomic primitives available for $host])]) + ;; + esac + ++ if test "$ompi_cv_asm_arch" = "SYNC_BUILTIN" ; then ++ AC_DEFINE([OPAL_C_GCC_INLINE_ASSEMBLY], [1], ++ [Whether C compiler supports GCC style inline assembly]) ++ m4_ifdef([project_ompi], ++ [AS_IF([test "$WANT_MPI_CXX_SUPPORT" = "1"], ++ [AC_DEFINE([OMPI_CXX_GCC_INLINE_ASSEMBLY], [1], ++ [Whether C++ compiler supports GCC style inline assembly])])]) ++ else + AC_DEFINE_UNQUOTED([OPAL_ASM_SUPPORT_64BIT], + [$OPAL_ASM_SUPPORT_64BIT], + [Whether we can do 64bit assembly operations or not. Should not be used outside of the assembly header files]) +@@ -1004,6 +1037,7 @@ AC_MSG_ERROR([Can not continue.]) + AC_DEFINE_UNQUOTED([OPAL_ASSEMBLY_FORMAT], ["$OPAL_ASSEMBLY_FORMAT"], + [Format of assembly file]) + AC_SUBST([OPAL_ASSEMBLY_FORMAT]) ++ fi # if ompi_cv_asm_arch = SYNC_BUILTIN + fi # if cv_c_compiler_vendor = microsoft + + result="OMPI_$ompi_cv_asm_arch" +@@ -1032,7 +1066,7 @@ AC_DEFUN([OMPI_ASM_FIND_FILE], [ + AC_REQUIRE([AC_PROG_GREP]) + AC_REQUIRE([AC_PROG_FGREP]) + +-if test "$ompi_cv_asm_arch" != "WINDOWS" ; then ++if test "$ompi_cv_asm_arch" != "WINDOWS" -a "$ompi_cv_asm_arch" != "SYNC_BUILTIN" ; then + AC_CHECK_PROG([PERL], [perl], [perl]) + + # see if we have a pre-built one already +diff --git a/opal/include/opal/sys/Makefile.am b/opal/include/opal/sys/Makefile.am +index 0917c7d..6c411c5 100644 +--- a/opal/include/opal/sys/Makefile.am ++++ b/opal/include/opal/sys/Makefile.am +@@ -10,6 +10,7 @@ + # Copyright (c) 2004-2005 The Regents of the University of California. + # All rights reserved. + # Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. ++# Copyright (c) 2011 Sandia National Laboratories. All rights reserved. + # $COPYRIGHT$ + # + # Additional copyrights may follow +@@ -34,3 +35,4 @@ include opal/sys/mips/Makefile.am + include opal/sys/sparc/Makefile.am + include opal/sys/sparcv9/Makefile.am + include opal/sys/win32/Makefile.am ++include opal/sys/sync_builtin/Makefile.am +diff --git a/opal/include/opal/sys/architecture.h b/opal/include/opal/sys/architecture.h +index 2e7d007..62430fa 100644 +--- a/opal/include/opal/sys/architecture.h ++++ b/opal/include/opal/sys/architecture.h +@@ -9,6 +9,7 @@ + * University of Stuttgart. All rights reserved. + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. ++ * Copyright (c) 2011 Sandia National Laboratories. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow +@@ -37,6 +38,7 @@ + #define OMPI_SPARCV9_64 0062 + #define OMPI_MIPS 0070 + #define OMPI_ARM 0100 ++#define OMPI_SYNC_BUILTIN 0200 + + /* Formats */ + #define OMPI_DEFAULT 1000 /* standard for given architecture */ +diff --git a/opal/include/opal/sys/atomic.h b/opal/include/opal/sys/atomic.h +index 01e8366..bc3c07f 100644 +--- a/opal/include/opal/sys/atomic.h ++++ b/opal/include/opal/sys/atomic.h +@@ -10,6 +10,7 @@ + * Copyright (c) 2004-2005 The Regents of the University of California. + * All rights reserved. + * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. ++ * Copyright (c) 2011 Sandia National Laboratories. All rights reserved. + * $COPYRIGHT$ + * + * Additional copyrights may follow +@@ -168,6 +169,8 @@ typedef struct opal_atomic_lock_t opal_atomic_lock_t; + #include "opal/sys/sparcv9/atomic.h" + #elif OPAL_ASSEMBLY_ARCH == OMPI_SPARCV9_64 + #include "opal/sys/sparcv9/atomic.h" ++#elif OPAL_ASSEMBLY_ARCH == OMPI_SYNC_BUILTIN ++#include "opal/sys/sync_builtin/atomic.h" + #endif + + #ifndef DOXYGEN +@@ -180,6 +183,12 @@ typedef struct opal_atomic_lock_t opal_atomic_lock_t; + #ifndef OPAL_HAVE_ATOMIC_CMPSET_64 + #define OPAL_HAVE_ATOMIC_CMPSET_64 0 + #endif ++#ifndef OPAL_HAVE_ATOMIC_SWAP_32 ++#define OPAL_HAVE_ATOMIC_SWAP_32 0 ++#endif ++#ifndef OPAL_HAVE_ATOMIC_SWAP_64 ++#define OPAL_HAVE_ATOMIC_SWAP_64 0 ++#endif + #endif /* DOXYGEN */ + + /********************************************************************** +diff --git a/opal/include/opal/sys/sync_builtin/Makefile.am b/opal/include/opal/sys/sync_builtin/Makefile.am +new file mode 100644 +index 0000000..a0d993c +--- /dev/null ++++ b/opal/include/opal/sys/sync_builtin/Makefile.am +@@ -0,0 +1,24 @@ ++# ++# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana ++# University Research and Technology ++# Corporation. All rights reserved. ++# Copyright (c) 2004-2005 The University of Tennessee and The University ++# of Tennessee Research Foundation. All rights ++# reserved. ++# Copyright (c) 2004-2009 High Performance Computing Center Stuttgart, ++# University of Stuttgart. All rights reserved. ++# Copyright (c) 2004-2005 The Regents of the University of California. ++# All rights reserved. ++# Copyright (c) 2011 Sandia National Laboratories. All rights reserved. ++# $COPYRIGHT$ ++# ++# Additional copyrights may follow ++# ++# $HEADER$ ++# ++ ++# This makefile.am does not stand on its own - it is included from opal/include/Makefile.am ++ ++headers += \ ++ opal/sys/sync_builtin/atomic.h \ ++ opal/sys/sync_builtin/timer.h +diff --git a/opal/include/opal/sys/sync_builtin/atomic.h b/opal/include/opal/sys/sync_builtin/atomic.h +new file mode 100644 +index 0000000..307240a +--- /dev/null ++++ b/opal/include/opal/sys/sync_builtin/atomic.h +@@ -0,0 +1,116 @@ ++/* ++ * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana ++ * University Research and Technology ++ * Corporation. All rights reserved. ++ * Copyright (c) 2004-2006 The University of Tennessee and The University ++ * of Tennessee Research Foundation. All rights ++ * reserved. ++ * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, ++ * University of Stuttgart. All rights reserved. ++ * Copyright (c) 2004-2005 The Regents of the University of California. ++ * All rights reserved. ++ * Copyright (c) 2011 Sandia National Laboratories. All rights reserved. ++ * $COPYRIGHT$ ++ * ++ * Additional copyrights may follow ++ * ++ * $HEADER$ ++ */ ++ ++#ifndef OMPI_SYS_ARCH_ATOMIC_H ++#define OMPI_SYS_ARCH_ATOMIC_H 1 ++ ++/********************************************************************** ++ * ++ * Memory Barriers ++ * ++ *********************************************************************/ ++#define OPAL_HAVE_ATOMIC_MEM_BARRIER 1 ++ ++static inline void opal_atomic_mb(void) ++{ ++ __sync_synchronize(); ++} ++ ++static inline void opal_atomic_rmb(void) ++{ ++ __sync_synchronize(); ++} ++ ++static inline void opal_atomic_wmb(void) ++{ ++ __sync_synchronize(); ++} ++ ++/********************************************************************** ++ * ++ * Atomic math operations ++ * ++ *********************************************************************/ ++ ++#define OPAL_HAVE_ATOMIC_CMPSET_32 1 ++static inline int opal_atomic_cmpset_acq_32( volatile int32_t *addr, ++ int32_t oldval, int32_t newval) ++{ ++ return __sync_bool_compare_and_swap(addr, oldval, newval); ++} ++ ++ ++static inline int opal_atomic_cmpset_rel_32( volatile int32_t *addr, ++ int32_t oldval, int32_t newval) ++{ ++ return __sync_bool_compare_and_swap(addr, oldval, newval);} ++ ++static inline int opal_atomic_cmpset_32( volatile int32_t *addr, ++ int32_t oldval, int32_t newval) ++{ ++ return __sync_bool_compare_and_swap(addr, oldval, newval); ++} ++ ++#define OPAL_HAVE_ATOMIC_MATH_32 1 ++ ++#define OPAL_HAVE_ATOMIC_ADD_32 1 ++static inline int32_t opal_atomic_add_32(volatile int32_t *addr, int32_t delta) ++{ ++ return __sync_fetch_and_add(addr, delta); ++} ++ ++#define OPAL_HAVE_ATOMIC_SUB_32 1 ++static inline int32_t opal_atomic_sub_32(volatile int32_t *addr, int32_t delta) ++{ ++ return __sync_fetch_and_sub(addr, delta); ++} ++ ++#define OPAL_HAVE_ATOMIC_CMPSET_64 1 ++static inline int opal_atomic_cmpset_acq_64( volatile int64_t *addr, ++ int64_t oldval, int64_t newval) ++{ ++ return __sync_bool_compare_and_swap(addr, oldval, newval); ++} ++ ++static inline int opal_atomic_cmpset_rel_64( volatile int64_t *addr, ++ int64_t oldval, int64_t newval) ++{ ++ return __sync_bool_compare_and_swap(addr, oldval, newval);} ++ ++ ++static inline int opal_atomic_cmpset_64( volatile int64_t *addr, ++ int64_t oldval, int64_t newval) ++{ ++ return __sync_bool_compare_and_swap(addr, oldval, newval); ++} ++ ++#define OPAL_HAVE_ATOMIC_MATH_64 1 ++#define OPAL_HAVE_ATOMIC_ADD_64 1 ++static inline int64_t opal_atomic_add_64(volatile int64_t *addr, int64_t delta) ++{ ++ return __sync_fetch_and_add(addr, delta); ++} ++ ++#define OPAL_HAVE_ATOMIC_SUB_64 1 ++static inline int64_t opal_atomic_sub_64(volatile int64_t *addr, int64_t delta) ++{ ++ return __sync_fetch_and_sub(addr, delta); ++} ++ ++#endif /* ! OMPI_SYS_ARCH_ATOMIC_H */ +diff --git a/opal/include/opal/sys/sync_builtin/timer.h b/opal/include/opal/sys/sync_builtin/timer.h +new file mode 100644 +index 0000000..aafbc9b +--- /dev/null ++++ b/opal/include/opal/sys/sync_builtin/timer.h +@@ -0,0 +1,27 @@ ++/* ++ * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana ++ * University Research and Technology ++ * Corporation. All rights reserved. ++ * Copyright (c) 2004-2005 The University of Tennessee and The University ++ * of Tennessee Research Foundation. All rights ++ * reserved. ++ * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, ++ * University of Stuttgart. All rights reserved. ++ * Copyright (c) 2004-2005 The Regents of the University of California. ++ * All rights reserved. ++ * Copyright (c) 2011 Sandia National Laboratories. All rights reserved. ++ * $COPYRIGHT$ ++ * ++ * Additional copyrights may follow ++ * ++ * $HEADER$ ++ */ ++ ++#ifndef OMPI_SYS_ARCH_TIMER_H ++#define OMPI_SYS_ARCH_TIMER_H 1 ++ ++typedef long opal_timer_t; ++ ++#define OPAL_HAVE_SYS_TIMER_GET_CYCLES 0 ++ ++#endif /* ! OMPI_SYS_ARCH_TIMER_H */ +-- +1.8.3.1 + +From 1b2fdab7b6bf77bf4e818c84a798ba205c789483 Mon Sep 17 00:00:00 2001 +From: Brian Barrett +Date: Wed, 23 Nov 2011 17:05:01 +0000 +Subject: [PATCH] * Shouldn't have a timer header for sync_builtin, since it + doesn't actually have timer support * Default timer size should be a long, + not an int. Int will roll over way too fast, with no performance benifit + on 64 bit machines... + +--- + opal/include/opal/sys/sync_builtin/Makefile.am | 3 +-- + opal/include/opal/sys/sync_builtin/timer.h | 27 -------------------------- + opal/include/opal/sys/timer.h | 2 +- + 3 files changed, 2 insertions(+), 30 deletions(-) + delete mode 100644 opal/include/opal/sys/sync_builtin/timer.h + +diff --git a/opal/include/opal/sys/sync_builtin/Makefile.am b/opal/include/opal/sys/sync_builtin/Makefile.am +index a0d993c..fbb8a60 100644 +--- a/opal/include/opal/sys/sync_builtin/Makefile.am ++++ b/opal/include/opal/sys/sync_builtin/Makefile.am +@@ -20,5 +20,4 @@ + # This makefile.am does not stand on its own - it is included from opal/include/Makefile.am + + headers += \ +- opal/sys/sync_builtin/atomic.h \ +- opal/sys/sync_builtin/timer.h ++ opal/sys/sync_builtin/atomic.h +diff --git a/opal/include/opal/sys/sync_builtin/timer.h b/opal/include/opal/sys/sync_builtin/timer.h +deleted file mode 100644 +index aafbc9b..0000000 +--- a/opal/include/opal/sys/sync_builtin/timer.h ++++ /dev/null +@@ -1,27 +0,0 @@ +-/* +- * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana +- * University Research and Technology +- * Corporation. All rights reserved. +- * Copyright (c) 2004-2005 The University of Tennessee and The University +- * of Tennessee Research Foundation. All rights +- * reserved. +- * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +- * University of Stuttgart. All rights reserved. +- * Copyright (c) 2004-2005 The Regents of the University of California. +- * All rights reserved. +- * Copyright (c) 2011 Sandia National Laboratories. All rights reserved. +- * $COPYRIGHT$ +- * +- * Additional copyrights may follow +- * +- * $HEADER$ +- */ +- +-#ifndef OMPI_SYS_ARCH_TIMER_H +-#define OMPI_SYS_ARCH_TIMER_H 1 +- +-typedef long opal_timer_t; +- +-#define OPAL_HAVE_SYS_TIMER_GET_CYCLES 0 +- +-#endif /* ! OMPI_SYS_ARCH_TIMER_H */ +diff --git a/opal/include/opal/sys/timer.h b/opal/include/opal/sys/timer.h +index 967b951..cc8b922 100644 +--- a/opal/include/opal/sys/timer.h ++++ b/opal/include/opal/sys/timer.h +@@ -103,7 +103,7 @@ BEGIN_C_DECLS + #ifndef OPAL_HAVE_SYS_TIMER_GET_CYCLES + #define OPAL_HAVE_SYS_TIMER_GET_CYCLES 0 + +-typedef int opal_timer_t; ++typedef long opal_timer_t; + #endif + #endif + +-- +1.8.3.1 + +From e270e4d0f7b2b89d16d0f1ac736619118ad7f340 Mon Sep 17 00:00:00 2001 +From: George Bosilca +Date: Sun, 15 Dec 2013 16:48:27 +0000 +Subject: [PATCH] Make the builtin atomics follow the same convention as every + other atomic support we have ([op]_and_fetch instead of fetch_and_[op]). + +--- + opal/include/opal/sys/sync_builtin/atomic.h | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/opal/include/opal/sys/sync_builtin/atomic.h b/opal/include/opal/sys/sync_builtin/atomic.h +index 307240a..e0dc76b 100644 +--- a/opal/include/opal/sys/sync_builtin/atomic.h ++++ b/opal/include/opal/sys/sync_builtin/atomic.h +@@ -2,7 +2,7 @@ + * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana + * University Research and Technology + * Corporation. All rights reserved. +- * Copyright (c) 2004-2006 The University of Tennessee and The University ++ * Copyright (c) 2004-2013 The University of Tennessee and The University + * of Tennessee Research Foundation. All rights + * reserved. + * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, +@@ -42,6 +42,12 @@ static inline void opal_atomic_wmb(void) + __sync_synchronize(); + } + ++#if OPAL_WANT_SMP_LOCKS ++#define MB() opal_atomic_mb() ++#else ++#define MB() ++#endif ++ + /********************************************************************** + * + * Atomic math operations +@@ -72,13 +78,13 @@ static inline int opal_atomic_cmpset_32( volatile int32_t *addr, + #define OPAL_HAVE_ATOMIC_ADD_32 1 + static inline int32_t opal_atomic_add_32(volatile int32_t *addr, int32_t delta) + { +- return __sync_fetch_and_add(addr, delta); ++ return __sync_add_and_fetch(addr, delta); + } + + #define OPAL_HAVE_ATOMIC_SUB_32 1 + static inline int32_t opal_atomic_sub_32(volatile int32_t *addr, int32_t delta) + { +- return __sync_fetch_and_sub(addr, delta); ++ return __sync_sub_and_fetch(addr, delta); + } + + #define OPAL_HAVE_ATOMIC_CMPSET_64 1 +@@ -104,13 +110,13 @@ static inline int opal_atomic_cmpset_64( volatile int64_t *addr, + #define OPAL_HAVE_ATOMIC_ADD_64 1 + static inline int64_t opal_atomic_add_64(volatile int64_t *addr, int64_t delta) + { +- return __sync_fetch_and_add(addr, delta); ++ return __sync_add_and_fetch(addr, delta); + } + + #define OPAL_HAVE_ATOMIC_SUB_64 1 + static inline int64_t opal_atomic_sub_64(volatile int64_t *addr, int64_t delta) + { +- return __sync_fetch_and_sub(addr, delta); ++ return __sync_sub_and_fetch(addr, delta); + } + + #endif /* ! OMPI_SYS_ARCH_ATOMIC_H */ +-- +1.8.3.1 + +diff --git a/configure b/configure +index b585768..5d3eae1 100755 +--- a/configure ++++ b/configure +@@ -1918,6 +1938,7 @@ with_wrapper_fcflags + enable_cxx_exceptions + with_exflags + enable_smp_locks ++enable_builtin_atomics + with_broken_qsort + with_threads + enable_opal_multi_threads +@@ -2720,6 +2741,9 @@ Optional Features: + --enable-smp-locks enable smp locks in atomic ops. Do not disable if + code will ever run in SMP or multi-threaded + environment. (default: enabled) ++ --enable-builtin-atomics ++ Enable use of __sync builtin atomics (default: ++ disabled) + --enable-opal-multi-threads + Enable thread support inside OPAL (default: + disabled) +@@ -26558,8 +26684,49 @@ cat >>confdefs.h <<_ACEOF + _ACEOF + + ++ # Check whether --enable-builtin-atomics was given. ++if test "${enable_builtin_atomics+set}" = set; then : ++ enableval=$enable_builtin_atomics; ++fi ++ ++ + if test "$ompi_cv_c_compiler_vendor" = "microsoft" ; then + ompi_cv_asm_arch="WINDOWS" ++ elif test "$enable_builtin_atomics" = "yes" ; then ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __sync builtin atomics" >&5 ++$as_echo_n "checking for __sync builtin atomics... " >&6; } ++ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++__sync_synchronize() ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ ompi_cv_asm_arch="SYNC_BUILTIN" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ as_fn_error $? "__sync builtin atomics requested but not found." "$LINENO" 5 ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++ ++$as_echo "#define OPAL_C_GCC_INLINE_ASSEMBLY 1" >>confdefs.h ++ ++ if test "$WANT_MPI_CXX_SUPPORT" = "1"; then : ++ ++$as_echo "#define OMPI_CXX_GCC_INLINE_ASSEMBLY 1" >>confdefs.h ++ ++fi + else + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if .proc/endp is needed" >&5 +@@ -27464,10 +27631,45 @@ as_fn_error $? "Can not continue." "$LINENO" 5 + ;; + + *) +- as_fn_error $? "No atomic primitives available for $host" "$LINENO" 5 ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __sync builtin atomics" >&5 ++$as_echo_n "checking for __sync builtin atomics... " >&6; } ++ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++__sync_synchronize() ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ ompi_cv_asm_arch="SYNC_BUILTIN" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ as_fn_error $? "No atomic primitives available for $host" "$LINENO" 5 ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ + ;; + esac + ++ if test "$ompi_cv_asm_arch" = "SYNC_BUILTIN" ; then ++ ++$as_echo "#define OPAL_C_GCC_INLINE_ASSEMBLY 1" >>confdefs.h ++ ++ if test "$WANT_MPI_CXX_SUPPORT" = "1"; then : ++ ++$as_echo "#define OMPI_CXX_GCC_INLINE_ASSEMBLY 1" >>confdefs.h ++ ++fi ++ else + + cat >>confdefs.h <<_ACEOF + #define OPAL_ASM_SUPPORT_64BIT $OPAL_ASM_SUPPORT_64BIT +@@ -27866,6 +28068,7 @@ cat >>confdefs.h <<_ACEOF + _ACEOF + + ++ fi # if ompi_cv_asm_arch = SYNC_BUILTIN + fi # if cv_c_compiler_vendor = microsoft + + result="OMPI_$ompi_cv_asm_arch" +@@ -27885,7 +28088,7 @@ _ACEOF + + + +-if test "$ompi_cv_asm_arch" != "WINDOWS" ; then ++if test "$ompi_cv_asm_arch" != "WINDOWS" -a "$ompi_cv_asm_arch" != "SYNC_BUILTIN" ; then + # Extract the first word of "perl", so it can be a program name with args. + set dummy perl; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 diff --git a/SOURCES/openmpi-1.6.4-ppc64le.patch b/SOURCES/openmpi-1.6.4-ppc64le.patch new file mode 100644 index 0000000..3e2fd36 --- /dev/null +++ b/SOURCES/openmpi-1.6.4-ppc64le.patch @@ -0,0 +1,30 @@ +diff -up openmpi-1.6.4/configure.ppc64le openmpi-1.6.4/configure +--- openmpi-1.6.4/configure.ppc64le 2014-09-09 09:33:10.960054144 +0000 ++++ openmpi-1.6.4/configure 2014-09-09 09:34:37.930058864 +0000 +@@ -27239,7 +27239,7 @@ _ACEOF + OMPI_GCC_INLINE_ASSIGN='"or %0,$0,$0" : "=&r"(ret)' + ;; + +- powerpc-*|powerpc64-*) ++ powerpc-*|powerpc64-*|powerpc64le-*) + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if PowerPC registers have r prefix" >&5 + $as_echo_n "checking if PowerPC registers have r prefix... " >&6; } +@@ -79533,7 +79533,7 @@ $as_echo "$compile_mode" >&6; } + + + case "${host}" in +- i?86-*linux*|x86_64*linux*|ia64-*linux*|powerpc-*linux*|powerpc64-*linux*|sparc*-*linux*) ++ i?86-*linux*|x86_64*linux*|ia64-*linux*|powerpc-*linux*|powerpc64-*linux*|powerpc64le-*linux*|sparc*-*linux*) + if test -r "/proc/cpuinfo"; then : + pstat_linux_happy="yes" + else +@@ -85999,7 +85999,7 @@ fi + fi + + case "${host}" in +- i?86-*linux*|x86_64*linux*|ia64-*linux*|powerpc-*linux*|powerpc64-*linux*|sparc*-*linux*) ++ i?86-*linux*|x86_64*linux*|ia64-*linux*|powerpc-*linux*|powerpc64-*linux*|powerpc64le-*linux*|sparc*-*linux*) + if test "$timer_linux_happy" = "yes"; then : + if test -r "/proc/cpuinfo"; then : + timer_linux_happy="yes" diff --git a/SOURCES/openmpi-ltdl.patch b/SOURCES/openmpi-ltdl.patch new file mode 100644 index 0000000..403b2c3 --- /dev/null +++ b/SOURCES/openmpi-ltdl.patch @@ -0,0 +1,89 @@ +diff -up openmpi-1.6.3/ompi/debuggers/dlopen_test.c.ltdl openmpi-1.6.3/ompi/debuggers/dlopen_test.c +--- openmpi-1.6.3/ompi/debuggers/dlopen_test.c.ltdl 2012-04-03 08:30:25.000000000 -0600 ++++ openmpi-1.6.3/ompi/debuggers/dlopen_test.c 2012-11-05 10:28:06.365041243 -0700 +@@ -13,7 +13,17 @@ + #include + #include + +-#include "opal/libltdl/ltdl.h" ++#if OPAL_WANT_LIBLTDL ++ #ifndef __WINDOWS__ ++ #if OPAL_LIBLTDL_INTERNAL ++ #include "opal/libltdl/ltdl.h" ++ #else ++ #include "ltdl.h" ++ #endif ++ #else ++ #include "ltdl.h" ++ #endif ++#endif + + static int do_test(void); + +diff -up openmpi-1.6.3/ompi/debuggers/Makefile.in.ltdl openmpi-1.6.3/ompi/debuggers/Makefile.in +--- openmpi-1.6.3/ompi/debuggers/Makefile.in.ltdl 2012-10-24 09:40:15.000000000 -0600 ++++ openmpi-1.6.3/ompi/debuggers/Makefile.in 2012-11-05 10:59:10.288662790 -0700 +@@ -346,7 +346,7 @@ libompi_debugger_canary_la_OBJECTS = \ + @OPAL_HAVE_DLOPEN_TRUE@am__EXEEXT_1 = dlopen_test$(EXEEXT) + am_dlopen_test_OBJECTS = dlopen_test-dlopen_test.$(OBJEXT) + dlopen_test_OBJECTS = $(am_dlopen_test_OBJECTS) +-dlopen_test_DEPENDENCIES = $(top_builddir)/opal/libltdl/libltdlc.la ++dlopen_test_DEPENDENCIES = + am_predefined_gap_test_OBJECTS = predefined_gap_test.$(OBJEXT) + predefined_gap_test_OBJECTS = $(am_predefined_gap_test_OBJECTS) + predefined_gap_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ +@@ -1216,8 +1216,8 @@ headers = \ + + # Simple checks to ensure that the DSOs are functional + dlopen_test_SOURCES = dlopen_test.c +-dlopen_test_CPPFLAGS = -I$(top_srcdir)/opal/libltdl +-dlopen_test_LDADD = $(top_builddir)/opal/libltdl/libltdlc.la ++dlopen_test_CPPFLAGS = $(LTDLINCL) ++dlopen_test_LDADD = $(LIBLTDL) + predefined_gap_test_SOURCES = predefined_gap_test.c + predefined_gap_test_LDFLAGS = $(WRAPPER_EXTRA_LDFLAGS) + predefined_gap_test_LDADD = $(top_builddir)/ompi/libmpi.la +diff -up openmpi-1.6.3/test/support/components.c.ltdl openmpi-1.6.3/test/support/components.c +--- openmpi-1.6.3/test/support/components.c.ltdl 2012-04-03 08:29:44.000000000 -0600 ++++ openmpi-1.6.3/test/support/components.c 2012-11-05 10:28:06.366041244 -0700 +@@ -24,7 +24,17 @@ + + #include "opal/constants.h" + #include "opal/mca/mca.h" +-#include "opal/libltdl/ltdl.h" ++#if OPAL_WANT_LIBLTDL ++ #ifndef __WINDOWS__ ++ #if OPAL_LIBLTDL_INTERNAL ++ #include "opal/libltdl/ltdl.h" ++ #else ++ #include "ltdl.h" ++ #endif ++ #else ++ #include "ltdl.h" ++ #endif ++#endif + + #include "components.h" + +diff -up openmpi-1.6.3/test/support/components.h.ltdl openmpi-1.6.3/test/support/components.h +--- openmpi-1.6.3/test/support/components.h.ltdl 2012-04-03 08:29:44.000000000 -0600 ++++ openmpi-1.6.3/test/support/components.h 2012-11-05 10:28:06.366041244 -0700 +@@ -20,7 +20,17 @@ + #ifndef OMPI_SUPPORT_COMPONENTS_H + #define OMPI_SUPPORT_COMPONENTS_H + +-#include "opal/libltdl/ltdl.h" ++#if OPAL_WANT_LIBLTDL ++ #ifndef __WINDOWS__ ++ #if OPAL_LIBLTDL_INTERNAL ++ #include "opal/libltdl/ltdl.h" ++ #else ++ #include "ltdl.h" ++ #endif ++ #else ++ #include "ltdl.h" ++ #endif ++#endif + #include "opal/mca/mca.h" + + BEGIN_C_DECLS diff --git a/SOURCES/openmpi-removed.patch b/SOURCES/openmpi-removed.patch new file mode 100644 index 0000000..229226d --- /dev/null +++ b/SOURCES/openmpi-removed.patch @@ -0,0 +1,31 @@ +--- openmpi-1.5.5/configure.orig 2012-03-20 20:05:01.000000000 +0000 ++++ openmpi-1.5.5/configure 2012-04-03 12:58:28.871397855 +0100 +@@ -150328,10 +150328,6 @@ + + + +-ac_config_files="$ac_config_files opal/mca/backtrace/darwin/Makefile" +- +- +- + ac_config_files="$ac_config_files opal/mca/backtrace/execinfo/Makefile" + + +@@ -174422,7 +174418,6 @@ + "opal/mca/hwloc/hwloc132/hwloc/src/Makefile") CONFIG_FILES="$CONFIG_FILES opal/mca/hwloc/hwloc132/hwloc/src/Makefile" ;; + "opal/mca/installdirs/config/install_dirs.h") CONFIG_FILES="$CONFIG_FILES opal/mca/installdirs/config/install_dirs.h" ;; + "opal/mca/backtrace/Makefile") CONFIG_FILES="$CONFIG_FILES opal/mca/backtrace/Makefile" ;; +- "opal/mca/backtrace/darwin/Makefile") CONFIG_FILES="$CONFIG_FILES opal/mca/backtrace/darwin/Makefile" ;; + "opal/mca/backtrace/execinfo/Makefile") CONFIG_FILES="$CONFIG_FILES opal/mca/backtrace/execinfo/Makefile" ;; + "opal/mca/backtrace/none/Makefile") CONFIG_FILES="$CONFIG_FILES opal/mca/backtrace/none/Makefile" ;; + "opal/mca/backtrace/printstack/Makefile") CONFIG_FILES="$CONFIG_FILES opal/mca/backtrace/printstack/Makefile" ;; +--- openmpi-1.5.5/Makefile.in.orig 2012-04-03 12:58:21.937232790 +0100 ++++ openmpi-1.5.5/Makefile.in 2012-04-03 12:58:28.874397927 +0100 +@@ -197,7 +197,6 @@ + $(top_srcdir)/config/ext_no_configure_components.m4 \ + $(top_srcdir)/config/mca_m4_config_include.m4 \ + $(top_srcdir)/opal/mca/backtrace/configure.m4 \ +- $(top_srcdir)/opal/mca/backtrace/darwin/configure.m4 \ + $(top_srcdir)/opal/mca/backtrace/execinfo/configure.m4 \ + $(top_srcdir)/opal/mca/backtrace/none/configure.m4 \ + $(top_srcdir)/opal/mca/backtrace/printstack/configure.m4 \ diff --git a/SOURCES/openmpi.module.in b/SOURCES/openmpi.module.in new file mode 100644 index 0000000..3f40823 --- /dev/null +++ b/SOURCES/openmpi.module.in @@ -0,0 +1,19 @@ +#%Module 1.0 +# +# OpenMPI module for use with 'environment-modules' package: +# +conflict mpi +prepend-path PATH @LIBDIR@/bin +prepend-path LD_LIBRARY_PATH @LIBDIR@/lib +prepend-path PYTHONPATH @PYSITEARCH@ +prepend-path MANPATH @MANDIR@ +setenv MPI_BIN @LIBDIR@/bin +setenv MPI_SYSCONFIG @ETCDIR@ +setenv MPI_FORTRAN_MOD_DIR @FMODDIR@ +setenv MPI_INCLUDE @INCDIR@ +setenv MPI_LIB @LIBDIR@/lib +setenv MPI_MAN @MANDIR@ +setenv MPI_PYTHON_SITEARCH @PYSITEARCH@ +setenv MPI_COMPILER @COMPILER@ +setenv MPI_SUFFIX @SUFFIX@ +setenv MPI_HOME @LIBDIR@ diff --git a/SOURCES/openmpi3.module.in b/SOURCES/openmpi3.module.in new file mode 100644 index 0000000..7a3479c --- /dev/null +++ b/SOURCES/openmpi3.module.in @@ -0,0 +1,21 @@ +#%Module 1.0 +# +# OpenMPI module for use with 'environment-modules' package: +# +conflict mpi +prepend-path PATH @LIBDIR@/bin +prepend-path LD_LIBRARY_PATH @LIBDIR@/lib +prepend-path PKG_CONFIG_PATH @LIBDIR@/lib/pkgconfig +prepend-path PYTHONPATH @PY2SITEARCH@ +prepend-path MANPATH @MANDIR@ +setenv MPI_BIN @LIBDIR@/bin +setenv MPI_SYSCONFIG @ETCDIR@ +setenv MPI_FORTRAN_MOD_DIR @FMODDIR@ +setenv MPI_INCLUDE @INCDIR@ +setenv MPI_LIB @LIBDIR@/lib +setenv MPI_MAN @MANDIR@ +setenv MPI_PYTHON_SITEARCH @PY2SITEARCH@ +setenv MPI_PYTHON2_SITEARCH @PY2SITEARCH@ +setenv MPI_COMPILER @COMPILER@ +setenv MPI_SUFFIX @SUFFIX@ +setenv MPI_HOME @LIBDIR@ diff --git a/SPECS/openmpi.spec b/SPECS/openmpi.spec new file mode 100644 index 0000000..d9b7e98 --- /dev/null +++ b/SPECS/openmpi.spec @@ -0,0 +1,1142 @@ +# We only compile with gcc, but other people may want other compilers. +# Set the compiler here. +%global opt_cc gcc +# Optional CFLAGS to use with the specific compiler...gcc doesn't need any, +# so uncomment and define to use +#global opt_cflags +%global opt_cxx g++ +#global opt_cxxflags +%global opt_f77 gfortran +#global opt_fflags +%global opt_fc gfortran +#global opt_fcflags + +%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} +# Optional name suffix to use...we leave it off when compiling with gcc, but +# for other compiled versions to install side by side, it will need a +# suffix in order to keep the names from conflicting. +#global _cc_name_suffix -gcc + +%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) + +%global majmin 1.10 +%global mainversion %{majmin}.7 +%global ompi3ver 3.1.3 + +Name: openmpi%{?_cc_name_suffix} +Version: %{mainversion} +Release: 5%{?dist} +Summary: Open Message Passing Interface +Group: Development/Libraries +License: BSD and MIT and Romio +URL: http://www.open-mpi.org/ + +Source0: http://www.open-mpi.org/software/ompi/v%{majmin}/downloads/openmpi-%{mainversion}.tar.bz2 +Source1: openmpi.module.in +Source2: macros.openmpi.in +Patch1: 0001-Add-Chelsio-T6-adapter-device-parameters.patch +Patch2: 0002-btl-openib-fix-segmentation-fault.patch + +# openmpi-1.6.4-clean.tar.xz was generated by taking the upstream tarball +# and removing license-incompatible files: +# rm -r opal/mca/backtrace/darwin/MoreBacktrace +Source100: openmpi-1.6.4-clean.tar.xz +# Patch to handle removed items +Patch100: openmpi-removed.patch +# Patch to use system ltdl for tests +Patch101: openmpi-ltdl.patch +# Learn configure about ppc64le +Patch102: openmpi-1.6.4-ppc64le.patch +# Backport of gcc atomics needed for AArch64 +Patch103: openmpi-1.6.4-aarch64.patch + +Source300: https://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-%{ompi3ver}.tar.bz2 +Source301: openmpi3.module.in +Source302: macros.openmpi3 +# Only for ppc64le +# https://github.com/open-mpi/ompi/issues/2526 +# https://github.com/open-mpi/ompi/issues/2966 +Patch301: 0001-tests-disable-opal_fifo-test.patch + +BuildRequires: gcc-gfortran +#sparc 64 doesn't have valgrind +%ifnarch %{sparc} s390 +BuildRequires: valgrind-devel +%endif +BuildRequires: libibverbs-devel >= 1.1.3, opensm-devel > 3.3.0 +BuildRequires: librdmacm-devel +BuildRequires: hwloc-devel +BuildRequires: python libtool-ltdl-devel +BuildRequires: libesmtp-devel +BuildRequires: libfabric-devel +%ifarch x86_64 ppc64le aarch64 +BuildRequires: ucx-devel +%endif +%ifarch x86_64 +BuildRequires: infinipath-psm-devel libpsm2-devel +%endif +%ifarch ppc64le +BuildRequires: automake +%endif + +Obsoletes: openmpi-libs +Obsoletes: openmpi-psm + +Provides: mpi +Requires: environment-modules + +# Provides for compat with openmpi-1.10.0. +# See the comment about libmpi_usempi.so.1 in the install section. +%if 0%{?__isa_bits} == 64 +Provides: libmpi_usempi.so.1()(64bit) +%else +Provides: libmpi_usempi.so.1 +%endif + +# Private openmpi libraries +%global __provides_exclude_from %{_libdir}/(openmpi3|openmpi|compat-openmpi16)/lib/(lib(mca|ompi|open-(pal|rte|trace))|openmpi/).*.so +%global __requires_exclude lib(mca|ompi|open-(pal|rte|trace)|vt).* + +%description +Open MPI is an open source, freely available implementation of both the +MPI-1 and MPI-2 standards, combining technologies and resources from +several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI) in +order to build the best MPI library available. A completely new MPI-2 +compliant implementation, Open MPI offers advantages for system and +software vendors, application developers, and computer science +researchers. For more information, see http://www.open-mpi.org/ . + +%package devel +Summary: Development files for openmpi +Group: Development/Libraries +Requires: %{name} = %{mainversion}-%{release}, gcc-gfortran +Provides: mpi-devel +Obsoletes: openmpi-psm-devel + +%description devel +Contains development headers and libraries for openmpi + +%ifnarch ppc ppc64 +%package -n openmpi3%{?_cc_name_suffix} +Summary: Open Message Passing Interface 3 +Group: Development/Libraries +Version: %{ompi3ver} +Release: 2%{?dist} +Provides: mpi +Requires: environment-modules +Requires: openssh-clients + +%description -n openmpi3%{?_cc_name_suffix} +The Open MPI Project is an open source Message Passing Interface implementation +that is developed and maintained by a consortium of academic, research, and +industry partners. Open MPI is therefore able to combine the expertise, +technologies, and resources from all across the High Performance Computing +community in order to build the best MPI library available. Open MPI offers +advantages for system and software vendors, application developers and computer +science researchers. +Features implemented or in short-term development for Open MPI include: + * Full MPI-3.1 standards conformance + * Thread safety and concurrency + * Dynamic process spawning + * Network and process fault tolerance + * Support network heterogeneity + * Single library supports all networks + * Run-time instrumentation + * Many job schedulers supported + * Many OS's supported (32 and 64 bit) + * Production quality software + * High performance on all platforms + * Portable and maintainable + * Tunable by installers and end-users + * Component-based design, documented APIs + * Active, responsive mailing list + * Open source license based on the BSD license + +%package -n openmpi3%{?_cc_name_suffix}-devel +Summary: Development files for openmpi3 +Group: Development/Libraries +Version: %{ompi3ver} +Release: %{release} +Requires: openmpi3%{?_cc_name_suffix}%{?_isa} = %{version}-%{release}, gcc-gfortran +Provides: mpi-devel + +%description -n openmpi3%{?_cc_name_suffix}-devel +Contains development headers and libraries for openmpi3. + +%endif + +%ifnarch s390 s390x +%package -n compat-openmpi16%{?_cc_name_suffix} +Summary: Open MPI 1.6 compat library +Group: Development/Libraries +Version: 1.6.4 +Release: 10.7.2%{?dist} +Provides: mpi +Requires: environment-modules + +%description -n compat-openmpi16%{?_cc_name_suffix} +Open MPI is an open source, freely available implementation of both the +MPI-1 and MPI-2 standards, combining technologies and resources from +several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI) in +order to build the best MPI library available. A completely new MPI-2 +compliant implementation, Open MPI offers advantages for system and +software vendors, application developers, and computer science +researchers. For more information, see http://www.open-mpi.org/ . + +This package provides compatibility for applications compiled with Open MPI +version 1.6. + +%package -n compat-openmpi16%{?_cc_name_suffix}-devel +Summary: Development files for compat-openmpi16 +Group: Development/Libraries +Version: 1.6.4 +Release: %{release} +Requires: compat-openmpi16%{?_cc_name_suffix}%{?_isa} = %{version}-%{release}, gcc-gfortran +Provides: mpi-devel + +%description -n compat-openmpi16%{?_cc_name_suffix}-devel +Contains development headers and libraries for compat-openmpi16 + +%endif + +# When dealing with multilib installations, aka the ability to run either +# i386 or x86_64 binaries on x86_64 machines, we install the native i386 +# openmpi libs/compilers and the native x86_64 libs/compilers. Obviously, +# on i386 you can only run i386, so you don't really need the -m32 flag +# to gcc in order to force 32 bit mode. However, since we use the native +# i386 package to support i386 operation on x86_64, and since on x86_64 +# the default is x86_64, the i386 package needs to force i386 mode. This +# is true of all the multilib arches, hence the non-default arch (aka i386 +# on x86_64) must force the non-default mode (aka 32 bit compile) in it's +# native-arch package (aka, when built on i386) so that it will work +# properly on the non-native arch as a multilib package (aka i386 installed +# on x86_64). Just to be safe, we also force the default mode (aka 64 bit) +# in default arch packages (aka, the x86_64 package). There are, however, +# some arches that don't support forcing *any* mode, those we just leave +# undefined. + +%ifarch %{ix86} ppc sparcv9 +%global mode 32 +%global modeflag -m32 +%endif +%ifarch ia64 +%global mode 64 +%endif +%ifarch x86_64 %{power64} sparc64 +%global mode 64 +%global modeflag -m64 +%endif + +%prep +%setup -q -n openmpi-%{mainversion} -b 100 -b 300 +%patch1 -p1 +%patch2 -p1 +cd .. + +cd openmpi-%{ompi3ver} +%ifarch ppc64le +%patch301 -p1 +%endif +cd .. + +cd openmpi-1.6.4 +%patch100 -p1 -b .removed +%patch101 -p1 -b .ltdl +%ifarch ppc64le +%patch102 -p1 -b .ppc64le +%endif +%ifarch aarch64 +%patch103 -p1 -b .aarch64 +%endif +# Make sure we don't use the local libltdl library +rm -r opal/libltdl +cd .. + +%build +# We set this to for convenience, since this is the unique dir we use for this +# particular package, version, compiler +%global variant openmpi +%global libname %{variant}%{?_cc_name_suffix} +%global namearch %{variant}-%{_arch}%{?_cc_name_suffix} + +# %%configure macro would change --prefix +./configure --prefix=%{_libdir}/%{libname} \ +%ifarch armv5tel + --build=armv5tel-redhat-linux-gnueabi \ + --host=armv5tel-redhat-linux-gnueabi \ +%endif + --mandir=%{_mandir}/%{namearch} \ + --includedir=%{_includedir}/%{namearch} \ + --sysconfdir=%{_sysconfdir}/%{namearch} \ + --disable-silent-rules \ + --with-verbs=/usr \ +%ifarch x86_64 ppc64le aarch64 + --with-ucx=/usr \ + --with-ucx-libdir=%{_libdir} \ +%endif + --with-sge \ +%ifnarch %{sparc} s390 + --with-valgrind \ + --enable-memchecker \ +%endif +%ifarch aarch64 + --enable-builtin-atomics \ +%endif + --with-hwloc=/usr \ + --with-libltdl=/usr \ + --with-wrapper-cflags="%{?modeflag}" \ + --with-wrapper-cxxflags="%{?modeflag}" \ + --with-wrapper-fcflags="%{?modeflag}" \ + CC=%{opt_cc} CXX=%{opt_cxx} \ + LDFLAGS='-Wl,-z,noexecstack' \ + CFLAGS="%{?opt_cflags} %{!?opt_cflags:$RPM_OPT_FLAGS}" \ + CXXFLAGS="%{?opt_cxxflags} %{!?opt_cxxflags:$RPM_OPT_FLAGS}" \ + FC=%{opt_fc} FCFLAGS="%{?opt_fcflags} %{!?opt_fcflags:$RPM_OPT_FLAGS}" + +make %{?_smp_mflags} +cd .. + +%ifnarch ppc ppc64 +%global variant openmpi3 +%global libname %{variant}%{?_cc_name_suffix} +%global namearch %{variant}-%{_arch}%{?_cc_name_suffix} + +cd openmpi-%{ompi3ver} +./configure --prefix=%{_libdir}/%{libname} \ + --mandir=%{_mandir}/%{namearch} \ + --includedir=%{_includedir}/%{namearch} \ + --sysconfdir=%{_sysconfdir}/%{namearch} \ + --disable-silent-rules \ + --enable-builtin-atomics \ + --enable-mpi-cxx \ + --with-sge \ +%ifnarch s390 + --with-valgrind \ + --enable-memchecker \ +%endif + --with-hwloc=/usr \ +%ifarch x86_64 ppc64le aarch64 + --with-ucx \ +%endif + CC=%{opt_cc} CXX=%{opt_cxx} \ + LDFLAGS='%{__global_ldflags}' \ + CFLAGS="%{?opt_cflags} %{!?opt_cflags:$RPM_OPT_FLAGS}" \ + CXXFLAGS="%{?opt_cxxflags} %{!?opt_cxxflags:$RPM_OPT_FLAGS}" \ + FC=%{opt_fc} FCFLAGS="%{?opt_fcflags} %{!?opt_fcflags:$RPM_OPT_FLAGS}" +# This fails - https://github.com/open-mpi/ompi/issues/2616 +# --with-hwloc=external \ +# We cannot use external pmix without external libevent +# --with-pmix=external \ + +make %{?_smp_mflags} +cd .. +%endif + +%ifnarch s390 s390x +%global variant compat-openmpi16 +%global libname %{variant}%{?_cc_name_suffix} +%global namearch %{variant}-%{_arch}%{?_cc_name_suffix} + +cd openmpi-1.6.4 + +%ifarch ppc64le +# learn autotools about new arch +cp -p %{_datadir}/automake-*/config.{guess,sub} ./config/ +cp -p %{_datadir}/automake-*/config.{guess,sub} ./ompi/mca/io/romio/romio/confdb/ +cp -p %{_datadir}/automake-*/config.{guess,sub} ./ompi/contrib/vt/vt/config/ +cp -p %{_datadir}/automake-*/config.{guess,sub} ./ompi/contrib/vt/vt/extlib/otf/config/ +%endif +# %%configure macro would change --prefix +./configure --prefix=%{_libdir}/%{libname} \ +%ifarch armv5tel + --build=armv5tel-redhat-linux-gnueabi \ + --host=armv5tel-redhat-linux-gnueabi \ +%endif + --mandir=%{_mandir}/%{namearch} \ + --includedir=%{_includedir}/%{namearch} \ + --sysconfdir=%{_sysconfdir}/%{namearch} \ + --disable-silent-rules \ + --enable-opal-multi-threads \ + --with-openib=/usr \ + --with-sge \ +%ifnarch %{sparc} s390 + --with-valgrind \ + --enable-memchecker \ +%endif +%ifarch aarch64 + --enable-builtin-atomics \ +%endif + --with-esmtp \ + --with-hwloc=/usr \ + --with-libltdl=/usr \ + --with-wrapper-cflags="%{?modeflag}" \ + --with-wrapper-cxxflags="%{?modeflag}" \ + --with-wrapper-fflags="%{?modeflag}" \ + --with-wrapper-fcflags="%{?modeflag}" \ + CC=%{opt_cc} CXX=%{opt_cxx} \ + LDFLAGS='-Wl,-z,noexecstack' \ + CFLAGS="%{?opt_cflags} %{!?opt_cflags:$RPM_OPT_FLAGS}" \ + CXXFLAGS="%{?opt_cxxflags} %{!?opt_cxxflags:$RPM_OPT_FLAGS}" \ + FC=%{opt_fc} FCFLAGS="%{?opt_fcflags} %{!?opt_fcflags:$RPM_OPT_FLAGS}" \ + F77=%{opt_f77} FFLAGS="%{?opt_fflags} %{!?opt_fflags:$RPM_OPT_FLAGS}" + +make %{?_smp_mflags} +cd .. +%endif + +%install +%global variant openmpi +%global libname %{variant}%{?_cc_name_suffix} +%global namearch %{variant}-%{_arch}%{?_cc_name_suffix} + +make install DESTDIR=%{buildroot} +rm -fr %{buildroot}%{_libdir}/%{libname}/lib/pkgconfig +find %{buildroot}%{_libdir}/%{libname}/lib -name \*.la | xargs rm +find %{buildroot}%{_mandir}/%{namearch} -type f | xargs gzip -9 +ln -s mpicc.1.gz %{buildroot}%{_mandir}/%{namearch}/man1/mpiCC.1.gz +rm -f %{buildroot}%{_mandir}/%{namearch}/man1/mpiCC.1 +rm -f %{buildroot}%{_mandir}/%{namearch}/man1/orteCC.1* +rm -f %{buildroot}%{_libdir}/%{libname}/share/vampirtrace/doc/opari/lacsi01.ps.gz +mkdir %{buildroot}%{_mandir}/%{namearch}/man{2,4,5,6,8,9,n} + +# Make the environment-modules file +mkdir -p %{buildroot}%{_sysconfdir}/modulefiles/mpi +# Since we're doing our own substitution here, use our own definitions. +sed 's#@LIBDIR@#'%{_libdir}/%{libname}'#g; + s#@ETCDIR@#'%{_sysconfdir}/%{namearch}'#g; + s#@FMODDIR@#'%{_fmoddir}/%{namearch}'#g; + s#@INCDIR@#'%{_includedir}/%{namearch}'#g; + s#@MANDIR@#'%{_mandir}/%{namearch}'#g; + s#@PYSITEARCH@#'%{python_sitearch}/%{libname}'#g; + s#@COMPILER@#%{variant}-'%{_arch}%{?_cc_name_suffix}'#g; + s#@SUFFIX@#'%{?_cc_name_suffix}'_%{variant}#g' \ + < %SOURCE1 \ + > %{buildroot}%{_sysconfdir}/modulefiles/mpi/%{namearch} + +# make the rpm config file +mkdir -p %{buildroot}/%{_sysconfdir}/rpm +LIBNAME="%{libname}" +# do not expand _arch +sed "s#@MACRONAME@#${LIBNAME//-/_}#g;s#@MODULENAME@#%{variant}-%%{_arch}%{?_cc_name_suffix}#" < %SOURCE2 > %{buildroot}/%{_sysconfdir}/rpm/macros.%{namearch} +mkdir -p %{buildroot}/%{_fmoddir}/%{namearch} +mkdir -p %{buildroot}/%{python_sitearch}/%{libname} +# Remove extraneous wrapper link libraries (bug 814798) +#sed -i -e s/-ldl// -e s/-lhwloc// \ +# %{buildroot}%{_libdir}/%{libname}/bin/orte_wrapper_script \ +# %{buildroot}%{_libdir}/%{libname}/share/%{libname}/*-wrapper-data.txt + +# openmpi 1.10.2 bumped the soname of libmpi_usempi.so from .1 to .5, +# even though it only added new interfaces (MPI_Aint_{add,diff}), +# which was a compatible change. So it's OK to add a compat symlink: +ln -s libmpi_usempi.so.5 %{buildroot}/%{_libdir}/%{libname}/lib/libmpi_usempi.so.1 + +cd .. + +%ifnarch ppc ppc64 +%global variant openmpi3 +%global libname %{variant}%{?_cc_name_suffix} +%global namearch %{variant}-%{_arch}%{?_cc_name_suffix} + +cd openmpi-%{ompi3ver} +make install DESTDIR=%{buildroot} +find %{buildroot}%{_libdir}/%{libname}/lib -name \*.la | xargs rm +find %{buildroot}%{_mandir}/%{namearch} -type f | xargs gzip -9 +ln -s mpicc.1.gz %{buildroot}%{_mandir}/%{namearch}/man1/mpiCC.1.gz +# Remove dangling symlink +rm %{buildroot}%{_mandir}/%{namearch}/man1/mpiCC.1 +mkdir %{buildroot}%{_mandir}/%{namearch}/man{2,4,5,6,8,9,n} + +# Make the environment-modules file +mkdir -p %{buildroot}%{_sysconfdir}/modulefiles/mpi +# Since we're doing our own substitution here, use our own definitions. +sed 's#@LIBDIR@#%{_libdir}/%{libname}#; + s#@ETCDIR@#%{_sysconfdir}/%{namearch}#; + s#@FMODDIR@#%{_fmoddir}/%{libname}#; + s#@INCDIR@#%{_includedir}/%{namearch}#; + s#@MANDIR@#%{_mandir}/%{namearch}#; + s#@PY2SITEARCH@#%{python_sitearch}/%{libname}#; + s#@COMPILER@#%{variant}-'%{_arch}%{?_cc_name_suffix}'#g; + s#@SUFFIX@#'%{?_cc_name_suffix}'_%{variant}#g' \ + <%{SOURCE301} \ + >%{buildroot}%{_sysconfdir}/modulefiles/mpi/%{namearch} + +# make the rpm config file +install -Dpm 644 %{SOURCE302} %{buildroot}/%{macrosdir}/macros.%{namearch} + +# Link the fortran module to proper location +mkdir -p %{buildroot}%{_fmoddir}/%{libname} +for mod in %{buildroot}%{_libdir}/%{libname}/lib/*.mod +do + modname=$(basename $mod) + ln -s ../../../%{libname}/lib/${modname} %{buildroot}/%{_fmoddir}/%{libname}/ +done + +mkdir -p %{buildroot}/%{python_sitearch}/%{libname} + +# Link the pkgconfig files into the main namespace as well +mkdir -p %{buildroot}%{_libdir}/pkgconfig +cd %{buildroot}%{_libdir}/pkgconfig +ln -s ../%{libname}/lib/pkgconfig/*.pc . +cd - + +cd .. +%endif + +%ifnarch s390 s390x +%global variant compat-openmpi16 +%global libname %{variant}%{?_cc_name_suffix} +%global namearch %{variant}-%{_arch}%{?_cc_name_suffix} + +cd openmpi-1.6.4 +make install DESTDIR=%{buildroot} +rm -fr %{buildroot}%{_libdir}/%{libname}/lib/pkgconfig +find %{buildroot}%{_libdir}/%{libname}/lib -name \*.la | xargs rm +find %{buildroot}%{_mandir}/%{namearch} -type f | xargs gzip -9 +ln -s mpicc.1.gz %{buildroot}%{_mandir}/%{namearch}/man1/mpiCC.1.gz +rm -f %{buildroot}%{_mandir}/%{namearch}/man1/mpiCC.1 +rm -f %{buildroot}%{_mandir}/%{namearch}/man1/orteCC.1* +rm -f %{buildroot}%{_libdir}/%{libname}/share/vampirtrace/doc/opari/lacsi01.ps.gz +mkdir %{buildroot}%{_mandir}/%{namearch}/man{2,4,5,6,8,9,n} + +# Make the environment-modules file +mkdir -p %{buildroot}%{_sysconfdir}/modulefiles/mpi +# Since we're doing our own substitution here, use our own definitions. +sed 's#@LIBDIR@#'%{_libdir}/%{libname}'#g;s#@ETCDIR@#'%{_sysconfdir}/%{namearch}'#g;s#@FMODDIR@#'%{_fmoddir}/%{namearch}'#g;s#@INCDIR@#'%{_includedir}/%{namearch}'#g;s#@MANDIR@#'%{_mandir}/%{namearch}'#g;s#@PYSITEARCH@#'%{python_sitearch}/%{libname}'#g;s#@COMPILER@#%{variant}-'%{_arch}%{?_cc_name_suffix}'#g;s#@SUFFIX@#'%{?_cc_name_suffix}'_%{variant}#g' < %SOURCE1 > %{buildroot}%{_sysconfdir}/modulefiles/mpi/%{namearch} +# make the rpm config file +mkdir -p %{buildroot}/%{_sysconfdir}/rpm +LIBNAME="%{libname}" +# do not expand _arch +sed "s#@MACRONAME@#${LIBNAME//-/_}#g;s#@MODULENAME@#%{variant}-%%{_arch}%{?_cc_name_suffix}#" < %SOURCE2 > %{buildroot}/%{_sysconfdir}/rpm/macros.%{namearch} +mkdir -p %{buildroot}/%{_fmoddir}/%{namearch} +mkdir -p %{buildroot}/%{python_sitearch}/%{libname} +# Remove extraneous wrapper link libraries (bug 814798) +sed -i -e s/-ldl// -e s/-lhwloc// \ + %{buildroot}%{_libdir}/%{libname}/bin/orte_wrapper_script \ + %{buildroot}%{_libdir}/%{libname}/share/%{name}/*-wrapper-data.txt +cd .. +%endif + +%check +make check +cd .. + +%ifnarch ppc ppc64 +cd openmpi-%{ompi3ver} +make check +cd .. +%endif + +%ifnarch s390 s390x +cd openmpi-1.6.4 +make check +cd .. +%endif + +%global variant openmpi +%global libname %{variant}%{?_cc_name_suffix} +%global namearch %{variant}-%{_arch}%{?_cc_name_suffix} + +%files +%dir %{_libdir}/%{name} +%dir %{_sysconfdir}/%{namearch} +%dir %{_libdir}/%{name}/bin +%dir %{_libdir}/%{name}/lib +%dir %{_libdir}/%{name}/lib/openmpi +%dir %{_mandir}/%{namearch} +%dir %{_mandir}/%{namearch}/man* +%dir %{_fmoddir}/%{namearch} +%dir %{_sysconfdir}/modulefiles/mpi +%dir %{python_sitearch}/%{name} +%config(noreplace) %{_sysconfdir}/%{namearch}/* +%{_libdir}/%{name}/bin/mpi[er]* +%{_libdir}/%{name}/bin/ompi* +%{_libdir}/%{name}/bin/opari +%{_libdir}/%{name}/bin/orte* +%{_libdir}/%{name}/bin/oshmem_info +%{_libdir}/%{name}/bin/oshrun +%{_libdir}/%{name}/bin/otf* +%{_libdir}/%{name}/bin/shmemrun +%{_libdir}/%{name}/lib/*.so.* +%{_mandir}/%{namearch}/man1/mpi[er]* +%{_mandir}/%{namearch}/man1/ompi* +%{_mandir}/%{namearch}/man1/orte[-dr_]* +%{_mandir}/%{namearch}/man1/oshmem_info* +%{_mandir}/%{namearch}/man1/oshrun* +%{_mandir}/%{namearch}/man1/shmemrun* +%{_mandir}/%{namearch}/man7/ompi* +%{_mandir}/%{namearch}/man7/orte* +%{_libdir}/%{name}/lib/openmpi/* +%{_sysconfdir}/modulefiles/mpi/%{namearch} +%dir %{_libdir}/%{name}/share +%dir %{_libdir}/%{name}/share/openmpi +%{_libdir}/%{name}/share/openmpi/doc +%{_libdir}/%{name}/share/openmpi/amca-param-sets +%{_libdir}/%{name}/share/openmpi/help*.txt +%{_libdir}/%{name}/share/openmpi/mca-btl-openib-device-params.ini +%{_libdir}/%{name}/share/openmpi/mca-coll-ml.config + +%files devel +%dir %{_includedir}/%{namearch} +%dir %{_libdir}/%{name}/share/vampirtrace +%{_libdir}/%{name}/bin/mpi[cCf]* +%{_libdir}/%{name}/bin/opal_* +%{_libdir}/%{name}/bin/orte[cCf]* +%{_libdir}/%{name}/bin/osh[cf]* +%{_libdir}/%{name}/bin/shmem[cf]* +%{_libdir}/%{name}/bin/vt* +%{_includedir}/%{namearch}/* +%{_libdir}/%{name}/lib/*.so +%{_libdir}/%{name}/lib/lib*.a +%{_libdir}/%{name}/lib/mpi.mod +%{_mandir}/%{namearch}/man1/mpi[cCf]* +%{_mandir}/%{namearch}/man1/osh[cCf]* +%{_mandir}/%{namearch}/man1/shmem[cCf]* +%{_mandir}/%{namearch}/man1/opal_* +%{_mandir}/%{namearch}/man3/* +%{_mandir}/%{namearch}/man7/opal* +%{_libdir}/%{name}/share/openmpi/openmpi-valgrind.supp +%{_libdir}/%{name}/share/openmpi/*-wrapper-data.txt +%{_libdir}/%{name}/share/vampirtrace/* +%{_sysconfdir}/rpm/macros.%{namearch} + +%ifnarch ppc ppc64 +%global variant openmpi3 +%global libname %{variant}%{?_cc_name_suffix} +%global namearch %{variant}-%{_arch}%{?_cc_name_suffix} + +%files -n openmpi3%{?_cc_name_suffix} +%dir %{_libdir}/%{libname} +%dir %{_sysconfdir}/%{namearch} +%dir %{_libdir}/%{libname}/bin +%dir %{_libdir}/%{libname}/lib +%dir %{_libdir}/%{libname}/lib/openmpi +%dir %{_libdir}/%{libname}/lib/pmix +%dir %{_mandir}/%{namearch} +%dir %{_mandir}/%{namearch}/man* +%dir %{_fmoddir}/%{libname} +%dir %{_sysconfdir}/modulefiles/mpi +%dir %{python_sitearch}/%{libname} +%config(noreplace) %{_sysconfdir}/%{namearch}/* +%{_libdir}/%{libname}/bin/mpi[er]* +%{_libdir}/%{libname}/bin/ompi* +%{_libdir}/%{libname}/bin/orte[-dr_]* +%{_libdir}/%{libname}/bin/oshmem_info +%{_libdir}/%{libname}/bin/oshrun +%{_libdir}/%{libname}/bin/prun +%{_libdir}/%{libname}/bin/shmemrun +%{_libdir}/%{libname}/bin/*.pl +%{_libdir}/%{libname}/lib/*.so.* +%{_mandir}/%{namearch}/man1/mpi[er]* +%{_mandir}/%{namearch}/man1/ompi* +%{_mandir}/%{namearch}/man1/orte[-dr_]* +%{_mandir}/%{namearch}/man1/oshmem_info* +%{_mandir}/%{namearch}/man1/oshrun* +%{_mandir}/%{namearch}/man1/prun* +%{_mandir}/%{namearch}/man1/shmemrun* +%{_mandir}/%{namearch}/man7/orte* +%{_mandir}/%{namearch}/man7/ompi* +%{_mandir}/%{namearch}/man7/opal* +%{_libdir}/%{libname}/lib/openmpi/* +%{_libdir}/%{libname}/lib/pmix/*.so +%{_sysconfdir}/modulefiles/mpi/%{namearch} +%dir %{_libdir}/%{libname}/share +%dir %{_libdir}/%{libname}/share/openmpi +%dir %{_libdir}/%{libname}/share/pmix +%{_libdir}/%{libname}/share/openmpi/amca-param-sets +%{_libdir}/%{libname}/share/openmpi/help*.txt +%{_libdir}/%{libname}/share/pmix/help*.txt +%{_libdir}/%{libname}/share/openmpi/mca-btl-openib-device-params.ini + +%files -n openmpi3%{?_cc_name_suffix}-devel +%dir %{_includedir}/%{namearch} +%{_libdir}/%{libname}/bin/mpi[cCf]* +%{_libdir}/%{libname}/bin/opal_* +%{_libdir}/%{libname}/bin/orte[cCf]* +%{_libdir}/%{libname}/bin/osh[cCf]* +%{_libdir}/%{libname}/bin/shmem[cCf]* +%{_includedir}/%{namearch}/* +%{_fmoddir}/%{libname}/ +%{_libdir}/%{libname}/lib/*.so +%{_libdir}/%{libname}/lib/*.mod +%{_libdir}/%{libname}/lib/pkgconfig/ +%{_libdir}/pkgconfig/*.pc +%{_mandir}/%{namearch}/man1/mpi[cCf]* +%{_mandir}/%{namearch}/man1/osh[cCf]* +%{_mandir}/%{namearch}/man1/shmem[cCf]* +%{_mandir}/%{namearch}/man1/opal_* +%{_mandir}/%{namearch}/man3/* +%{_libdir}/%{libname}/share/openmpi/openmpi-valgrind.supp +%{_libdir}/%{libname}/share/pmix/pmix-valgrind.supp +%{_libdir}/%{libname}/share/openmpi/*-wrapper-data.txt +%{macrosdir}/macros.%{namearch} +%endif + +%ifnarch s390 s390x +%global variant compat-openmpi16 +%global libname %{variant}%{?_cc_name_suffix} +%global namearch %{variant}-%{_arch}%{?_cc_name_suffix} + +%files -n compat-openmpi16%{?_cc_name_suffix} +%dir %{_libdir}/%{libname} +%dir %{_sysconfdir}/%{namearch} +%dir %{_libdir}/%{libname}/bin +%dir %{_libdir}/%{libname}/lib +%dir %{_libdir}/%{libname}/lib/openmpi +%dir %{_mandir}/%{namearch} +%dir %{_mandir}/%{namearch}/man* +%dir %{_fmoddir}/%{namearch} +%dir %{_sysconfdir}/modulefiles/mpi +%dir %{python_sitearch}/%{libname} +%config(noreplace) %{_sysconfdir}/%{namearch}/* +%{_libdir}/%{libname}/bin/mpi[er]* +%{_libdir}/%{libname}/bin/ompi* +#%{_libdir}/%{libname}/bin/opal-* +%{_libdir}/%{libname}/bin/opari +%{_libdir}/%{libname}/bin/orte* +%{_libdir}/%{libname}/bin/otf* +%{_libdir}/%{libname}/lib/*.so.* +%{_mandir}/%{namearch}/man1/mpi[er]* +%{_mandir}/%{namearch}/man1/ompi* +#%{_mandir}/%{namearch}/man1/opal-* +%{_mandir}/%{namearch}/man1/orte* +%{_mandir}/%{namearch}/man7/ompi* +%{_mandir}/%{namearch}/man7/orte* +%{_libdir}/%{libname}/lib/openmpi/* +%{_sysconfdir}/modulefiles/mpi/%{namearch} +#%files common +%dir %{_libdir}/%{libname}/share +%dir %{_libdir}/%{libname}/share/openmpi +%{_libdir}/%{libname}/share/openmpi/doc +%{_libdir}/%{libname}/share/openmpi/amca-param-sets +%{_libdir}/%{libname}/share/openmpi/help*.txt +%{_libdir}/%{libname}/share/openmpi/mca-btl-openib-device-params.ini + +%files -n compat-openmpi16%{?_cc_name_suffix}-devel +%dir %{_includedir}/%{namearch} +%dir %{_libdir}/%{libname}/share/vampirtrace +%{_libdir}/%{libname}/bin/mpi[cCf]* +%{_libdir}/%{libname}/bin/vt* +%{_libdir}/%{libname}/bin/opal_* +%{_includedir}/%{namearch}/* +%{_libdir}/%{libname}/lib/*.so +%{_libdir}/%{libname}/lib/lib*.a +%{_libdir}/%{libname}/lib/mpi.mod +%{_mandir}/%{namearch}/man1/mpi[cCf]* +%{_mandir}/%{namearch}/man1/opal_* +%{_mandir}/%{namearch}/man3/* +%{_mandir}/%{namearch}/man7/opal* +%{_libdir}/%{libname}/share/openmpi/openmpi-valgrind.supp +%{_libdir}/%{libname}/share/openmpi/mpi*.txt +%{_libdir}/%{libname}/share/openmpi/orte*.txt +%{_libdir}/%{libname}/share/vampirtrace/* +%{_sysconfdir}/rpm/macros.%{namearch} +%endif + +%changelog +* Tue Apr 09 2019 Jarod Wilson - 1.10.7-5 +- Build with UCX support enabled +- Resolves #1586034 + +* Tue Feb 05 2019 Jarod Wilson - 1.10.7-4 +- Fix compat-openmpi16 version number + +* Fri Jan 25 2019 Jarod Wilson - 1.10.7-3 +- Update openmpi3 sub-package to OpenMPI v3.1.3 +- Resolves: #1637247 +- Rebuild against latest opensm +- Resolves: #1670688 + +* Wed Jun 13 2018 Jarod Wilson - 1.10.7-2 +- Update openmpi3 sub-package to OpenMPI v3.0.2 +- Resolves: #1483570 + +* Fri Nov 03 2017 Michal Schmidt - 1.10.7-1 +- Update to upstream release 1.10.7. +- Add Open MPI 3.0.0 subpackage (openmpi3). +- Resolves: #1452826 + +* Fri Sep 15 2017 Michal Schmidt - 1.10.6-3 +- Fix openib segfault when not all devices are usable. +- Resolves: #1475835 + +* Wed Apr 19 2017 Michal Schmidt - 1.10.6-2 +- Add Chelsio T6 adapter device parameters. +- Fix License tag format. +- Resolves: #1435249 + +* Fri Mar 24 2017 Michal Schmidt - 1.10.6-1 +- Update to upstream release 1.10.6. +- Fix missing RPM provides. +- Resolves: #1382800 +- Resolves: #1365792 + +* Thu Aug 04 2016 Michal Schmidt - 1.10.3-3 +- Restore libmpi_usempi.so.1. +- Related: #1273175 + +* Tue Jul 05 2016 Michal Schmidt - 1.10.3-2 +- Rebuild against current libpsm2. +- Related: #1273175 + +* Fri Jun 17 2016 Michal Schmidt - 1.10.3-1 +- Update to upstream release 1.10.3. +- Stop excluding psm2 MTL by default. The psm/psm2 conflict has been resolved. +- Resolves: #1273175 +- Resolves: #1285292 + +* Thu Sep 03 2015 Michal Schmidt - 1.10.0-10 +- Remove psm2 package variant. Instead use MCA exclusion using config file. +- Related: #947311 +- Related: #1173305 + +* Tue Sep 01 2015 Michal Schmidt - 1.10.0-8 +- Differentiate MPI_COMPILER and MPI_SUFFIX in the variants. +- Related: #947311 +- Related: #1173305 + +* Mon Aug 31 2015 Michal Schmidt - 1.10.0-6 +- Avoid macro expansion in old changelog entry. +- Related: #947311 +- Related: #1173305 + +* Fri Aug 28 2015 Michal Schmidt - 1.10.0-4 +- Disambiguate names of rpm macros among the built variants. +- Use --with-verbs instead of the deprecated synonym --with-openib. +- Related: #947311 +- Related: #1173305 + +* Thu Aug 27 2015 Michal Schmidt - 1.10.0-3 +- Workaround psm vs psm2 conflict by having two separate packages. +- Related: #947311 +- Related: #1173305 + +* Tue Aug 25 2015 Michal Schmidt - 1.10.0-1 +- New upstream release v1.10. +- Added 1.6 compat package. +- Resolves: #947311 +- Resolves: #1173305 + +* Fri Sep 12 2014 Dan Horák - 1.6.4-5 +- add support for aarch64 (backport by Marcin Juszkiewicz) +- Resolves: #1132244 + +* Tue Sep 9 2014 Dan Horák - 1.6.4-4 +- add support for ppc64le +- Resolves: #1125635 + +* Fri Dec 27 2013 Daniel Mach - 1.6.4-3 +- Mass rebuild 2013-12-27 + +* Mon Apr 8 2013 Jay Fenlason 1.6.4-2.1 +- Re-merge the fixes needed to build on RHEL-7. +- Resolves: rhbz927802 + +* Sat Feb 23 2013 Orion Poplawski 1.6.4-2 +- Exclude libopen-trace.* from requires + +* Fri Feb 22 2013 Orion Poplawski 1.6.4-1 +- Update to 1.6.4 +- Drop f90sover and arm-atomics patch fixed upstream + +* Mon Jan 28 2013 Orion Poplawski 1.6.3-7 +- Make __requires_exclude more specific so we don't exclude needed libs + (bug #905263) + +* Sun Nov 18 2012 Peter Robinson 1.6.3-6 +- Update atomics patch for ARM (thanks to Jon Masters) + +* Sun Nov 11 2012 Peter Robinson 1.6.3-5 +- Atomics patch to fix building on ARM (thanks to Jon Masters) + +* Mon Nov 5 2012 Orion Poplawski 1.6.3-4 +- Add patch to fix libmpi_f90.so version +- Add patch to link tests with system libltdl +- Run make check + +* Fri Nov 2 2012 Orion Poplawski 1.6.3-3 +- Set enable-opal-multi-threads for IB support + +* Thu Nov 1 2012 Orion Poplawski 1.6.3-2 +- Update rpm macros to use the new module location + +* Wed Oct 31 2012 Orion Poplawski 1.6.3-1 +- Update to 1.6.3 + +* Sat Oct 13 2012 Orion Poplawski 1.6.2-1 +- Update to 1.6.2 +- Add BR torque-devel to enable torque support +- Drop old module file location (bug #838467) + +* Thu Sep 13 2012 Orion Poplawski 1.6.1-2 +- Drop adding -fPIC, no longer needed +- Set --disable-silent-rules for more verbose build logs +- Don't add opt_*flags to the wrappers +- Only use $RPM_OPT_FLAGS if not using the opt_*flags + +* Thu Aug 23 2012 Orion Poplawski 1.6.1-1 +- Update to 1.6.1 +- Drop hostfile patch applied upstream + +* Fri Jul 20 2012 Fedora Release Engineering - 1.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue May 15 2012 Orion Poplawski 1.6-2 +- Add patch from upstream to fix default hostfile location + +* Tue May 15 2012 Orion Poplawski 1.6-1 +- Update to 1.6 +- Drop arm patch, appears to be addressed upstream +- Remove extraneous wrapper link libraries (bug 814798) + +* Tue Apr 3 2012 Peter Robinson - 1.5.5-1 +- Update to 1.5.5 + +* Tue Feb 28 2012 Fedora Release Engineering - 1.5.4-5.1 +- Rebuilt for c++ ABI breakage + +* Wed Feb 22 2012 Orion Poplawski 1.5.4-4.1 +- Rebuild with hwloc 1.4 + +* Wed Feb 15 2012 Peter Robinson - 1.5.4-4 +- Rebuild for hwloc soname bump + +* Fri Jan 20 2012 Doug Ledford - 1.5.4-3 +- Move modules file to mpi directory and make it conflict with any other + mpi module (bug #651074) + +* Sun Jan 8 2012 Orion Poplawski 1.5.4-2 +- Rebuild with gcc 4.7 (bug #772443) + +* Thu Nov 17 2011 Orion Poplawski 1.5.4-1 +- Update to 1.5.4 +- Drop dt-textrel patch fixed upstream +- Fixup handling removed files (bug #722534) +- Uses hwloc instead of plpa +- Exclude private libraries from provides/requires (bug #741104) +- Drop --enable-mpi-threads & --enable-openib-ibcm, no longer recognized + +* Sat Jun 18 2011 Peter Robinson 1.5-4 +- Exclude ARM platforms due to current lack of "atomic primitives" on the platform + +* Thu Mar 17 2011 Jay Fenlason 1.5-3 +- Add dt-textrel patch to close + Resolves: bz679489 +- Add memchecker and esmtp support + Resolves: bz647011 + +* Tue Feb 08 2011 Fedora Release Engineering - 1.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Oct 18 2010 Jay Fenlason 1.5-1 +- set MANPATH in openmpi module file +- Upgrade to 1.5 +- Workaround for rhbz#617766 appears to no longer be needed for 1.5 +- remove pkgconfig files in instal +- Remove orteCC.1 dangling symlink +- Adjust the files entries for share/openmpi/help* and share/openmpi/mca* +- Adjust the files entries for share/openmpi/mpi* +- Add files entry for share/openmpi/orte*.txt + +* Sun Sep 05 2010 Dennis Gilmore - 1.4.1-7 +- disable valgrind support on sparc arches + +* Sat Jul 24 2010 David Malcolm - 1.4.1-6 +- workaround for rhbz#617766 + +* Wed Jul 21 2010 David Malcolm - 1.4.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Mon Mar 29 2010 Jay Fenlason - 1.4.1-4 +- Update to fix licencing and packaging issues: + Use the system plpa and ltdl librarires rather than the ones in the tarball + Remove licence incompatible files from the tarball. +- update module.in to prepend-path PYTHONPATH + +* Tue Mar 9 2010 Jay Fenlason - 1.4.1-3 +- remove the pkgconfig file completely like we did in RHEL. + +* Tue Jan 26 2010 Jay Fenlason - 1.4.1-2 +- BuildRequires: python + +* Tue Jan 26 2010 Jay Fenlason - 1.4.1-1 +- New upstream version, which includes the changeset_r22324 patch. +- Correct a typo in the Source0 line in this spec file. + +* Fri Jan 15 2010 Doug Ledford - 1.4-4 +- Fix an issue with usage of _cc_name_suffix that cause a broken define in + our module file + +* Fri Jan 15 2010 Doug Ledford - 1.4-3 +- Fix pkgconfig file substitution +- Bump version so we are later than the equivalent version from Red Hat + Enterprise Linux + +* Wed Jan 13 2010 Doug Ledford - 1.4-1 +- Update to latest upstream stable version +- Add support for libibcm usage +- Enable sge support via configure options since it's no longer on by default +- Add patch to resolve allreduce issue (bz538199) +- Remove no longer needed patch for Chelsio cards + +* Tue Sep 22 2009 Jay Fenlason - 1.3.3-6 +- Create and own man* directories for use by dependent packages. + +* Wed Sep 16 2009 Jay Fenlason - 1.3.3-5 +- Move the module file from %%{_datadir}/Modules/modulefiles/%%{namearch} to + %%{_sysconfdir}/modulefiles/%%{namearch} where it belongs. +- Have the -devel subpackage own the man1 and man7 directories for completeness. +- Add a blank line before the clean section. +- Remove --enable-mpirun-prefix-by-default from configure. + +* Wed Sep 9 2009 Jay Fenlason - 1.3.3-4 +- Modify packaging to conform to + https://fedoraproject.org/wiki/PackagingDrafts/MPI (bz521334). +- remove --with-ft=cr from configure, as it was apparently causing problems + for some people. +- Add librdmacm-devel and librdmacm to BuildRequires (related bz515565). +- Add openmpi-bz515567.patch to add support for the latest Chelsio device IDs + (related bz515567). +- Add exclude-arch (s390 s390x) because we don't have required -devel packages + there. + +* Sat Jul 25 2009 Fedora Release Engineering - 1.3.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Jul 21 2009 Doug Ledford - 1.3.3-2 +- Add MPI_BIN and MPI_LIB to the modules file (related bz511099) + +* Tue Jul 21 2009 Doug Ledford - 1.3.3-1 +- Make sure all created dirs are owned (bz474677) +- Fix loading of pkgconfig file (bz476844) +- Resolve file conflict between us and libotf (bz496131) +- Resolve dangling symlinks issue (bz496909) +- Resolve unexpanded %%{mode} issues (bz496911) +- Restore -devel subpackage (bz499851) +- Make getting the default openmpi devel environment easier (bz504357) +- Make the -devel package pull in the base package (bz459458) +- Make it easier to use alternative compilers to build package (bz246484) + +* Sat Jul 18 2009 Jussi Lehtola - 1.3.1-4 +- Add Provides: openmpi-devel to fix other package builds in rawhide. + +* Fri May 08 2009 Lubomir Rintel - 1.3.1-3 +- Treat i586 the same way as i386 + +* Wed Apr 22 2009 Doug Ledford - 1.3.1-2 +- fixed broken update +- Resolves: bz496909, bz496131, bz496911 + +* Tue Apr 14 2009 Tom "spot" Callaway - 1.3.1-1 +- update to 1.3.1, cleanup alternatives, spec, make new vt subpackage + +* Thu Feb 26 2009 Fedora Release Engineering - 1.2.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Mon Feb 18 2008 Fedora Release Engineering - 1.2.4-2 +- Autorebuild for GCC 4.3 + +* Wed Oct 17 2007 Doug Ledford - 1.2.4-1 +- Update to 1.2.4 upstream version +- Build against libtorque +- Pass a valid mode to open +- Resolves: bz189441, bz265141 + +* Tue Aug 28 2007 Fedora Release Engineering - 1.2.3-5 +- Rebuild for selinux ppc32 issue. + +* Mon Jul 16 2007 Doug Ledford - 1.2.3-4 +- Fix a directory permission problem on the base openmpi directories + +* Thu Jul 12 2007 Florian La Roche - 1.2.3-3 +- requires alternatives for various sub-rpms + +* Mon Jul 02 2007 Doug Ledford - 1.2.3-2 +- Fix dangling symlink issue caused by a bad macro usage +- Resolves: bz246450 + +* Wed Jun 27 2007 Doug Ledford - 1.2.3-1 +- Update to latest upstream version +- Fix file ownership on -libs package +- Take a swing at solving the multi-install compatibility issues + +* Mon Feb 19 2007 Doug Ledford - 1.1.1-7 +- Bump version to be at least as high as the RHEL4U5 openmpi +- Integrate fixes made in RHEL4 openmpi into RHEL5 (fix a multilib conflict + for the openmpi.module file by moving from _datadir to _libdir, make sure + all sed replacements have the g flag so they replace all instances of + the marker per line, not just the first, and add a %%defattr tag to the + files section of the -libs package to avoid install errors about + brewbuilder not being a user or group) +- Resolves: bz229298 + +* Wed Jan 17 2007 Doug Ledford - 1.1.1-5 +- Remove the FORTIFY_SOURCE and stack protect options +- Related: bz213075 + +* Fri Oct 20 2006 Doug Ledford - 1.1.1-4 +- Bump and build against the final openib-1.1 package + +* Wed Oct 18 2006 Doug Ledford - 1.1.1-3 +- Fix an snprintf length bug in opal/util/cmd_line.c +- RESOLVES: rhbz#210714 + +* Wed Oct 18 2006 Doug Ledford - 1.1.1-2 +- Bump and build against openib-1.1-0.pre1.1 instead of 1.0 + +* Tue Oct 17 2006 Doug Ledford - 1.1.1-1 +- Update to upstream 1.1.1 version + +* Fri Oct 13 2006 Doug Ledford - 1.1-7 +- ia64 can't take -m64 on the gcc command line, so don't set it there + +* Wed Oct 11 2006 Doug Ledford - 1.1-6 +- Bump rev to match fc6 rev +- Fixup some issue with alternatives support +- Split the 32bit and 64bit libs ld.so.conf.d files into two files so + multilib or single lib installs both work properly +- Put libs into their own package +- Add symlinks to /usr/share/openmpi/bin%%{mode} so that opal_wrapper-%%{mode} + can be called even if it isn't the currently selected default method in + the alternatives setup (opal_wrapper needs to be called by mpicc, mpic++, + etc. in order to determine compile mode from argv[0]). + +* Sun Aug 27 2006 Doug Ledford - 1.1-4 +- Make sure the post/preun scripts only add/remove alternatives on initial + install and final removal, otherwise don't touch. + +* Fri Aug 25 2006 Doug Ledford - 1.1-3 +- Don't ghost the mpi.conf file as that means it will get removed when + you remove 1 out of a number of alternatives based packages +- Put the .mod file in -devel + +* Mon Aug 7 2006 Doug Ledford - 1.1-2 +- Various lint cleanups +- Switch to using the standard alternatives mechanism instead of a home + grown one + +* Wed Aug 2 2006 Doug Ledford - 1.1-1 +- Upgrade to 1.1 +- Build with Infiniband support via openib + +* Mon Jun 12 2006 Jason Vas Dias - 1.0.2-1 +- Upgrade to 1.0.2 + +* Wed Feb 15 2006 Jason Vas Dias - 1.0.1-1 +- Import into Fedora Core +- Resolve LAM clashes + +* Wed Jan 25 2006 Orion Poplawski - 1.0.1-2 +- Use configure options to install includes and libraries +- Add ld.so.conf.d file to find libraries +- Add -fPIC for x86_64 + +* Tue Jan 24 2006 Orion Poplawski - 1.0.1-1 +- 1.0.1 +- Use alternatives + +* Sat Nov 19 2005 Ed Hill - 1.0-2 +- fix lam conflicts + +* Fri Nov 18 2005 Ed Hill - 1.0-1 +- initial specfile created +