summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorgios Eleftheriou2019-02-19 23:43:36 +0100
committerGeorgios Eleftheriou2019-02-19 23:43:36 +0100
commit1cd670c1e542cdf9864c88492a3b238c30223ece (patch)
tree27c43d0f5e2ab39321330c38c5180bba3529ad5b
parentc1aadfc066a332890c7968566698fd361ccd8392 (diff)
downloadaur-1cd670c1e542cdf9864c88492a3b238c30223ece.tar.gz
applied patch for MPI 4 compatibility
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD12
-rw-r--r--mpi4.patch102
3 files changed, 114 insertions, 4 deletions
diff --git a/.SRCINFO b/.SRCINFO
index fc90be41444d..bcd44dab9ed4 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = hdf5-openmpi-java
pkgdesc = General purpose library and file format for storing scientific data (openmpi version) (full version including its Java Native Interfaces)
pkgver = 1.10.4
- pkgrel = 2
+ pkgrel = 3
url = https://portal.hdfgroup.org/display/support
arch = x86_64
license = custom
@@ -24,8 +24,10 @@ pkgbase = hdf5-openmpi-java
options = staticlibs
source = https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.4/src/hdf5-1.10.4.tar.bz2
source = mpi.patch
+ source = mpi4.patch
md5sums = 886148d0cc9ffd3c8e1fce0bd75ed07b
md5sums = 63b43e3d4a5bbea4bcecc84874e08913
+ md5sums = 5b981fb1c802d5cacd46af23162ff410
pkgname = hdf5-openmpi-java
diff --git a/PKGBUILD b/PKGBUILD
index fd5553cd338e..82d59352ce97 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,4 +1,5 @@
# Maintainer : George Eleftheriou <eleftg>
+# Contributor: Martin Diehl <MartinDiehl>
# Contributor: Jingbei Li <petronny>
# Contributor: Ronald van Haren <ronald.archlinux.org>
# Contributor: Bruno Pagani (a.k.a. ArchangeGabriel) <archange@archlinux.org>
@@ -13,7 +14,7 @@ _mpi=openmpi
pkgname=${_pkgname}-${_mpi}-java
_prefix=/usr
pkgver=1.10.4
-pkgrel=2
+pkgrel=3
pkgdesc="General purpose library and file format for storing scientific data (${_mpi} version) (full version including its Java Native Interfaces)"
arch=('x86_64')
url="https://portal.hdfgroup.org/display/support"
@@ -25,9 +26,11 @@ provides=('hdf5-java' 'hdf5-openmpi' 'hdf5' 'hdf5-cpp-fortran' "hdf5-fortran-${_
conflicts=('hdf5-java' 'hdf5' 'hdf5-openmpi')
replaces=("hdf5-fortran-${_mpi}")
source=("https://support.hdfgroup.org/ftp/HDF5/releases/${_pkgname}-${pkgver:0:4}/${_pkgname}-${pkgver}/src/${_pkgname}-${pkgver}.tar.bz2"
- 'mpi.patch')
+ 'mpi.patch'
+ 'mpi4.patch')
md5sums=('886148d0cc9ffd3c8e1fce0bd75ed07b'
- '63b43e3d4a5bbea4bcecc84874e08913')
+ '63b43e3d4a5bbea4bcecc84874e08913'
+ '5b981fb1c802d5cacd46af23162ff410')
prepare() {
mkdir -p build
@@ -35,6 +38,9 @@ prepare() {
# FS#33343
patch -p1 -i ../mpi.patch
+
+ # patch for MPI4 compatibility
+ patch -p1 -i ../mpi4.patch
}
build() {
diff --git a/mpi4.patch b/mpi4.patch
new file mode 100644
index 000000000000..a816701222fd
--- /dev/null
+++ b/mpi4.patch
@@ -0,0 +1,102 @@
+--- A/src/H5Smpio.c 2018-09-04 04:54:44.000000000 +0200
++++ B/src/H5Smpio.c 2018-11-22 16:58:44.365923064 +0100
+@@ -859,7 +859,7 @@
+ * (2GB-1)number_of_blocks * the_datatype_extent.
+ */
+
+- MPI_Aint stride_in_bytes, inner_extent;
++ MPI_Aint stride_in_bytes, inner_extent, lower_bound;
+ MPI_Datatype block_type;
+
+ /* create a contiguous datatype inner_type x number of BLOCKS.
+@@ -879,7 +879,7 @@
+ HMPI_GOTO_ERROR(FAIL, "MPI_Type_contiguous failed", mpi_code)
+ }
+
+- MPI_Type_extent (inner_type, &inner_extent);
++ MPI_Type_get_extent (inner_type, &lower_bound, &inner_extent);
+ stride_in_bytes = inner_extent * (MPI_Aint)d[i].strid;
+
+ /* If the element count is larger than what a 32 bit integer can hold,
+@@ -1424,7 +1424,7 @@
+ int block_len[2];
+ int mpi_code; /* MPI return code */
+ MPI_Datatype inner_type, outer_type, leftover_type, type[2];
+- MPI_Aint disp[2], old_extent;
++ MPI_Aint disp[2], old_extent, lower_bound;
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_NOAPI_NOINIT
+@@ -1500,9 +1500,9 @@
+ }
+ }
+
+- MPI_Type_extent (old_type, &old_extent);
++ MPI_Type_get_extent (old_type, &lower_bound, &old_extent);
+
+- /* Set up the arguments for MPI_Type_struct constructor */
++ /* Set up the arguments for MPI_Type_create_struct constructor */
+ type[0] = outer_type;
+ type[1] = leftover_type;
+ block_len[0] = 1;
+--- A/src/H5.c 2018-10-05 07:21:51.000000000 +0200
++++ B/src/H5.c 2018-11-22 16:52:52.353016751 +0100
+@@ -138,7 +138,7 @@
+ if (mpi_initialized && !mpi_finalized) {
+ int key_val;
+
+- if(MPI_SUCCESS != (mpi_code = MPI_Comm_create_keyval(MPI_NULL_COPY_FN,
++ if(MPI_SUCCESS != (mpi_code = MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN,
+ (MPI_Comm_delete_attr_function *)H5_mpi_delete_cb,
+ &key_val, NULL)))
+ HMPI_GOTO_ERROR(FAIL, "MPI_Comm_create_keyval failed", mpi_code)
+--- A/testpar/t_cache.c 2018-09-10 16:43:41.000000000 +0200
++++ B/testpar/t_cache.c 2018-11-22 16:58:45.405881436 +0100
+@@ -1217,20 +1217,20 @@
+ struct mssg_t sample; /* used to compute displacements */
+
+ /* setup the displacements array */
+- if ( ( MPI_SUCCESS != MPI_Address(&sample.req, &displs[0]) ) ||
+- ( MPI_SUCCESS != MPI_Address(&sample.src, &displs[1]) ) ||
+- ( MPI_SUCCESS != MPI_Address(&sample.dest, &displs[2]) ) ||
+- ( MPI_SUCCESS != MPI_Address(&sample.mssg_num, &displs[3]) ) ||
+- ( MPI_SUCCESS != MPI_Address(&sample.base_addr, &displs[4]) ) ||
+- ( MPI_SUCCESS != MPI_Address(&sample.len, &displs[5]) ) ||
+- ( MPI_SUCCESS != MPI_Address(&sample.ver, &displs[6]) ) ||
+- ( MPI_SUCCESS != MPI_Address(&sample.count, &displs[7]) ) ||
+- ( MPI_SUCCESS != MPI_Address(&sample.magic, &displs[8]) ) ) {
++ if ( ( MPI_SUCCESS != MPI_Get_address(&sample.req, &displs[0]) ) ||
++ ( MPI_SUCCESS != MPI_Get_address(&sample.src, &displs[1]) ) ||
++ ( MPI_SUCCESS != MPI_Get_address(&sample.dest, &displs[2]) ) ||
++ ( MPI_SUCCESS != MPI_Get_address(&sample.mssg_num, &displs[3]) ) ||
++ ( MPI_SUCCESS != MPI_Get_address(&sample.base_addr, &displs[4]) ) ||
++ ( MPI_SUCCESS != MPI_Get_address(&sample.len, &displs[5]) ) ||
++ ( MPI_SUCCESS != MPI_Get_address(&sample.ver, &displs[6]) ) ||
++ ( MPI_SUCCESS != MPI_Get_address(&sample.count, &displs[7]) ) ||
++ ( MPI_SUCCESS != MPI_Get_address(&sample.magic, &displs[8]) ) ) {
+
+ nerrors++;
+ success = FALSE;
+ if ( verbose ) {
+- HDfprintf(stdout, "%d:%s: MPI_Address() call failed.\n",
++ HDfprintf(stdout, "%d:%s: MPI_Get_address() call failed.\n",
+ world_mpi_rank, FUNC);
+ }
+
+@@ -1245,14 +1245,14 @@
+
+ if ( success ) {
+
+- result = MPI_Type_struct(9, block_len, displs, mpi_types, &mpi_mssg_t);
++ result = MPI_Type_create_struct(9, block_len, displs, mpi_types, &mpi_mssg_t);
+
+ if ( result != MPI_SUCCESS ) {
+
+ nerrors++;
+ success = FALSE;
+ if ( verbose ) {
+- HDfprintf(stdout, "%d:%s: MPI_Type_struct() call failed.\n",
++ HDfprintf(stdout, "%d:%s: MPI_Type_create_struct() call failed.\n",
+ world_mpi_rank, FUNC);
+ }
+ }