commit: 8fe21c3fd5b5e7be60a75a09ba4b3ec4bad417bd Author: David Seifert <soap <AT> gentoo <DOT> org> AuthorDate: Sat Jan 29 00:00:14 2022 +0000 Commit: David Seifert <soap <AT> gentoo <DOT> org> CommitDate: Sat Jan 29 00:00:14 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8fe21c3f
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 <soap <AT> gentoo.org> .../files/tree-puzzle-5.2-MPI-3.0.patch | 362 +++++++++++++++++++++ sci-biology/tree-puzzle/tree-puzzle-5.2.ebuild | 25 +- 2 files changed, 375 insertions(+), 12 deletions(-) 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 000000000000..66e3e6482338 --- /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<PP_NumProcs; dest++) { +@@ -797,10 +797,10 @@ + fprintf(STDOUT, "(%2d) Receiving Sizes ...\n", PP_Myid); + # endif /* PVERBOSE3 */ + +- 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); + + error = MPI_Probe(PP_MyMaster, MPI_ANY_TAG, PP_Comm, &stat); +@@ -889,31 +889,31 @@ + # endif /* PVERBOSE2 */ + + Dtypes [0] = MPI_CHAR; Dtypelens [0] = Maxspc * Numptrn; +- MPI_Address(&(Seqpat[0][0]), &(Dtypeaddr[0])); ++ MPI_Get_address(&(Seqpat[0][0]), &(Dtypeaddr[0])); + Dtypes [1] = MPI_INT; Dtypelens [1] = Maxsite ; +- MPI_Address(&(Alias[0]), &(Dtypeaddr[1])); ++ MPI_Get_address(&(Alias[0]), &(Dtypeaddr[1])); + Dtypes [2] = MPI_INT; Dtypelens [2] = Numptrn ; +- MPI_Address(&(Weight[0]), &(Dtypeaddr[2])); ++ MPI_Get_address(&(Weight[0]), &(Dtypeaddr[2])); + Dtypes [3] = MPI_INT; Dtypelens [3] = Numptrn ; +- MPI_Address(&(constpat[0]), &(Dtypeaddr[3])); ++ MPI_Get_address(&(constpat[0]), &(Dtypeaddr[3])); + Dtypes [4] = MPI_DOUBLE; Dtypelens [4] = numcats ; +- MPI_Address(&(Rates[0]), &(Dtypeaddr[4])); ++ MPI_Get_address(&(Rates[0]), &(Dtypeaddr[4])); + Dtypes [5] = MPI_DOUBLE; Dtypelens [5] = tpmradix ; +- MPI_Address(&(Eval[0]), &(Dtypeaddr[5])); ++ MPI_Get_address(&(Eval[0]), &(Dtypeaddr[5])); + Dtypes [6] = MPI_DOUBLE; Dtypelens [6] = tpmradix ; +- MPI_Address(&(Freqtpm[0]), &(Dtypeaddr[6])); ++ MPI_Get_address(&(Freqtpm[0]), &(Dtypeaddr[6])); + Dtypes [7] = MPI_DOUBLE; Dtypelens [7] = tpmradix * tpmradix ; +- MPI_Address(&(Evec[0][0]), &(Dtypeaddr[7])); ++ MPI_Get_address(&(Evec[0][0]), &(Dtypeaddr[7])); + Dtypes [8] = MPI_DOUBLE; Dtypelens [8] = tpmradix * tpmradix ; +- MPI_Address(&(Ievc[0][0]), &(Dtypeaddr[8])); ++ MPI_Get_address(&(Ievc[0][0]), &(Dtypeaddr[8])); + Dtypes [9] = MPI_DOUBLE; Dtypelens [9] = tpmradix * tpmradix ; +- MPI_Address(&(iexp[0][0]), &(Dtypeaddr[9])); ++ MPI_Get_address(&(iexp[0][0]), &(Dtypeaddr[9])); + Dtypes [10] = MPI_DOUBLE; Dtypelens [10] = Maxspc * Maxspc ; +- MPI_Address(&(Distanmat[0][0]), &(Dtypeaddr[10])); ++ MPI_Get_address(&(Distanmat[0][0]), &(Dtypeaddr[10])); + Dtypes [11] = MPI_DOUBLE; Dtypelens [11] = numcats * tpmradix * tpmradix ; +- MPI_Address(&(ltprobr[0][0][0]), &(Dtypeaddr[11])); ++ MPI_Get_address(&(ltprobr[0][0][0]), &(Dtypeaddr[11])); + +- MPI_Type_struct(12, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); ++ MPI_Type_create_struct(12, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); + MPI_Type_commit(&PP_Data); + + +@@ -984,31 +984,31 @@ + # endif /* PVERBOSE2 */ + + Dtypes [0] = MPI_CHAR; Dtypelens [0] = Maxspc * Numptrn; +- MPI_Address(&(Seqpat[0][0]), &(Dtypeaddr[0])); ++ MPI_Get_address(&(Seqpat[0][0]), &(Dtypeaddr[0])); + Dtypes [1] = MPI_INT; Dtypelens [1] = Maxsite ; +- MPI_Address(&(Alias[0]), &(Dtypeaddr[1])); ++ MPI_Get_address(&(Alias[0]), &(Dtypeaddr[1])); + Dtypes [2] = MPI_INT; Dtypelens [2] = Numptrn ; +- MPI_Address(&(Weight[0]), &(Dtypeaddr[2])); ++ MPI_Get_address(&(Weight[0]), &(Dtypeaddr[2])); + Dtypes [3] = MPI_INT; Dtypelens [3] = Numptrn ; +- MPI_Address(&(constpat[0]), &(Dtypeaddr[3])); ++ MPI_Get_address(&(constpat[0]), &(Dtypeaddr[3])); + Dtypes [4] = MPI_DOUBLE; Dtypelens [4] = numcats ; +- MPI_Address(&(Rates[0]), &(Dtypeaddr[4])); ++ MPI_Get_address(&(Rates[0]), &(Dtypeaddr[4])); + Dtypes [5] = MPI_DOUBLE; Dtypelens [5] = tpmradix ; +- MPI_Address(&(Eval[0]), &(Dtypeaddr[5])); ++ MPI_Get_address(&(Eval[0]), &(Dtypeaddr[5])); + Dtypes [6] = MPI_DOUBLE; Dtypelens [6] = tpmradix ; +- MPI_Address(&(Freqtpm[0]), &(Dtypeaddr[6])); ++ MPI_Get_address(&(Freqtpm[0]), &(Dtypeaddr[6])); + Dtypes [7] = MPI_DOUBLE; Dtypelens [7] = tpmradix * tpmradix ; +- MPI_Address(&(Evec[0][0]), &(Dtypeaddr[7])); ++ MPI_Get_address(&(Evec[0][0]), &(Dtypeaddr[7])); + Dtypes [8] = MPI_DOUBLE; Dtypelens [8] = tpmradix * tpmradix ; +- MPI_Address(&(Ievc[0][0]), &(Dtypeaddr[8])); ++ MPI_Get_address(&(Ievc[0][0]), &(Dtypeaddr[8])); + Dtypes [9] = MPI_DOUBLE; Dtypelens [9] = tpmradix * tpmradix ; +- MPI_Address(&(iexp[0][0]), &(Dtypeaddr [9])); ++ MPI_Get_address(&(iexp[0][0]), &(Dtypeaddr [9])); + Dtypes [10] = MPI_DOUBLE; Dtypelens [10] = Maxspc * Maxspc ; +- MPI_Address(&(Distanmat[0][0]), &(Dtypeaddr[10])); ++ MPI_Get_address(&(Distanmat[0][0]), &(Dtypeaddr[10])); + Dtypes [11] = MPI_DOUBLE; Dtypelens [11] = numcats * tpmradix * tpmradix ; +- MPI_Address(&(ltprobr[0][0][0]), &(Dtypeaddr[11])); ++ MPI_Get_address(&(ltprobr[0][0][0]), &(Dtypeaddr[11])); + +- MPI_Type_struct(12, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); ++ MPI_Type_create_struct(12, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); + MPI_Type_commit(&PP_Data); + + for (dest=1; dest<PP_NumProcs; dest++) { +@@ -1150,10 +1150,10 @@ + ints[4] = usebestq; + ints[5] = approx; + +- 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_Quart); ++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Quart); + MPI_Type_commit(&PP_Quart); + + # ifdef PVERBOSE2 +@@ -1201,10 +1201,10 @@ + + PP_quartrecved++; + PP_quartrecvedn++; +- 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_Quart); ++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Quart); + MPI_Type_commit(&PP_Quart); + + error = MPI_Recv(MPI_BOTTOM, 1, PP_Quart, MPI_ANY_SOURCE, PP_QUART, PP_Comm, &stat); +@@ -1368,10 +1368,10 @@ + ulis[5] = fullresqs; /* number of fully resolved quartets */ + ulis[6] = missingqs; /* number of missing quartets */ + +- MPI_Address(ulis, Dtypeaddr); +- MPI_Address(ints, (Dtypeaddr+1)); ++ MPI_Get_address(ulis, Dtypeaddr); ++ MPI_Get_address(ints, (Dtypeaddr+1)); + +- MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_QBlockSpecs); ++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_QBlockSpecs); + MPI_Type_commit(&PP_QBlockSpecs); + + # ifdef PVERBOSE2 +@@ -1384,12 +1384,12 @@ + fprintf(STDOUT, "(%2d) ... Sent QuartBlockSpecs (%ld, %ld, %ld, %d)\n", PP_Myid, ulis[0], ulis[1], ulis[2], ints[0]); + # endif /* PVERBOSE3 */ + +- MPI_Address(trueaddr, DtypeaddrRes); ++ MPI_Get_address(trueaddr, DtypeaddrRes); + DtypelensRes[0] = truenum; + +- MPI_Address(bq, (DtypeaddrRes + 1)); ++ MPI_Get_address(bq, (DtypeaddrRes + 1)); + DtypelensRes[1] = numofbq; +- MPI_Type_struct(2, DtypelensRes, DtypeaddrRes, DtypesRes, &PP_QBlockRes); ++ MPI_Type_create_struct(2, DtypelensRes, DtypeaddrRes, DtypesRes, &PP_QBlockRes); + MPI_Type_commit(&PP_QBlockRes); + + error = MPI_Ssend(MPI_BOTTOM, 1, PP_QBlockRes, PP_MyMaster, PP_QUARTBLOCK, PP_Comm); +@@ -1455,10 +1455,10 @@ + # ifdef PVERBOSE3 + fprintf(STDOUT, "(%2d) Receiving QuartBlock ...\n", PP_Myid); + # endif /* PVERBOSE3 */ +- MPI_Address(ulis, Dtypeaddr); +- MPI_Address(ints, (Dtypeaddr+1)); ++ MPI_Get_address(ulis, Dtypeaddr); ++ MPI_Get_address(ints, (Dtypeaddr+1)); + +- MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_QBlockSpecs); ++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_QBlockSpecs); + MPI_Type_commit(&PP_QBlockSpecs); + + MPI_Probe(MPI_ANY_SOURCE, PP_QUARTBLOCKSPECS, PP_Comm, &stat); +@@ -1486,13 +1486,13 @@ + # endif /* PVERBOSE3 */ + + DtypelensRes[0] = truenum; +- MPI_Address(trueaddr, DtypeaddrRes); ++ MPI_Get_address(trueaddr, DtypeaddrRes); + + bq = calloc((size_t) *numofbq, sizeof(uli)); + + DtypelensRes[1] = *numofbq; +- MPI_Address(bq, (DtypeaddrRes+1)); +- MPI_Type_struct(2, DtypelensRes, DtypeaddrRes, DtypesRes, &PP_QBlockRes); ++ MPI_Get_address(bq, (DtypeaddrRes+1)); ++ MPI_Type_create_struct(2, DtypelensRes, DtypeaddrRes, DtypesRes, &PP_QBlockRes); + MPI_Type_commit(&PP_QBlockRes); + + error = MPI_Recv(MPI_BOTTOM, 1, PP_QBlockRes, dest, PP_QUARTBLOCK, PP_Comm, &stat); +@@ -1637,8 +1637,8 @@ + Dtypelens[0] = (Numquartets + 1)/2; + } + +- MPI_Address(&(quartetinfo[0]), Dtypeaddr); +- MPI_Type_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_AllQuarts); ++ MPI_Get_address(&(quartetinfo[0]), Dtypeaddr); ++ MPI_Type_create_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_AllQuarts); + MPI_Type_commit(&PP_AllQuarts); + + for (dest=1; dest<PP_NumProcs; dest++) { +@@ -1686,8 +1686,8 @@ + Dtypelens[0] = (*Numquartets + 1)/2; + } + +- MPI_Address(&(quartetinfo[0]), Dtypeaddr); +- MPI_Type_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_AllQuarts); ++ MPI_Get_address(&(quartetinfo[0]), Dtypeaddr); ++ MPI_Type_create_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_AllQuarts); + MPI_Type_commit(&PP_AllQuarts); + + error = MPI_Recv(MPI_BOTTOM, 1, PP_AllQuarts, PP_MyMaster, PP_ALLQUARTS, PP_Comm, &stat); +@@ -1748,13 +1748,13 @@ + for (n=0; n<(int)blocksize; n++) { + Dtypes[n] = MPI_CHAR; + Dtypelens[n] = (taxa - 3) * taxa; +- MPI_Address(&(biparts[n][0][0]), &(Dtypeaddr[n])); ++ MPI_Get_address(&(biparts[n][0][0]), &(Dtypeaddr[n])); + } + pstptr = pstlist; + for (n=0; n<pstnum; n++) { + Dtypes[(int)blocksize + n] = MPI_CHAR; + Dtypelens[(int)blocksize + n] = psteptreestrlen; +- MPI_Address((*pstptr).tree, &(Dtypeaddr[(int)blocksize + n])); ++ MPI_Get_address((*pstptr).tree, &(Dtypeaddr[(int)blocksize + n])); + pstnumarr[n] = (*pstptr).count; + # ifdef PVERBOSE3 + fprintf(STDOUT, "(%2d) Sent tree item ->%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<pstlistnum; n++) { + pstarr[n] = (char *)calloc((size_t) psteptreestrlen, sizeof(char)); + Dtypes[(int)*blocksize + n] = MPI_CHAR; + Dtypelens[(int)*blocksize + n] = psteptreestrlen; +- MPI_Address(&(pstarr[n][0]), &(Dtypeaddr[(int)*blocksize + n])); ++ MPI_Get_address(&(pstarr[n][0]), &(Dtypeaddr[(int)*blocksize + n])); + } + + Dtypes[(int)*blocksize + pstlistnum] = MPI_INT; + Dtypelens[(int)*blocksize + pstlistnum] = pstlistnum; +- MPI_Address(&(pstnumarr[0]), &(Dtypeaddr[(int)*blocksize + pstlistnum])); ++ MPI_Get_address(&(pstnumarr[0]), &(Dtypeaddr[(int)*blocksize + pstlistnum])); + +- MPI_Type_struct(((int)*blocksize + pstlistnum + 1), Dtypelens, Dtypeaddr, Dtypes, &PP_Biparts); ++ MPI_Type_create_struct(((int)*blocksize + pstlistnum + 1), Dtypelens, Dtypeaddr, Dtypes, &PP_Biparts); + MPI_Type_commit(&PP_Biparts); + + error = MPI_Recv(MPI_BOTTOM, 1, PP_Biparts, dest, PP_PUZZLEBLOCK, PP_Comm, &stat); +@@ -2053,10 +2053,10 @@ + fprintf(STDOUT, "(%2d) ... Sent DONE Signal\n", PP_Myid); + # endif /* PVERBOSE3 */ + +- 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_Stats); ++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Stats); + MPI_Type_commit(&PP_Stats); + + doquartrecved[0] = 0; +@@ -2173,10 +2173,10 @@ + doubles[4] = tarr.cpu; + doubles[5] = tarr.time; + +- 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_Stats); ++ MPI_Type_create_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Stats); + MPI_Type_commit(&PP_Stats); + + error = MPI_Ssend(MPI_BOTTOM, 1, PP_Stats, PP_MyMaster, PP_STATS, PP_Comm); diff --git a/sci-biology/tree-puzzle/tree-puzzle-5.2.ebuild b/sci-biology/tree-puzzle/tree-puzzle-5.2.ebuild index 8e2a07f8183e..06fc28376ff5 100644 --- a/sci-biology/tree-puzzle/tree-puzzle-5.2.ebuild +++ b/sci-biology/tree-puzzle/tree-puzzle-5.2.ebuild @@ -1,7 +1,7 @@ -# Copyright 1999-2019 Gentoo Authors +# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=7 +EAPI=8 inherit toolchain-funcs @@ -18,14 +18,10 @@ RESTRICT="test" DEPEND="mpi? ( virtual/mpi )" RDEPEND="${DEPEND}" -PATCHES=( "${FILESDIR}"/${PN}-impl-dec.patch ) - -pkg_setup() { - use mpi && [[ $(tc-getCC) == icc* ]] && - die "The parallelized version of tree-puzzle cannot be compiled using icc. - Either disable the \"mpi\" USE flag to compile only the non-parallelized - version of the program, or use gcc as your compiler (CC=\"gcc\")." -} +PATCHES=( + "${FILESDIR}"/${PN}-impl-dec.patch + "${FILESDIR}"/${P}-MPI-3.0.patch +) src_configure() { default @@ -38,9 +34,14 @@ src_configure() { fi } +src_compile() { + # hopelessly terrible build system, abuses Automake + emake -j1 +} + src_install() { - dobin src/puzzle - use mpi && dobin src/ppuzzle + dobin src/puzzle $(usev mpi src/ppuzzle) + einstalldocs # User manual