commit:     71634c39d291459439fadb16adfb9506278d2835
Author:     Matthias Maier <tamiko <AT> gentoo <DOT> org>
AuthorDate: Fri Feb 16 00:55:22 2024 +0000
Commit:     Matthias Maier <tamiko <AT> gentoo <DOT> org>
CommitDate: Fri Feb 16 00:59:14 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=71634c39

sci-libs/dealii: add 9.4.2, drop 9.4.1-r1

 - apply mpich fix

Bug: https://bugs.gentoo.org/920556
Signed-off-by: Matthias Maier <tamiko <AT> gentoo.org>

 sci-libs/dealii/Manifest                           |  4 +-
 ...{dealii-9.4.1-r1.ebuild => dealii-9.4.2.ebuild} |  7 ++-
 ...-remove-superfluous-explicit-instantiatio.patch | 59 ++++++++++++++++++++++
 ...mark-a-template-variable-to-have-const-in.patch | 28 ++++++++++
 4 files changed, 94 insertions(+), 4 deletions(-)

diff --git a/sci-libs/dealii/Manifest b/sci-libs/dealii/Manifest
index 3ac62d91cec5..060460e46f39 100644
--- a/sci-libs/dealii/Manifest
+++ b/sci-libs/dealii/Manifest
@@ -1,7 +1,7 @@
 DIST dealii-9.4.1-offline_documentation.tar.gz 392007419 BLAKE2B 
81404b02ba7dc97a0314f52fa9d775183981864288f4ab4ca81b550a1763d90cb5b04b32c056008ad60a7829b929c78edd80cbeeeb861e4ef638780c13d80aa7
 SHA512 
9bbaf6e9a478ac643e87f2f07918c8a5216e17b0ddaeba4beb2acde9ea54833e2f0e7d11f61b2cac8b986e442dbb181317b53e1a40a807e7c098167bfd073266
 DIST dealii-9.4.1-offline_documentation.tar.gz.asc 246 BLAKE2B 
9ace22c9b174e642cd3fba94c165d816c62814f892f5f6f272efa0301613dc55251152825e726fc6cf7e89bbfb7fa3552ec58ad426a7d58a74ecb89b9072f742
 SHA512 
50b43dd34a0687395f516f4910581df71054fa8be3c98006566ea649d0af866d38c9793da548ba6bdb7a9fec452dfb6d928d336aace943522d7c3f854209b81b
-DIST dealii-9.4.1.tar.gz 30298204 BLAKE2B 
499f542c7a7f071d04048127199c7bebf5668b6e8d13fc2701dd18e28165442e58112ee9e4926e16a592bffdd5d7b7c240eea55808e5f9c021961f7e44b7da79
 SHA512 
39089aff462d3ff4244ce75f74a4cd908f8f72a81dcc3fb02ca91b3cad2442ceb78677e72cd928b36a04d352c4baa146a25fa5e14c886ca9e2bad0be0069f7b8
-DIST dealii-9.4.1.tar.gz.asc 246 BLAKE2B 
dbb1dc7b3e8a97f29287f154d11cd3db2566fdc4c7667fa57e686e2feba33f2115546408365f0e8f490ba593cb582b12489de373da3e33e8702b6e16804c7ebf
 SHA512 
eb987d34f19b59d523d79f3c2c99f5f3125b1d0c71af0eb32b77ad5959d6197b79f1971a8a79dbc52bab698335dcb6091aac88c51d845a1e07d3681c089754c7
+DIST dealii-9.4.2.tar.gz 30298479 BLAKE2B 
bff5dd5a1b5458dd6e295b87cee9d24626ffce0b4c6a3329f190739d8fc67d34f11f0218dbbcd69dcf2e031e3e9f04cd1f2d0768d2fad32198bf1360d132a686
 SHA512 
6f6f032f6eef73421b53576e01f40bef0b4ce3d89583a016d057f8ec023c1f925a5c245991fd4639f9e73c4852d5cfd36da92258251a56179a98cd4a612cac9f
+DIST dealii-9.4.2.tar.gz.asc 246 BLAKE2B 
b61a8e3e496ba34c87fe453fbcec9fd0fb0d59f8d7123f38352c65c81b3d0ea706a4f645444970857a9fd67a26a984fc5adcfe8ed6c43eae5656bba6dd3bed9e
 SHA512 
