diff options
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r-- | gnu/packages/patches/dune-istl-2.7-fix-non-mpi-tests.patch | 82 |
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 + |