hydra: Invalidate derivation caches after each architecture evaluation.
This reduces max RSS from 1.3G to 1.0G. * guix/derivations.scm (invalidate-derivation-caches!): New procedure. * build-aux/hydra/gnu-system.scm (hydra-jobs): Use it. Add 'format' call.
This commit is contained in:
parent
d1f01e4845
commit
34797d8afc
|
@ -334,6 +334,13 @@ valid."
|
||||||
(parameterize ((%graft? #f))
|
(parameterize ((%graft? #f))
|
||||||
;; Return one job for each package, except bootstrap packages.
|
;; Return one job for each package, except bootstrap packages.
|
||||||
(append-map (lambda (system)
|
(append-map (lambda (system)
|
||||||
|
(format (current-error-port)
|
||||||
|
"evaluating for '~a' (heap size: ~a MiB)...~%"
|
||||||
|
system
|
||||||
|
(round
|
||||||
|
(/ (assoc-ref (gc-stats) 'heap-size)
|
||||||
|
(expt 2. 20))))
|
||||||
|
(invalidate-derivation-caches!)
|
||||||
(case subset
|
(case subset
|
||||||
((all)
|
((all)
|
||||||
;; Build everything, including replacements.
|
;; Build everything, including replacements.
|
||||||
|
|
|
@ -90,6 +90,7 @@
|
||||||
derivation-path->output-paths
|
derivation-path->output-paths
|
||||||
derivation
|
derivation
|
||||||
raw-derivation
|
raw-derivation
|
||||||
|
invalidate-derivation-caches!
|
||||||
|
|
||||||
map-derivation
|
map-derivation
|
||||||
|
|
||||||
|
@ -841,6 +842,15 @@ output should not be used."
|
||||||
(hash-set! %derivation-cache file drv*)
|
(hash-set! %derivation-cache file drv*)
|
||||||
drv*)))
|
drv*)))
|
||||||
|
|
||||||
|
(define (invalidate-derivation-caches!)
|
||||||
|
"Invalidate internal derivation caches. This is mostly useful for
|
||||||
|
long-running processes that know what they're doing. Use with care!"
|
||||||
|
;; Typically this is meant to be used by Cuirass and Hydra, which can clear
|
||||||
|
;; caches when they start evaluating packages for another architecture.
|
||||||
|
(invalidate-memoization! derivation->bytevector)
|
||||||
|
(invalidate-memoization! derivation-path->base16-hash)
|
||||||
|
(hash-clear! %derivation-cache))
|
||||||
|
|
||||||
(define* (map-derivation store drv mapping
|
(define* (map-derivation store drv mapping
|
||||||
#:key (system (%current-system)))
|
#:key (system (%current-system)))
|
||||||
"Given MAPPING, a list of pairs of derivations, return a derivation based on
|
"Given MAPPING, a list of pairs of derivations, return a derivation based on
|
||||||
|
|
Loading…
Reference in New Issue