gnu: petsc: Build reproducibly.

* gnu/packages/maths.scm (petsc)[arguments]: In ‘configure’ phase, add
‘sorted’ call in ‘gmakegen.py’.
In ‘clean-local-references’, remove substitution of “Libraries compiled
on”, which is unnecessary since  PETSc 3.9
(<a970bd7489>).
Add substitution for “Machine characteristics” bit.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Change-Id: Ibb846c1ae368af94b46d5ce789b1263e0bc78a13
This commit is contained in:
Lars Bilke 2024-07-26 18:15:16 +02:00 committed by Ludovic Courtès
parent 4c8997c123
commit 31fe177a97
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -3545,6 +3545,11 @@ (define-public petsc
(let* ((prefix (assoc-ref outputs "out"))
(flags `(,(string-append "--prefix=" prefix)
,@configure-flags)))
;; Sort source files in configure (for reproducibility).
(substitute* "config/gmakegen.py"
(("join\\(srcs\\[lang\\]\\)")
"join(sorted(srcs[lang]))"))
(format #t "build directory: ~s~%" (getcwd))
(format #t "configure flags: ~s~%" flags)
(apply invoke "./configure" flags)
@ -3559,8 +3564,8 @@ (define-public petsc
(substitute* (find-files "." "^petsc(conf|machineinfo).h$")
;; Prevent build directory from leaking into compiled code
(((getcwd)) out)
;; Scrub timestamp for reproducibility
((".*Libraries compiled on.*") ""))
(("Machine characteristics: Linux-[0-9]+\\.[0-9]+\\.[0-9]+")
"Machine characteristics: Linux-x.x.x"))
(substitute* (find-files "." "petscvariables")
;; Do not expose build machine characteristics, set to defaults.
(("MAKE_NP = [:digit:]+") "MAKE_NP = 2")