From da2d893e324fcdd4ab9e3ccdd62d7aab520da3b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 29 Jul 2016 19:48:23 +0200 Subject: [PATCH] size: Fix corner case with multiple items on the command line. Fixes 'guix size foo bar' when 'foo' is in the local store and 'bar' isn't, which could lead to an incomplete requisite list. * guix/scripts/size.scm (requisites*): Partition ITEMS according to 'valid-path?'. Use 'substitutable-requisites' only on invalid items. --- guix/scripts/size.scm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/guix/scripts/size.scm b/guix/scripts/size.scm index f28832ce90aed07363b5822afe279cae9fb9e718..ea259f37585fc7146b8839dd4c5e5fbab52ed641 100644 --- a/guix/scripts/size.scm +++ b/guix/scripts/size.scm @@ -29,6 +29,7 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) #:use-module (srfi srfi-11) + #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-37) #:use-module (ice-9 match) @@ -119,10 +120,12 @@ substitutes." information available in the local store or using information about substitutes." (lambda (store) - (guard (c ((nix-protocol-error? c) - (values (substitutable-requisites store items) - store))) - (values (requisites store items) store)))) + (let-values (((local missing) + (partition (cut valid-path? store <>) items))) + (values (delete-duplicates + (append (requisites store local) + (substitutable-requisites store missing))) + store)))) (define (store-profile items) "Return as a monadic value a list of objects representing the