summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/dune-istl-2.7-fix-non-mpi-tests.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/dune-istl-2.7-fix-non-mpi-tests.patch')
-rw-r--r--gnu/packages/patches/dune-istl-2.7-fix-non-mpi-tests.patch82
1 files changed, 82 insertions, 0 deletions
diff --git a/gnu/packages/patches/dune-istl-2.7-fix-non-mpi-tests.patch b/gnu/packages/patches/dune-istl-2.7-fix-non-mpi-tests.patch
new file mode 100644
index 0000000000..ee2bb8f676
--- /dev/null
+++ b/gnu/packages/patches/dune-istl-2.7-fix-non-mpi-tests.patch
@@ -0,0 +1,82 @@
+Fix build of dune-istl's tests
+
+Patch copied from upstream source repository:
+
+https://gitlab.dune-project.org/core/dune-istl/-/commit/9eee3462df5a64881c08574f9291e76db398de0a
+
+From 9eee3462df5a64881c08574f9291e76db398de0a Mon Sep 17 00:00:00 2001
+From: Felix Gruber <felgru@posteo.net>
+Date: Sat, 4 Apr 2020 15:27:09 +0200
+Subject: [PATCH] make tests succeed when MPI is disabled
+
+When MPI is not available or explicitly disabled with the CMake build
+option -DCMAKE_IDSABLE_FIND_PACKAGE_MPI=TRUE, some tests were unable to
+build.
+
+The tests created from solverfactorytest.cc.in and part of
+scalarproductstest.cc use Dune::OwnerOverlapCopyCommunication which is
+defined behind `#if HAVE_MPI` and is thus not available in a non-MPI
+build. I've thus disabled those tests when MPI is unavailable.
+
+The matrixmarkettest did not work without MPI, as it contained some code
+using the wrong template parameters when HAVE_MPI was not set. Those
+template paramters have been fixed now.
+
+I've confirmed, that after my changes `make build_tests` succeeds to
+build all tests and that those tests run without failure.
+---
+ dune/istl/test/CMakeLists.txt | 3 ++-
+ dune/istl/test/matrixmarkettest.cc | 2 +-
+ dune/istl/test/scalarproductstest.cc | 2 ++
+ 3 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/dune/istl/test/CMakeLists.txt b/dune/istl/test/CMakeLists.txt
+index ffd87969..2c7b2387 100644
+--- a/dune/istl/test/CMakeLists.txt
++++ b/dune/istl/test/CMakeLists.txt
+@@ -77,7 +77,8 @@ set(DUNE_TEST_FACTORY_BLOCK_SIZES
+ function(add_factory_test BLOCK)
+ STRING(REGEX REPLACE "[^a-zA-Z0-9]" "" BLOCK_CLEAN ${BLOCK})
+ configure_file(solverfactorytest.cc.in solverfactorytest_${BLOCK_CLEAN}.cc)
+- dune_add_test(SOURCES ${CMAKE_CURRENT_BINARY_DIR}/solverfactorytest_${BLOCK_CLEAN}.cc)
++ dune_add_test(SOURCES ${CMAKE_CURRENT_BINARY_DIR}/solverfactorytest_${BLOCK_CLEAN}.cc
++ CMAKE_GUARD HAVE_MPI)
+ endfunction(add_factory_test)
+
+ foreach(FIELD_TYPE ${DUNE_TEST_FACTORY_FIELD_TYPES})
+diff --git a/dune/istl/test/matrixmarkettest.cc b/dune/istl/test/matrixmarkettest.cc
+index b335afe6..ce30e8ae 100644
+--- a/dune/istl/test/matrixmarkettest.cc
++++ b/dune/istl/test/matrixmarkettest.cc
+@@ -52,7 +52,7 @@ int testMatrixMarket(int N)
+ storeMatrixMarket(mat, std::string("testmat"), comm);
+ storeMatrixMarket(bv, std::string("testvec"), comm, false);
+ #else
+- typedef Dune::MatrixAdapter<BCRSMat,BVector,BVector> Operator;
++ typedef Dune::MatrixAdapter<Matrix,Vector,Vector> Operator;
+ Operator op(mat);
+ op.apply(bv, cv);
+
+diff --git a/dune/istl/test/scalarproductstest.cc b/dune/istl/test/scalarproductstest.cc
+index 452b1d89..f46ce2a9 100644
+--- a/dune/istl/test/scalarproductstest.cc
++++ b/dune/istl/test/scalarproductstest.cc
+@@ -115,6 +115,7 @@ int main(int argc, char** argv)
+ scalarProductTest<ScalarProduct, Vector>(scalarProduct,numBlocks);
+ }
+
++#if HAVE_MPI
+ // Test the ParallelScalarProduct class
+ {
+ using Vector = BlockVector<FieldVector<double,BlockSize> >;
+@@ -139,6 +140,7 @@ int main(int argc, char** argv)
+ ScalarProduct scalarProduct(communicator,SolverCategory::nonoverlapping);
+ scalarProductTest<ScalarProduct, Vector>(scalarProduct,numBlocks);
+ }
++#endif
+
+ return t.exit();
+ }
+--
+2.25.1
+