* gnu/packages/maths.scm (dune-*): Update to version 2.7. (dune-uggrid)[source] Download from Git, as no release tarball for version 2.7 exists. (dune-alugrid,dune-subgrid,dune-pdelab)[source] Use commit hashes as no tags for version 2.7 exist (yet?). (dune-istl)[source](patches) Add patch required to build version 2.7 without openmpi. * gnu/packages/patches/dune-istl-2.7-fix-non-mpi-tests.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
		
			
				
	
	
		
			82 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| 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
 | |
| 
 |