summaryrefslogtreecommitdiff
path: root/guix/grafts.scm
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2020-03-30 12:17:33 +0200
committerMarius Bakke <mbakke@fastmail.com>2020-03-30 12:17:33 +0200
commitae0badf5bb791428423a98d4e4e2b8d297a5d4be (patch)
tree4282d243db3e90839a5f7d3b5878674ccd0e2e14 /guix/grafts.scm
parentee401ed9249fbe284ef1b9b437d39207ca88131b (diff)
parent927f3655662b41f25225ea03baa3ded687aa7cbb (diff)
Merge branch 'master' into core-updates
Conflicts: gnu/packages/admin.scm gnu/packages/commencement.scm gnu/packages/guile.scm gnu/packages/linux.scm gnu/packages/package-management.scm gnu/packages/pulseaudio.scm gnu/packages/web.scm
Diffstat (limited to 'guix/grafts.scm')
-rw-r--r--guix/grafts.scm20
1 files changed, 6 insertions, 14 deletions
diff --git a/guix/grafts.scm b/guix/grafts.scm
index adc7bfafae..5173a77e58 100644
--- a/guix/grafts.scm
+++ b/guix/grafts.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -166,22 +166,14 @@ references. Call REFERENCES to get the list of references."
(define (references-oracle store input)
"Return a one-argument procedure that, when passed the output file names of
INPUT, a derivation input, or their dependencies, returns the list of
-references of that item. Use either local info or substitute info; build
-INPUT if no information is available."
+references of that item. Build INPUT if it's not available."
(define (references* items)
+ ;; Return the references of ITEMS.
(guard (c ((store-protocol-error? c)
- ;; As a last resort, build DRV and query the references of the
- ;; build result.
-
- ;; Warm up the narinfo cache, otherwise each derivation build
- ;; will result in one HTTP request to get one narinfo, which is
- ;; much less efficient than fetching them all upfront.
- (substitution-oracle store
- (list (derivation-input-derivation input)))
-
+ ;; ITEMS are not in store so build INPUT first.
(and (build-derivations store (list input))
- (map (cut references store <>) items))))
- (references/substitutes store items)))
+ (map (cut references/cached store <>) items))))
+ (map (cut references/cached store <>) items)))
(let loop ((items (derivation-input-output-paths input))
(result vlist-null))