* bug#28445: match-error in 'device-sexp->device' while building system @ 2017-09-13 14:41 Mark H Weaver 2017-09-13 15:37 ` Marius Bakke 2017-09-13 18:32 ` Mark H Weaver 0 siblings, 2 replies; 12+ messages in thread From: Mark H Weaver @ 2017-09-13 14:41 UTC (permalink / raw) To: 28445 I just started getting this error while trying to build my x86_64 GuixSD system: --8<---------------cut here---------------start------------->8--- mhw@jojen ~$ guix system build -K /etc/config-new.scm Backtrace: 14 (primitive-load "/home/mhw/guix/scripts/guix") In guix/ui.scm: 1331:12 13 (run-guix-command _ . _) In ice-9/boot-9.scm: 837:9 12 (catch _ _ #<procedure 7f67b07988c0 at guix/ui.scm:448…> …) 837:9 11 (catch _ _ #<procedure 7f67b07988d8 at guix/ui.scm:536…> …) In guix/scripts/system.scm: 1025:8 10 (_) 908:6 9 (process-action _ _ _) In guix/store.scm: 1443:24 8 (run-with-store _ _ #:guile-for-build _ #:system _ # _) In guix/scripts/system.scm: 661:31 7 (_ _) In srfi/srfi-1.scm: 705:23 6 (filter-map #<procedure system->boot-parameters (sys…> . #) In ice-9/boot-9.scm: 837:9 5 (catch system-error #<procedure 640e660 at guix/script…> …) In guix/scripts/system.scm: 385:30 4 (_) In gnu/system.scm: 307:17 3 (read-boot-parameters-file "/var/guix/profiles/system-9…") In ice-9/ports.scm: 444:17 2 (call-with-input-file _ _ #:binary _ #:encoding _ # _) In gnu/system.scm: 282:10 1 (read-boot-parameters _) 238:4 0 (device-sexp->device _) gnu/system.scm:238:4: In procedure device-sexp->device: gnu/system.scm:238:4: Throw to key `match-error' with args `("match" "no matching pattern" #f)'. --8<---------------cut here---------------end--------------->8--- I'm on commit 01ef804d69b2e57dd7b1d3d13e66e3f67e7c548a plus some local patches that are likely not relevant to this issue. Here's my config file /etc/config-new.scm: --8<---------------cut here---------------start------------->8--- ;; This is an operating system configuration template ;; for a "desktop" setup with GNOME and Xfce where the ;; root partition is encrypted with LUKS. (use-modules (gnu) (gnu system nss) (srfi srfi-1) (guix packages)) (use-service-modules base desktop networking xorg dbus) (use-package-modules certs gnome cryptsetup linux admin guile firmware xdisorg libusb) (define keymap (plain-file "keymap" "keymaps 0-255 keycode 42 = Shift keycode 54 = Shift keycode 29 = Control keycode 58 = Control keycode 56 = Alt keycode 100 = Alt alt shift keycode 1 = Meta_Escape alt shift keycode 2 = Meta_exclam alt shift keycode 3 = Meta_at alt shift keycode 4 = Meta_numbersign alt shift keycode 5 = Meta_dollar alt shift keycode 6 = Meta_percent alt shift keycode 7 = Meta_asciicircum shift control keycode 7 = Control_asciicircum control alt keycode 7 = Meta_Control_asciicircum shift control alt keycode 7 = Meta_Control_asciicircum alt shift keycode 8 = Meta_ampersand alt shift keycode 9 = Meta_asterisk alt shift keycode 10 = Meta_parenleft alt shift keycode 11 = Meta_parenright alt shift keycode 12 = Meta_underscore shift control keycode 12 = Control_underscore control alt keycode 12 = Meta_Control_underscore shift control alt keycode 12 = Meta_Control_underscore alt shift keycode 13 = Meta_plus alt shift keycode 14 = Meta_Delete alt shift keycode 15 = Meta_Tab alt shift keycode 16 = Meta_Q alt shift keycode 17 = Meta_W alt shift keycode 18 = Meta_E alt shift keycode 19 = Meta_R alt shift keycode 20 = Meta_T alt shift keycode 21 = Meta_Y alt shift keycode 22 = Meta_U alt shift keycode 23 = Meta_I alt shift keycode 24 = Meta_O alt shift keycode 25 = Meta_P alt shift keycode 26 = Meta_braceleft control alt keycode 26 = Meta_Escape alt shift keycode 27 = Meta_braceright control alt keycode 27 = Meta_Control_bracketright alt shift keycode 28 = Meta_Return alt shift keycode 29 = Meta_Control alt shift keycode 30 = Meta_A alt shift keycode 31 = Meta_S alt shift keycode 32 = Meta_D alt shift keycode 33 = Meta_F alt shift keycode 34 = Meta_G alt shift keycode 35 = Meta_H alt shift keycode 36 = Meta_J alt shift keycode 37 = Meta_K alt shift keycode 38 = Meta_L alt shift keycode 39 = Meta_colon alt shift keycode 40 = Meta_quotedbl alt shift keycode 41 = Meta_asciitilde alt shift keycode 43 = Meta_bar control alt keycode 43 = Meta_Control_backslash alt shift keycode 44 = Meta_Z alt shift keycode 45 = Meta_X alt shift keycode 46 = Meta_C alt shift keycode 47 = Meta_V alt shift keycode 48 = Meta_B alt shift keycode 49 = Meta_N alt shift keycode 50 = Meta_M alt shift keycode 51 = Meta_less alt shift keycode 52 = Meta_greater alt shift keycode 53 = Meta_question alt shift keycode 57 = Meta_space ")) (operating-system (host-name "jojen") (timezone "US/Eastern") (locale "en_US.utf8") (bootloader (bootloader-configuration (bootloader grub-bootloader) (target "/dev/sda"))) (kernel linux-libre) (firmware (list ath9k-htc-firmware)) ;; Specify a mapped device for the encrypted root partition. ;; The UUID is that returned by 'cryptsetup luksUUID'. (mapped-devices (list (mapped-device (source (uuid "a56c53e7-b345-4e24-a17b-6cf158dbc7d3")) (target "jojen-root") (type luks-device-mapping)))) (file-systems (cons* (file-system ;; XXX This doesn't seem to work ;; (device "jojen-root") ;; (title 'label) (device "/dev/mapper/jojen-root") (title 'device) (mount-point "/") (type "btrfs") (dependencies mapped-devices)) %base-file-systems)) (users (cons* (user-account (name "mhw") (uid 1000) (group "mhw") (supplementary-groups '("wheel" "users" "netdev" "audio" "video" "dialout")) (home-directory "/home/mhw")) %base-user-accounts)) (groups (cons* (user-group (name "mhw") (id 1000)) %base-groups)) (setuid-programs (list (file-append shadow "/bin/passwd") (file-append inetutils "/bin/ping"))) ;; This is where we specify system-wide packages. (packages (cons* nss-certs ;for HTTPS access gvfs ;for user mounts cryptsetup btrfs-progs wpa-supplicant network-manager network-manager-applet (delete sudo %base-packages))) (services (cons* (console-keymap-service keymap) ;;(xfce-desktop-service) (gnome-desktop-service) (service network-manager-service-type (network-manager-configuration)) (service wpa-supplicant-service-type wpa-supplicant) ;; Desktop services follow (slim-service) ;;(screen-locker-service slock) (screen-locker-service xlockmore "xlock") (simple-service 'mtp udev-service-type (list libmtp)) ;;(avahi-service) ; I don't trust this ;;(wicd-service) ; using NetworkManager instead (udisks-service) (upower-service) (colord-service) ;;(geoclue-service) ; I don't want this (polkit-service) (elogind-service) (dbus-service) ;;(ntp-service) ; I don't trust this (modify-services (remove (lambda (svc) (eq? (service-kind svc) wicd-service-type)) %base-services) ;; This is for debugging #; (nscd-service-type config => (nscd-configuration (inherit config) (debug-level 3) (log-file "/var/log/nscd.log"))) ;; I don't trust the build farm (guix-service-type config => (guix-configuration (inherit config) (use-substitutes? #f) (authorized-keys '()) (substitute-urls '()) (extra-options '("--gc-keep-derivations=yes" "--gc-keep-outputs=yes"))))))) ;; Allow resolution of '.local' host names with mDNS. ;;(name-service-switch %mdns-host-lookup-nss) ; disabled for now ) --8<---------------cut here---------------end--------------->8--- ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#28445: match-error in 'device-sexp->device' while building system 2017-09-13 14:41 bug#28445: match-error in 'device-sexp->device' while building system Mark H Weaver @ 2017-09-13 15:37 ` Marius Bakke 2017-09-13 21:24 ` Mark H Weaver 2017-09-13 18:32 ` Mark H Weaver 1 sibling, 1 reply; 12+ messages in thread From: Marius Bakke @ 2017-09-13 15:37 UTC (permalink / raw) To: Mark H Weaver, 28445 [-- Attachment #1.1: Type: text/plain, Size: 2797 bytes --] Mark H Weaver <mhw@netris.org> writes: > I just started getting this error while trying to build my x86_64 GuixSD > system: > > --8<---------------cut here---------------start------------->8--- > mhw@jojen ~$ guix system build -K /etc/config-new.scm > Backtrace: > 14 (primitive-load "/home/mhw/guix/scripts/guix") > In guix/ui.scm: > 1331:12 13 (run-guix-command _ . _) > In ice-9/boot-9.scm: > 837:9 12 (catch _ _ #<procedure 7f67b07988c0 at guix/ui.scm:448…> …) > 837:9 11 (catch _ _ #<procedure 7f67b07988d8 at guix/ui.scm:536…> …) > In guix/scripts/system.scm: > 1025:8 10 (_) > 908:6 9 (process-action _ _ _) > In guix/store.scm: > 1443:24 8 (run-with-store _ _ #:guile-for-build _ #:system _ # _) > In guix/scripts/system.scm: > 661:31 7 (_ _) > In srfi/srfi-1.scm: > 705:23 6 (filter-map #<procedure system->boot-parameters (sys…> . #) > In ice-9/boot-9.scm: > 837:9 5 (catch system-error #<procedure 640e660 at guix/script…> …) > In guix/scripts/system.scm: > 385:30 4 (_) > In gnu/system.scm: > 307:17 3 (read-boot-parameters-file "/var/guix/profiles/system-9…") > In ice-9/ports.scm: > 444:17 2 (call-with-input-file _ _ #:binary _ #:encoding _ # _) > In gnu/system.scm: > 282:10 1 (read-boot-parameters _) > 238:4 0 (device-sexp->device _) > > gnu/system.scm:238:4: In procedure device-sexp->device: > gnu/system.scm:238:4: Throw to key `match-error' with args `("match" "no matching pattern" #f)'. > --8<---------------cut here---------------end--------------->8--- [...] > ;; Specify a mapped device for the encrypted root partition. > ;; The UUID is that returned by 'cryptsetup luksUUID'. > (mapped-devices > (list (mapped-device > (source (uuid "a56c53e7-b345-4e24-a17b-6cf158dbc7d3")) > (target "jojen-root") > (type luks-device-mapping)))) > > (file-systems (cons* (file-system > ;; XXX This doesn't seem to work > ;; (device "jojen-root") > ;; (title 'label) > (device "/dev/mapper/jojen-root") > (title 'device) > (mount-point "/") > (type "btrfs") > (dependencies mapped-devices)) > %base-file-systems)) I have an identical setup, and the problem is that the parameters file contains "(store (device #f))". You can confirm this by `cat /var/guix/profiles/system-9-link/parameters`. This patch fixes the parameters generation, but you have to move away the profile symlinks that contains the broken parameters file before you can use `guix system` again). [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1.2: 0001-system-Recognize-device-titles-when-creating-boot-pa.patch --] [-- Type: text/x-patch, Size: 937 bytes --] From 5ca849b84c02f5d213b40c654f1449e19adb5471 Mon Sep 17 00:00:00 2001 From: Marius Bakke <mbakke@fastmail.com> Date: Tue, 12 Sep 2017 21:03:36 +0200 Subject: [PATCH] system: Recognize device titles when creating boot parameters. This solves a problem where the store device would be #f in profile parameters when not using uuid or labels. * gnu/system.scm (fs->boot-device): Add case for when FILE-SYSTEM-TITLE is a "device". --- gnu/system.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/system.scm b/gnu/system.scm index c4404f593..767fc0784 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -902,6 +902,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) -- 2.14.1 [-- Attachment #1.3: Type: text/plain, Size: 185 bytes --] I wasn't sure if this solution is correct in the general case, as I also get a warning from GRUB "/dev/mapper/foo-root is not a valid boot device", but that is probably another issue. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 487 bytes --] ^ permalink raw reply related [flat|nested] 12+ messages in thread
* bug#28445: match-error in 'device-sexp->device' while building system 2017-09-13 15:37 ` Marius Bakke @ 2017-09-13 21:24 ` Mark H Weaver 2017-09-13 23:53 ` Mark H Weaver 2017-09-17 19:51 ` Ludovic Courtès 0 siblings, 2 replies; 12+ messages in thread From: Mark H Weaver @ 2017-09-13 21:24 UTC (permalink / raw) To: Marius Bakke; +Cc: 28445 Hi Marius, Marius Bakke <mbakke@fastmail.com> writes: > I have an identical setup, and the problem is that the parameters file > contains "(store (device #f))". You can confirm this by `cat > /var/guix/profiles/system-9-link/parameters`. Indeed, I discovered that as well. > This patch fixes the parameters generation, but you have to move away > the profile symlinks that contains the broken parameters file before you > can use `guix system` again). > > From 5ca849b84c02f5d213b40c654f1449e19adb5471 Mon Sep 17 00:00:00 2001 > From: Marius Bakke <mbakke@fastmail.com> > Date: Tue, 12 Sep 2017 21:03:36 +0200 > Subject: [PATCH] system: Recognize device titles when creating boot > parameters. Thanks very much for this, but I think we should find a solution that doesn't involve discarding all existing system generations. The problem is, we would have to take a leap of faith that the newly generated system will work. We should not ask users with similar setups to take that leap of faith and possibly end up with an unbootable system in need of rescue. Guix is supposed to prevent this situation from happening. 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? Mark ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#28445: match-error in 'device-sexp->device' while building system 2017-09-13 21:24 ` Mark H Weaver @ 2017-09-13 23:53 ` Mark H Weaver 2017-09-14 6:03 ` Mark H Weaver 2017-09-17 19:51 ` Ludovic Courtès 1 sibling, 1 reply; 12+ messages in thread From: Mark H Weaver @ 2017-09-13 23:53 UTC (permalink / raw) To: Marius Bakke; +Cc: 28445 For now, to allow me to apply security updates to my system, I reverted the following commits: 96da5d629 system: Add gexp compiler for <operating-system>. 45bba4751 store: 'run-with-store' has a #:target parameter. fc2de6ce1 guix system: Pretty-print device UUIDs. 7940188eb system: Fix typo in 'read-boot-parameters'. 5f7fe1c57 vm: Generate a UUID to identify the root file system. fd3b4b985 vm: Allow users to specify a UUID for the root partition. ce094b466 uuid: 'uuid' macro supports more UUID types. 075681d35 system: Serialize the UUID type in the "parameters" file. 9b336338c system: Introduce a disjoint UUID type. d1ff5f9db services: file-system: Use 'file-system->spec'. 47cef4eca file-systems: Introduce (gnu system uuid). 943e1b975 services: base: Import the closure of (gnu build file-systems). and this allows me to build a new system. Mark ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#28445: match-error in 'device-sexp->device' while building system 2017-09-13 23:53 ` Mark H Weaver @ 2017-09-14 6:03 ` Mark H Weaver 0 siblings, 0 replies; 12+ messages in thread From: Mark H Weaver @ 2017-09-14 6:03 UTC (permalink / raw) To: Marius Bakke; +Cc: 28445 I wrote: > For now, to allow me to apply security updates to my system, I > reverted the following commits: To be clear, I reverted these commits only on a private branch in my local git repo. Mark > 96da5d629 system: Add gexp compiler for <operating-system>. > 45bba4751 store: 'run-with-store' has a #:target parameter. > fc2de6ce1 guix system: Pretty-print device UUIDs. > 7940188eb system: Fix typo in 'read-boot-parameters'. > 5f7fe1c57 vm: Generate a UUID to identify the root file system. > fd3b4b985 vm: Allow users to specify a UUID for the root partition. > ce094b466 uuid: 'uuid' macro supports more UUID types. > 075681d35 system: Serialize the UUID type in the "parameters" file. > 9b336338c system: Introduce a disjoint UUID type. > d1ff5f9db services: file-system: Use 'file-system->spec'. > 47cef4eca file-systems: Introduce (gnu system uuid). > 943e1b975 services: base: Import the closure of (gnu build file-systems). > > and this allows me to build a new system. ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#28445: match-error in 'device-sexp->device' while building system 2017-09-13 21:24 ` Mark H Weaver 2017-09-13 23:53 ` Mark H Weaver @ 2017-09-17 19:51 ` Ludovic Courtès 2017-09-18 17:29 ` Mark H Weaver 1 sibling, 1 reply; 12+ messages in thread From: Ludovic Courtès @ 2017-09-17 19:51 UTC (permalink / raw) To: Mark H Weaver; +Cc: 28445 [-- Attachment #1: Type: text/plain, Size: 496 bytes --] Hello, Apologies for not chiming in earlier! Mark H Weaver <mhw@netris.org> 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’. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Type: text/x-patch, Size: 720 bytes --] 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) ^ permalink raw reply related [flat|nested] 12+ messages in thread
* bug#28445: match-error in 'device-sexp->device' while building system 2017-09-17 19:51 ` Ludovic Courtès @ 2017-09-18 17:29 ` Mark H Weaver 2017-09-18 21:34 ` Ludovic Courtès 0 siblings, 1 reply; 12+ messages in thread From: Mark H Weaver @ 2017-09-18 17:29 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 28445 Hi Ludovic, ludo@gnu.org (Ludovic Courtès) writes: > Mark H Weaver <mhw@netris.org> 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? I applied this, and my system boots, but there are errors that occur within GRUB that didn't happen before this batch of recent commits (the ones I mentioned reverting earlier). At two points during boot, GRUB prints an error (paraphrasing): no such device: /dev/mapper/jojen-root. * It happens once after entering my disk encryption password for GRUB, but before the menu is displayed. * It happens again after selecting the desired menu item, but before loading the kernel. The origin of these problems can be seen in the diff between my old grub.cfg and the new one: --8<---------------cut here---------------start------------->8--- --- /gnu/store/5vw8y4kyl0606wg0sgh8xsm2czshdprl-grub.cfg 1969-12-31 19:00:01.000000000 -0500 +++ /boot/grub/grub.cfg 2017-09-18 05:19:39.240461714 -0400 @@ -21,7 +21,7 @@ } # Set 'root' to the partition that contains /gnu/store. -search --file --set /gnu/store/21ngnlx9k0x9x2jj1px7mdlb4j6mzz6x-grub-2.02/share/grub/unicode.pf2 +search --label --set /dev/mapper/jojen-root if loadfont /gnu/store/21ngnlx9k0x9x2jj1px7mdlb4j6mzz6x-grub-2.02/share/grub/unicode.pf2; then setup_gfxterm --8<---------------cut here---------------end--------------->8--- Above, it changed from a working method to a non-working method to find the encrypted partition within GRUB. --8<---------------cut here---------------start------------->8--- @@ -42,15 +42,20 @@ set default=0 set timeout=5 menuentry "GNU with Linux-Libre 4.13.2 (beta)" { - search --file --set /gnu/store/r64778rd9s1hy1yjbvlr17yq16vhwblq-linux-libre-4.13.2/bzImage - linux /gnu/store/r64778rd9s1hy1yjbvlr17yq16vhwblq-linux-libre-4.13.2/bzImage --root=/dev/mapper/jojen-root --system=/gnu/store/3lprqk4zdwhz4lvryhalymf2xks8f6yr-system --load=/gnu/store/3lprqk4zdwhz4lvryhalymf2xks8f6yr-system/boot - initrd /gnu/store/rqn1zs2pjbk54b1mpsy98qwsbkxj94q5-raw-initrd/initrd + search --label --set /dev/mapper/jojen-root + linux /gnu/store/r64778rd9s1hy1yjbvlr17yq16vhwblq-linux-libre-4.13.2/bzImage --root=/dev/mapper/jojen-root --system=/gnu/store/7i0f249xi92fjf4r6990s2rmlhjhiq9w-system --load=/gnu/store/7i0f249xi92fjf4r6990s2rmlhjhiq9w-system/boot + initrd /gnu/store/0cpz988g0yvq4wimiqw2zd7cc18ak4p4-raw-initrd/initrd } --8<---------------cut here---------------end--------------->8--- and here, the same issue with GRUB's "search" command previously searching for a file, and now searching for a label that doesn't exist. Here's what ends up in the 'parameters' file of my new system: (store (device "/dev/mapper/jojen-root") (mount-point "/")) It manages to boot anyway, but it pauses and prompts me to press a key (to make sure I saw this error) twice during early boot. It would be good to handle this root filesystem configuration more gracefully. Or is my OS configuration to blame? Thanks! Mark ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#28445: match-error in 'device-sexp->device' while building system 2017-09-18 17:29 ` Mark H Weaver @ 2017-09-18 21:34 ` Ludovic Courtès 2017-09-20 21:27 ` Ludovic Courtès 0 siblings, 1 reply; 12+ messages in thread From: Ludovic Courtès @ 2017-09-18 21:34 UTC (permalink / raw) To: Mark H Weaver; +Cc: 28445 [-- Attachment #1: Type: text/plain, Size: 570 bytes --] Hi, Mark H Weaver <mhw@netris.org> skribis: > # Set 'root' to the partition that contains /gnu/store. > -search --file --set /gnu/store/21ngnlx9k0x9x2jj1px7mdlb4j6mzz6x-grub-2.02/share/grub/unicode.pf2 > +search --label --set /dev/mapper/jojen-root Oops. I believe the patch below does the trick (‘store-device’ must never be a Linux device name, and that’s what the patch ensures.) Thoughts? (I didn’t notice these issues because I identify my root file system by label or UUID rather than hard-coding its /dev/mapper name.) Ludo’. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Type: text/x-patch, Size: 1705 bytes --] diff --git a/gnu/system.scm b/gnu/system.scm index d337e5259..d71b9c15b 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -243,6 +243,11 @@ directly by the user." ((? string? device) device))) + (define (ensure-not-/dev device) + (if (and (string? device) (string-prefix? "/" device)) + #f + device)) + (match (read port) (('boot-parameters ('version 0) ('label label) ('root-device root) @@ -277,15 +282,16 @@ directly by the user." file))) (store-device - (match (assq 'store rest) - (('store ('device device) _ ...) - (device-sexp->device device)) - (_ ;the old format - ;; Root might be a device path like "/dev/sda1", which is not a - ;; suitable GRUB device identifier. - (if (string-prefix? "/" root) - #f - root)))) + ;; ROOT might be a device path like "/dev/sda1", which is not a + ;; suitable GRUB device identifier. + (ensure-not-/dev + (match (assq 'store rest) + (('store ('device #f) _ ...) + root-device) + (('store ('device device) _ ...) + (device-sexp->device device)) + (_ ;the old format + root-device)))) (store-mount-point (match (assq 'store rest) @@ -906,6 +912,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) ^ permalink raw reply related [flat|nested] 12+ messages in thread
* bug#28445: match-error in 'device-sexp->device' while building system 2017-09-18 21:34 ` Ludovic Courtès @ 2017-09-20 21:27 ` Ludovic Courtès 2017-10-04 17:39 ` Mark H Weaver 0 siblings, 1 reply; 12+ messages in thread From: Ludovic Courtès @ 2017-09-20 21:27 UTC (permalink / raw) To: Mark H Weaver; +Cc: 28445 Hello Mark, Andy pushed the first half of the fix as 96bc6518002c3b2ad9f15cf36991b20bebcbbe8a. Could you check whether the ‘ensure-not-/dev’ part below solves the rest? Thanks, Ludo’. ludo@gnu.org (Ludovic Courtès) skribis: > Mark H Weaver <mhw@netris.org> skribis: > >> # Set 'root' to the partition that contains /gnu/store. >> -search --file --set /gnu/store/21ngnlx9k0x9x2jj1px7mdlb4j6mzz6x-grub-2.02/share/grub/unicode.pf2 >> +search --label --set /dev/mapper/jojen-root > > Oops. I believe the patch below does the trick (‘store-device’ must > never be a Linux device name, and that’s what the patch ensures.) > > Thoughts? > > (I didn’t notice these issues because I identify my root file system by > label or UUID rather than hard-coding its /dev/mapper name.) > > Ludo’. > > diff --git a/gnu/system.scm b/gnu/system.scm > index d337e5259..d71b9c15b 100644 > --- a/gnu/system.scm > +++ b/gnu/system.scm > @@ -243,6 +243,11 @@ directly by the user." > ((? string? device) > device))) > > + (define (ensure-not-/dev device) > + (if (and (string? device) (string-prefix? "/" device)) > + #f > + device)) > + > (match (read port) > (('boot-parameters ('version 0) > ('label label) ('root-device root) > @@ -277,15 +282,16 @@ directly by the user." > file))) > > (store-device > - (match (assq 'store rest) > - (('store ('device device) _ ...) > - (device-sexp->device device)) > - (_ ;the old format > - ;; Root might be a device path like "/dev/sda1", which is not a > - ;; suitable GRUB device identifier. > - (if (string-prefix? "/" root) > - #f > - root)))) > + ;; ROOT might be a device path like "/dev/sda1", which is not a > + ;; suitable GRUB device identifier. > + (ensure-not-/dev > + (match (assq 'store rest) > + (('store ('device #f) _ ...) > + root-device) > + (('store ('device device) _ ...) > + (device-sexp->device device)) > + (_ ;the old format > + root-device)))) > > (store-mount-point > (match (assq 'store rest) > @@ -906,6 +912,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) ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#28445: match-error in 'device-sexp->device' while building system 2017-09-20 21:27 ` Ludovic Courtès @ 2017-10-04 17:39 ` Mark H Weaver 2017-10-06 22:22 ` Ludovic Courtès 0 siblings, 1 reply; 12+ messages in thread From: Mark H Weaver @ 2017-10-04 17:39 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 28445 Hi, Sorry for the delayed response. ludo@gnu.org (Ludovic Courtès) writes: > Andy pushed the first half of the fix as > 96bc6518002c3b2ad9f15cf36991b20bebcbbe8a. Could you check whether the > ‘ensure-not-/dev’ part below solves the rest? I see that you've pushed the 'ensure-not-/dev' part, and I have that now in my tree, but FYI it didn't solve the problem for me. My system 'parameters' file contains: (store (device "/dev/mapper/jojen-root") (mount-point "/")) and my grub.cfg still uses: search --label --set /dev/mapper/jojen-root both in the top section (just before loading the font) and within the default menu entry. As before, an error is issued twice, each time this command is run: just after entering my disk encryption password and after selecting the default menu item. Within the "old configurations" menu, all of the menu entries use: search --file --set /gnu/store/…-linux-libre-4.13.4/bzImage I don't remember if this was the case before. Mark ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#28445: match-error in 'device-sexp->device' while building system 2017-10-04 17:39 ` Mark H Weaver @ 2017-10-06 22:22 ` Ludovic Courtès 0 siblings, 0 replies; 12+ messages in thread From: Ludovic Courtès @ 2017-10-06 22:22 UTC (permalink / raw) To: Mark H Weaver; +Cc: 28445-done Hi Mark, Mark H Weaver <mhw@netris.org> skribis: > ludo@gnu.org (Ludovic Courtès) writes: >> Andy pushed the first half of the fix as >> 96bc6518002c3b2ad9f15cf36991b20bebcbbe8a. Could you check whether the >> ‘ensure-not-/dev’ part below solves the rest? > > I see that you've pushed the 'ensure-not-/dev' part, and I have that now > in my tree, but FYI it didn't solve the problem for me. My system > 'parameters' file contains: > > (store (device "/dev/mapper/jojen-root") (mount-point "/")) > > and my grub.cfg still uses: > > search --label --set /dev/mapper/jojen-root I tested with the config you had posted, and commit 90d23ed9df33e35e157fecd8ab60f55e716ca42f fixes the problem. Let me know if anything else pops up in this area! Thank you, Ludo’. ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#28445: match-error in 'device-sexp->device' while building system 2017-09-13 14:41 bug#28445: match-error in 'device-sexp->device' while building system Mark H Weaver 2017-09-13 15:37 ` Marius Bakke @ 2017-09-13 18:32 ` Mark H Weaver 1 sibling, 0 replies; 12+ messages in thread From: Mark H Weaver @ 2017-09-13 18:32 UTC (permalink / raw) To: 28445 Mark H Weaver <mhw@netris.org> writes: > I just started getting this error while trying to build my x86_64 GuixSD > system: > > mhw@jojen ~$ guix system build -K /etc/config-new.scm [...] > gnu/system.scm:238:4: In procedure device-sexp->device: > gnu/system.scm:238:4: Throw to key `match-error' with args `("match" "no matching pattern" #f)'. This is ultimately caused by the fact that /var/guix/profiles/system-*-link/parameters, for every system I have, includes: (store (device #f) (mount-point "/")) It's worth noting that my root device is unusual: it is a btrfs filesystem within a LUKS-encrypted partition. See below for the relevant excerpts of my OS configuration: > (operating-system [...] > ;; Specify a mapped device for the encrypted root partition. > ;; The UUID is that returned by 'cryptsetup luksUUID'. > (mapped-devices > (list (mapped-device > (source (uuid "a56c53e7-b345-4e24-a17b-6cf158dbc7d3")) > (target "jojen-root") > (type luks-device-mapping)))) > > (file-systems (cons* (file-system > ;; XXX This doesn't seem to work > ;; (device "jojen-root") > ;; (title 'label) > (device "/dev/mapper/jojen-root") > (title 'device) > (mount-point "/") > (type "btrfs") > (dependencies mapped-devices)) > %base-file-systems)) Mark ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2017-10-06 22:24 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-09-13 14:41 bug#28445: match-error in 'device-sexp->device' while building system Mark H Weaver 2017-09-13 15:37 ` Marius Bakke 2017-09-13 21:24 ` Mark H Weaver 2017-09-13 23:53 ` Mark H Weaver 2017-09-14 6:03 ` Mark H Weaver 2017-09-17 19:51 ` Ludovic Courtès 2017-09-18 17:29 ` Mark H Weaver 2017-09-18 21:34 ` Ludovic Courtès 2017-09-20 21:27 ` Ludovic Courtès 2017-10-04 17:39 ` Mark H Weaver 2017-10-06 22:22 ` Ludovic Courtès 2017-09-13 18:32 ` Mark H Weaver
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.