Subject: bug#41237: guix deploy hangs when a file-system-device is set to a UUID

From: Brice Waegeneire <[email-masked]>
Date: Wed, 13 May 2020 15:57:58 +0000

Hey Guix,

Here is an other “guix deploy” bug: setting a file-system-device field 
to a
UUID makes deploy hangs indefinitely. Using a string (eg.: "/dev/sda1")
instead, “guix deploy” succeed. Following is an output showing it 
hanging:

--8<---------------cut here---------------start------------->8---
$ guix deploy -Lmodules systems/hystou-p04.scm
guix deploy: warning: failed to load '(config workstation)':
no code for module (gnu services lightdm)
The following 1 machine will be deployed:
   abricot

guix deploy: deploying to abricot...
The following derivations will be built:
    /gnu/store/q021ynnwnn3b0py7vp682i980aamcbhy-remote-exp.scm.drv
    /gnu/store/bifn8l2lqh34rn5w6ca9x3n16ji9qh31-remote-assertion.scm.drv
building 
/gnu/store/bifn8l2lqh34rn5w6ca9x3n16ji9qh31-remote-assertion.scm.drv...
building 
/gnu/store/q021ynnwnn3b0py7vp682i980aamcbhy-remote-exp.scm.drv...
sending 2 store items (0 MiB) to '192.168.10.10'...
--8<---------------cut here---------------end--------------->8---

On the host side, when “guix deploy” is hanging:

--8<---------------cut here---------------start------------->8---
$ ps -aux | grep remote-exp
root      1910  197  0.2  81756 37812 ?        Rsl  15:47   2:00 
/gnu/store/0m0vd873jp61lcm4xa3ljdgx381qa782-guile-3.0.2/bin/guile 
--no-auto-compile -L 
/gnu/store/waw3q9xvwz6wivp4skmirxpg53znrs3h-module-import -C 
/gnu/store/waw3q9xvwz6wivp4skmirxpg53znrs3h-module-import -c (begin 
(use-modules (guix repl)) (send-repl-response (quote 
(with-output-to-port (current-error-port) (lambda () (primitive-load 
"/gnu/store/2xh7fzjk1hrz45w2bn1p6fi994f6lkrp-remote-exp.scm")))) 
(current-output-port)) (force-output))
bricewge  1919  0.0  0.0   6372  1748 pts/0    S+   15:48   0:00 grep 
remote-exp
$ cat /gnu/store/2xh7fzjk1hrz45w2bn1p6fi994f6lkrp-remote-exp.scm
#!/gnu/store/18hp7flyb3yid3yp49i6qcdq0sbi5l1n-guile-3.0.2/bin/guile 
--no-auto-compile
!#
(map (lambda (file) (false-if-exception (primitive-load file))) (quote 
("/gnu/store/y0dhva989bqyqqin18d2rkxd4fbkznxi-remote-assertion.scm" 
"/gnu/store/cbyixyqc7rslp5nwxh3np1h9jbwpk7pk-remote-assertion.scm" 
"/gnu/store/apvm855zplmp2cl38hw5ych4d559gza6-remote-assertion.scm")))
$ cat /gnu/store/y0dhva989bqyqqin18d2rkxd4fbkznxi-remote-assertion.scm
(catch (quote system-error) (lambda () (stat "/dev/sda3") #t) (lambda 
args (system-error-errno args)))%                        abricot% cat 
/gnu/store/cbyixyqc7rslp5nwxh3np1h9jbwpk7pk-remote-assertion.scm
(eval-when (expand load eval) (let ((extensions (quote ())) (prepend 
(lambda (items lst) (let loop ((items items) (lst lst)) (if (null? 
items) lst (loop (cdr items) (cons (car items) (delete (car items) 
lst)))))))) (set! %load-path (prepend (cons 
"/gnu/store/6sy0ignb9mhrxqaq43yqn0sxy4vjxvdk-module-import" (map (lambda 
(extension) (string-append extension "/share/guile/site/" 
(effective-version))) extensions)) %load-path)) (set! 
%load-compiled-path (prepend (cons 
"/gnu/store/ag9kc8igsc6gcd12sr4h2qp6bgapzfih-module-import-compiled" 
(map (lambda (extension) (string-append extension "/lib/guile/" 
(effective-version) "/site-ccache")) extensions)) 
%load-compiled-path))))(begin (use-modules (gnu build file-systems) (gnu 
system uuid)) (define uuid (string->uuid "B5DE-B0B9")) 
(find-partition-by-uuid uuid))
$ cat /gnu/store/cbyixyqc7rslp5nwxh3np1h9jbwpk7pk-remote-assertion.scm
(eval-when (expand load eval) (let ((extensions (quote ())) (prepend 
(lambda (items lst) (let loop ((items items) (lst lst)) (if (null? 
items) lst (loop (cdr items) (cons (car items) (delete (car items) 
lst)))))))) (set! %load-path (prepend (cons 
"/gnu/store/6sy0ignb9mhrxqaq43yqn0sxy4vjxvdk-module-import" (map (lambda 
(extension) (string-append extension "/share/guile/site/" 
(effective-version))) extensions)) %load-path)) (set! 
%load-compiled-path (prepend (cons 
"/gnu/store/ag9kc8igsc6gcd12sr4h2qp6bgapzfih-module-import-compiled" 
(map (lambda (extension) (string-append extension "/lib/guile/" 
(effective-version) "/site-ccache")) extensions)) 
%load-compiled-path))))(begin (use-modules (gnu build file-systems) (gnu 
system uuid)) (define uuid (string->uuid "B5DE-B0B9")) 
(find-partition-by-uuid uuid))
$ cat /gnu/store/apvm855zplmp2cl38hw5ych4d559gza6-remote-assertion.scm
(eval-when (expand load eval) (let ((extensions (quote ())) (prepend 
(lambda (items lst) (let loop ((items items) (lst lst)) (if (null? 
items) lst (loop (cdr items) (cons (car items) (delete (car items) 
lst)))))))) (set! %load-path (prepend (cons 
"/gnu/store/88hn0npj9xs099amjbsl7gjh9j3fy1yb-module-import" (map (lambda 
(extension) (string-append extension "/share/guile/site/" 
(effective-version))) extensions)) %load-path)) (set! 
%load-compiled-path (prepend (cons 
"/gnu/store/865zg228hasfmv879g8y12n8i2s8si0f-module-import-compiled" 
(map (lambda (extension) (string-append extension "/lib/guile/" 
(effective-version) "/site-ccache")) extensions)) 
%load-compiled-path))))(begin (use-modules (gnu build file-systems) (gnu 
build linux-modules) (gnu system uuid)) (define dev "/dev/sda3") 
(missing-modules dev (quote ("ahci" "usb-storage" "uas" "usbhid" 
"hid-generic" "hid-apple" "dm-crypt" "xts" "serpent_generic" "wp512" 
"nls_iso8859-1" "pata_acpi" "pata_atiixp" "isci" "virtio_pci" 
"virtio_balloon" "virtio_blk" "virtio_net" "virtio_console" 
"virtio-rng"))))
--8<---------------cut here---------------end--------------->8---

- Brice