From 8fe21c3fd5b5e7be60a75a09ba4b3ec4bad417bd Mon Sep 17 00:00:00 2001 From: David Seifert Date: Sat, 29 Jan 2022 01:00:14 +0100 Subject: [PATCH] sci-biology/tree-puzzle: fix build system and MPI Closes: https://bugs.gentoo.org/690900 Closes: https://bugs.gentoo.org/810502 Closes: https://bugs.gentoo.org/814185 Signed-off-by: David Seifert --- .../files/tree-puzzle-5.2-MPI-3.0.patch | 362 ++++++++++++++++++ .../tree-puzzle/tree-puzzle-5.2.ebuild | 25 +- 2 files changed, 375 insertions(+), 12 deletions(-) create mode 100644 sci-biology/tree-puzzle/files/tree-puzzle-5.2-MPI-3.0.patch diff --git a/sci-biology/tree-puzzle/files/tree-puzzle-5.2-MPI-3.0.patch b/sci-biology/tree-puzzle/files/tree-puzzle-5.2-MPI-3.0.patch new file mode 100644 index 0000000000000..66e3e64823383 --- /dev/null +++ b/sci-biology/tree-puzzle/files/tree-puzzle-5.2-MPI-3.0.patch @@ -0,0 +1,362 @@ +https://bugs.gentoo.org/690900 +rename MPI 1.0 to 3.0+ functions: +- MPI_Address -> MPI_Get_address +- MPI_Type_struct -> MPI_Type_create_struct + +--- a/src/ppuzzle.c ++++ b/src/ppuzzle.c +@@ -297,13 +297,13 @@ + else MPI_Recv(&dummy, 0, MPI_INT, PP_MyMaster, PP_UPDATEEEI, PP_Comm, &stat); + + Dtypes[0] = MPI_DOUBLE; Dtypelens[0] = tpmradix; +- MPI_Address(&(Eval[0]), &(Dtypeaddr[0])); ++ MPI_Get_address(&(Eval[0]), &(Dtypeaddr[0])); + Dtypes[1] = MPI_DOUBLE; Dtypelens[1] = tpmradix * tpmradix; +- MPI_Address(&(Evec[0][0]), &(Dtypeaddr[1])); ++ MPI_Get_address(&(Evec[0][0]), &(Dtypeaddr[1])); + Dtypes[2] = MPI_DOUBLE; Dtypelens[2] = tpmradix * tpmradix; +- MPI_Address(&(Ievc[0][0]), &(Dtypeaddr[2])); ++ MPI_Get_address(&(Ievc[0][0]), &(Dtypeaddr[2])); + +- MPI_Type_struct(3, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); ++ MPI_Type_create_struct(3, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); + MPI_Type_commit(&PP_Data); + + MPI_Bcast (MPI_BOTTOM, 1, PP_Data, PP_MyMaster, PP_Comm); +@@ -341,19 +341,19 @@ + double* DMVector = new_dvector(jobs); + + Dtypes[0] = MPI_DOUBLE; Dtypelens[0] = jobs; +- MPI_Address(&(DMVector[0]), &(Dtypeaddr[0])); ++ MPI_Get_address(&(DMVector[0]), &(Dtypeaddr[0])); + Dtypes[1] = MPI_DOUBLE; Dtypelens[1] = numcats; +- MPI_Address(&(Rates[0]), &(Dtypeaddr[1])); ++ MPI_Get_address(&(Rates[0]), &(Dtypeaddr[1])); + Dtypes[2] = MPI_DOUBLE; Dtypelens[2] = 1; +- MPI_Address(&(fracinv), &(Dtypeaddr[2])); ++ MPI_Get_address(&(fracinv), &(Dtypeaddr[2])); + Dtypes[3] = MPI_DOUBLE; Dtypelens[3] = tpmradix; +- MPI_Address(&(Eval[0]), &(Dtypeaddr[3])); ++ MPI_Get_address(&(Eval[0]), &(Dtypeaddr[3])); + Dtypes[4] = MPI_DOUBLE; Dtypelens[4] = tpmradix * tpmradix; +- MPI_Address(&(Evec[0][0]), &(Dtypeaddr[4])); ++ MPI_Get_address(&(Evec[0][0]), &(Dtypeaddr[4])); + Dtypes[5] = MPI_DOUBLE; Dtypelens[5] = tpmradix * tpmradix; +- MPI_Address(&(Ievc[0][0]), &(Dtypeaddr[5])); ++ MPI_Get_address(&(Ievc[0][0]), &(Dtypeaddr[5])); + +- MPI_Type_struct(6, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); ++ MPI_Type_create_struct(6, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); + MPI_Type_commit(&PP_Data); + + if (PP_IamMaster) { +@@ -719,10 +719,10 @@ + #endif + doubles[0] = frconst; + +- MPI_Address(ints, Dtypeaddr); +- MPI_Address(doubles, (Dtypeaddr+1)); ++ MPI_Get_address(ints, Dtypeaddr); ++ MPI_Get_address(doubles, (Dtypeaddr+1)); + +- MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Sizes); ++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Sizes); + MPI_Type_commit(&PP_Sizes); + + for (dest=1; dest%d: [%d/%d] #=%d \"%s\"\n", +@@ -1764,9 +1764,9 @@ + } + Dtypes[((int)blocksize + pstnum)] = MPI_INT; + Dtypelens[((int)blocksize + pstnum)] = pstnum; +- MPI_Address(&(pstnumarr[0]), &(Dtypeaddr[((int)blocksize + pstnum)])); ++ MPI_Get_address(&(pstnumarr[0]), &(Dtypeaddr[((int)blocksize + pstnum)])); + +- MPI_Type_struct(((int)blocksize + pstnum + 1), Dtypelens, Dtypeaddr, Dtypes, &PP_Biparts); ++ MPI_Type_create_struct(((int)blocksize + pstnum + 1), Dtypelens, Dtypeaddr, Dtypes, &PP_Biparts); + MPI_Type_commit(&PP_Biparts); + + error = MPI_Ssend(MPI_BOTTOM, 1, PP_Biparts, PP_MyMaster, PP_PUZZLEBLOCK, PP_Comm); +@@ -1843,20 +1843,20 @@ + (*bip)[n] = new_cmatrix(*taxa - 3, *taxa); + Dtypes[n] = MPI_CHAR; + Dtypelens[n] = (*taxa - 3) * *taxa; +- MPI_Address(&((*bip)[n][0][0]), &(Dtypeaddr[n])); ++ MPI_Get_address(&((*bip)[n][0][0]), &(Dtypeaddr[n])); + } + for (n=0; n