The previous approach had the big downside of bypassing the specified variants through the specified dependencies of variants. E.g. dune+pdelab~functions would silently ignore the ~functions aspect, because +pdelab enforces the installation of dune-functions. There is no direct mechanism in Spack to specify such dependencies in a way that enforces the correct variants on dependent modules. I have now added conflicts between variants that reflect the Dune module dependencies. In that case dune+pdelab~functions would throw an error. This comes at the cost that a command such as spack install dune+pdelab is not possible anymore. Instead the user needs to specify the dependent modules as well: spack install dune+pdelab+functions+typetree Note that in order to remove some burden from users, I removed the variants for the core modules - they are always installed. |
||
---|---|---|
packages/dune | ||
.gitignore | ||
.gitlab-ci.yml | ||
Dockerfile | ||
README.md | ||
build_ci_images.sh | ||
repo.yaml |
README.md
DISCLAIMER
This repository is in early experimental stage. As soon as it is mature, this disclaimer will be removed and the project will be publicly announced through the mailing list. Until then, you are invited to try this and report your experiences, but you might experience some problems.
Dune Spack repository
Installation
Clone spack git
git clone https://github.com/spack/spack.git
source ./share/spack/setup-env.sh
spack bootstrap
add dune spack repo
cd $HOME
git clone https://github.com/gauthier12/dune_spack_repo.git
spack repo add dune_spack_repo
Install dune with desired modules
spack install dune+desired+modules+.....
by example
spack install dune+uggrid+grid+functions
modules dependencies wil be automatically downloaded and added
Use
To use dune, load the module
source /PATH/TO/SPACK/share/spack/setup-env.sh
spack load dune
if python module was installed, python bindings are avalaible after loading the module
Build a new module
Load the dune module
source /PATH/TO/SPACK/share/spack/setup-env.sh
spack load dune
Initialize dune project
duneproject
Answer the questions about the new modules, enter the project folder and compile with standard cmake
mkdir build
cd build
cmake ..
cmake --build .