From 710854304b1ab29332edcb76f3de532e0724c197 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 25 Mar 2020 14:46:34 +0100 Subject: grafts: Don't rely on substitute info for missing store items. Fixes . * guix/grafts.scm (references-oracle)[references*]: Remove call to 'substitution-oracle' and to 'references/substitutes'. Use 'references/cached' and 'build-derivations' right away instead. --- guix/grafts.scm | 20 ++++++-------------- 1 file 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 +;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; ;;; 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)) -- cgit v1.2.3