Skip to content

Introducing reproducable builds with guix

Lars Bilke requested to merge bilke/ogs:helper-repo into master

This MR introduces building ogs as a GNU Guix package.

Guix is a Linux-only package manager with a strong focus on reproducibility. It is claimed that specific builds (guix uses a defined state (via git commit hashes) for a build) can be reproduced bit-by-bit even on different systems (haven't checked yet if that's the case for the ogs package). Other interesting features of guix:

  • Easily tune the build (-march-flags) for specific architectures. Tested core2 vs znver3 (envinf3): around 15 % improvement in SteadyStateDiffusion_square_1x1_Neumann_1e6.
  • Portable MPI builds.
  • Builds can be easily packaged as portable binaries or Singularity or Docker container. I have e.g. tested an ogs petsc build packaged as a singularity container running a parallel simulation on UFZs Eve.
  • Cross-compile to other architecture.

Future steps:

  • Get the ogs guix package into the official guix repo
  • Test redistributable builds on different (HPC) platforms
  1. Feature description was added to the changelog
  2. Tests covering your feature were added?
  3. [ ] Any new feature or behavior change was documented?
Edited by Lars Bilke

Merge request reports