b11a79da7eeaababf7ec2c2264b41d0a5df9fd2f870829c535f888f0f8c07a6765920e023fd9d74f24a5a4744bd8d68a6db1669e449ed1a81757ee6c3c60b873
 DIST dealii-9.5.0-offline_documentation.tar.gz 412499027 BLAKE2B 
521aa2488d84d48a624f4cbdbe9c173d0cdcee2df8d06b97b7c25ba28d4a2113a7da9fd9abd9eb64cd56b37f8edc716bd034fc3ba8823f8b1def26c34aaeeb55
 SHA512 
2e0d331f92d52b0fd909a0139157a1960a9222d46d537611f0508cdb79020a8e51ff0da6aefdf95adff732cea050b72df7dc1a8af7e93c736721970218815cfe
 DIST dealii-9.5.0-offline_documentation.tar.gz.asc 246 BLAKE2B 
0a570885e80ad09ff154532b71c07e33894e93c96b3bca48dc8aae0b308883518cbb5eca57658c4e13de47efba47c3cb20bf376482ef7a26c6c0da93ee4dd689
 SHA512 
b63a9a0504fe5266b448ffda74e1d85ad5b6f344535c5b5f11d209546b51bb916ad69504ce5e4f1fd2287407c2d3d98a20b01bd830e8d45f510a85b7a057a8d5
 DIST dealii-9.5.1.tar.gz 31522808 BLAKE2B 
99db2beafb949364869fc7f06f78bf921b0d99c69de57da40115b0eb939e1c9a40dcbf40a186a988189ea92a6e1295da4969fd33a7e4738b27813ff1842cb99a
 SHA512 
7ba4e4751417a7916cb059379b3b70afcaa5f62786e92ac7332b6f55cbcfcb25df15de2a6071cc33444c911f104e576f8792ea4ac4e6702186e5740c7c909d72

diff --git a/sci-libs/dealii/dealii-9.4.1-r1.ebuild 
b/sci-libs/dealii/dealii-9.4.2.ebuild
similarity index 94%
rename from sci-libs/dealii/dealii-9.4.1-r1.ebuild
rename to sci-libs/dealii/dealii-9.4.2.ebuild
index e85fd0205e74..fd2fc4b43f39 100644
--- a/sci-libs/dealii/dealii-9.4.1-r1.ebuild
+++ b/sci-libs/dealii/dealii-9.4.2.ebuild
@@ -18,11 +18,12 @@ if [[ ${PV} = *9999* ]]; then
        EGIT_REPO_URI="https://github.com/dealii/dealii.git";
        SRC_URI=""
 else
+       DOC_PV=9.4.1
        
SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.gz
                verify-sig? ( 
https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.gz.asc )
                doc? (
-                       
https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}-offline_documentation.tar.gz
-                       verify-sig? ( 
https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}-offline_documentation.tar.gz.asc
 )
+                       
https://github.com/${PN}/${PN}/releases/download/v${DOC_PV}/${PN}-${DOC_PV}-offline_documentation.tar.gz
+                       verify-sig? ( 
https://github.com/${PN}/${PN}/releases/download/v${DOC_PV}/${PN}-${DOC_PV}-offline_documentation.tar.gz.asc
 )
                        )"
        KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
 fi
@@ -82,6 +83,8 @@ BDEPEND="
 
 PATCHES=(
        "${FILESDIR}"/${PN}-9.1.1-no-ld-flags.patch
+       
"${FILESDIR}"/${PN}-9.4.2-base-mpi.cc-remove-superfluous-explicit-instantiatio.patch
+       
"${FILESDIR}"/${PN}-9.4.2-base-mpi.h-mark-a-template-variable-to-have-const-in.patch
 )
 
 VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/dealii.asc"

diff --git 
a/sci-libs/dealii/files/dealii-9.4.2-base-mpi.cc-remove-superfluous-explicit-instantiatio.patch
 
