derivations: Improve complexity of 'substitution-oracle'.

* guix/derivations.scm (substitution-oracle): Use a final 'concatenate'
  instead of repeated 'append's.
This commit is contained in:
Ludovic Courtès 2015-07-22 18:31:51 +02:00
parent 1bd4e6db15
commit b59df2434a

View file

@ -264,16 +264,16 @@ (define (dependencies drv)
(derivation-prerequisites drv valid-input?)))
(let* ((paths (delete-duplicates
(fold (lambda (drv result)
(let ((self (match (derivation->output-paths drv)
(((names . paths) ...)
paths))))
(if (every valid? self)
result
(append (append self (dependencies drv))
result))))
'()
drv)))
(concatenate
(fold (lambda (drv result)
(let ((self (match (derivation->output-paths drv)
(((names . paths) ...)
paths))))
(if (every valid? self)
result
(cons* self (dependencies drv) result))))
'()
drv))))
(subst (list->set (substitutable-paths store paths))))
(cut set-contains? subst <>)))