Subject: Re: bug#28445: match-error in 'device-sexp->device' while building system

From: [email-masked] (Ludovic Courtès)
Date: Sun, 17 Sep 2017 21:51:18 +0200

Hello,

Apologies for not chiming in earlier!

Mark H Weaver <[email-masked]> skribis:

> At least for some transition period, it would be good to find a way to
> cope with (store (device #f)) in some older system generations.
>
> What do you think?

I think the patch below, which is Marius’ patch + adjusts
‘read-boot-parameters’ to cope with #f store-device, should solve the
issue.

Could you check if it works for you?

Thanks, and sorry for the delay!

Ludo’.

diff --git a/gnu/system.scm b/gnu/system.scm
index c4404f593..528527ba9 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -278,6 +278,8 @@ directly by the user."
 
       (store-device
        (match (assq 'store rest)
+         (('store ('device #f) _ ...)
+          root-device)
          (('store ('device device) _ ...)
           (device-sexp->device device))
          (_                                       ;the old format
@@ -902,6 +904,7 @@ device in a <menu-entry>."
   (case (file-system-title fs)
     ((uuid) (file-system-device fs))
     ((label) (file-system-device fs))
+    ((device) (file-system-device fs))
     (else #f)))
 
 (define (operating-system-boot-parameters os system.drv root-device)