b/sci-libs/dealii/files/dealii-9.4.2-base-mpi.cc-remove-superfluous-explicit-instantiatio.patch
new file mode 100644
index 000000000000..85a78c4c1326
--- /dev/null
+++ 
b/sci-libs/dealii/files/dealii-9.4.2-base-mpi.cc-remove-superfluous-explicit-instantiatio.patch
@@ -0,0 +1,59 @@
+From aafc2c19dfd3ebc43e37ba3f13eda5f790376b1c Mon Sep 17 00:00:00 2001
+From: Matthias Maier <tam...@43-1.org>
+Date: Thu, 15 Feb 2024 15:54:36 -0600
+Subject: [PATCH 1/2] base/mpi.cc: remove superfluous explicit instantiations
+ of template variable
+
+The `mpi.h` header already contains:
+```
+template <typename T>
+const MPI_Datatype mpi_type_id_for_type = /* implementation detail */;
+```
+Meaning, the variable is known fully after including the header.
+Furthermore, the `const` qualifier marks the (template) variable as
+`static`. I.e., it has internal linkage.
+
+Thus, we must not explicitly instantiate the variables (suggesting
+"extern" linkage in all but the `mpi.cc` compilation unit). This
+apparently not an issue with OpenMPI because `MPI_Datatype` is a
+complex data structure. But it is an issue with mpich where
+`MPI_Datatype` is a simple `int` - leading to a segmentation fault when
+during program startup.
+---
+ source/base/mpi.cc | 20 --------------------
+ 1 file changed, 20 deletions(-)
+
+diff --git a/source/base/mpi.cc b/source/base/mpi.cc
+index dab88e2b97..f845845764 100644
+--- a/source/base/mpi.cc
++++ b/source/base/mpi.cc
+@@ -100,26 +100,6 @@ namespace Utilities
+ 
+   namespace MPI
+   {
+-#ifdef DEAL_II_WITH_MPI
+-    // Provide definitions of template variables for all valid instantiations.
+-    template const MPI_Datatype mpi_type_id_for_type<bool>;
+-    template const MPI_Datatype mpi_type_id_for_type<char>;
+-    template const MPI_Datatype mpi_type_id_for_type<signed char>;
+-    template const MPI_Datatype mpi_type_id_for_type<short>;
+-    template const MPI_Datatype mpi_type_id_for_type<int>;
+-    template const MPI_Datatype mpi_type_id_for_type<long int>;
+-    template const MPI_Datatype mpi_type_id_for_type<unsigned char>;
+-    template const MPI_Datatype mpi_type_id_for_type<unsigned short>;
+-    template const MPI_Datatype mpi_type_id_for_type<unsigned long int>;
+-    template const MPI_Datatype mpi_type_id_for_type<unsigned long long int>;
+-    template const MPI_Datatype mpi_type_id_for_type<float>;
+-    template const MPI_Datatype mpi_type_id_for_type<double>;
+-    template const MPI_Datatype mpi_type_id_for_type<long double>;
+-    template const MPI_Datatype mpi_type_id_for_type<std::complex<float>>;
+-    template const MPI_Datatype mpi_type_id_for_type<std::complex<double>>;
+-#endif
+-
+-
+     MinMaxAvg
+     min_max_avg(const double my_value, const MPI_Comm mpi_communicator)
+     {
+-- 
+2.43.0
+

diff --git 
a/sci-libs/dealii/files/dealii-9.4.2-base-mpi.h-mark-a-template-variable-to-have-const-in.patch
 
b/sci-libs/dealii/files/dealii-9.4.2-base-mpi.h-mark-a-template-variable-to-have-const-in.patch
new file mode 100644
index 000000000000..032b12237bd2
--- /dev/null
+++ 
b/sci-libs/dealii/files/dealii-9.4.2-base-mpi.h-mark-a-template-variable-to-have-const-in.patch
@@ -0,0 +1,28 @@
+From 2ef67e3896a2a7d0ba93539cf79310384470fc91 Mon Sep 17 00:00:00 2001
+From: Matthias Maier <tam...@43-1.org>
+Date: Thu, 15 Feb 2024 16:03:22 -0600
+Subject: [PATCH 2/2] base/mpi.h: mark a template variable to have "const
+ inline" linkage.
+
+---
+ include/deal.II/base/mpi.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/deal.II/base/mpi.h b/include/deal.II/base/mpi.h
+index b77fd3e7c8..8ee55fbe41 100644
+--- a/include/deal.II/base/mpi.h
++++ b/include/deal.II/base/mpi.h
+@@ -1728,8 +1728,8 @@ namespace Utilities
+      * not satisfied.
+      */
+     template <typename T>
+-    const MPI_Datatype
+-      mpi_type_id_for_type = internal::MPIDataTypes::mpi_type_id(
++    inline const MPI_Datatype mpi_type_id_for_type =
++      internal::MPIDataTypes::mpi_type_id(
+         static_cast<std::remove_cv_t<std::remove_reference_t<T>> *>(nullptr));
+ #endif
+ 
+-- 
+2.43.0
+

Reply via email to