summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-04-16 11:42:18 +0200
committerLudovic Courtès <ludo@gnu.org>2019-04-16 17:30:21 +0200
commite856177597b5a7f1b75bb4083ad1e0b50323c82e (patch)
treee80f3a252ec1fdf195b7f51bd7457e508bfe3aaa
parent3961edf2304bcff4c402a29868f8c559a03c0663 (diff)
downloadguix-e856177597b5a7f1b75bb4083ad1e0b50323c82e.tar.gz
derivations: Reduce 'valid-path?' RPCs in 'derivation-prerequisites-to-build'.
On a profile with 280 packages, this reduces the number of
'valid-paths?' RPCs made by 'guix package -nu' from 6K to 500.

* guix/derivations.scm (derivation-prerequisites-to-build)[built?]:
Memoize 'valid-path?' calls.
-rw-r--r--guix/derivations.scm5
1 files changed, 3 insertions, 2 deletions
diff --git a/guix/derivations.scm b/guix/derivations.scm
index fb2fa177be..7a5c3bca94 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -344,7 +344,8 @@ OUTPUTS of DRV and not already available in STORE, recursively, and the list
 of required store paths that can be substituted.  SUBSTITUTABLE-INFO must be a
 one-argument procedure similar to that returned by 'substitution-oracle'."
   (define built?
-    (cut valid-path? store <>))
+    (mlambda (item)
+      (valid-path? store item)))
 
   (define input-built?
     (compose (cut any built? <>) derivation-input-output-paths))