~ruther/guix-local

b59df2434aafb8604df38662be1b428bd19b80d6 — Ludovic Courtès 10 years ago 1bd4e6d
derivations: Improve complexity of 'substitution-oracle'.

* guix/derivations.scm (substitution-oracle): Use a final 'concatenate'
  instead of repeated 'append's.
1 files changed, 10 insertions(+), 10 deletions(-)

M guix/derivations.scm
M guix/derivations.scm => guix/derivations.scm +10 -10
@@ 264,16 264,16 @@ substituter many times."
                (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 <>)))