bug-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#63921: Activation snippets in reverse order, prevent boot


From: Ludovic Courtès
Subject: bug#63921: Activation snippets in reverse order, prevent boot
Date: Tue, 06 Jun 2023 10:15:54 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)

Booting a system reconfigured from
eed55a6544d5bda2245ec853e5fa4b28e1865bea fails with shepherd saying:

  error: while opening socket '/var/run/shepherd/socket': Address already in use

The root cause appears to be that the ‘boot’ program has expressions
reversed:

--8<---------------cut here---------------start------------->8---
$ guix gc --references $(guix gc --derivers $(readlink -f 
/var/guix/profiles/system-236-link)) | grep boot
/gnu/store/21ldhyrpji6lkkdxi4lgr5k9l5fr2b7l-boot.drv
$ cat $(guix build /gnu/store/21ldhyrpji6lkkdxi4lgr5k9l5fr2b7l-boot.drv)
(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/pj751v3199vmv6i6sf0szp185ryzcfdg-module-import" (map 
(lambda (extension) (string-append extension "/share/guile/site/" 
(effective-version))) extensions)) %load-path)) (set! %load-compiled-path 
(prepend (cons 
"/gnu/store/pql80c2hy38bb60c68sng74s4xa35vwk-module-import-compiled" (map 
(lambda (extension) (string-append extension "/lib/guile/" (effective-version) 
"/site-ccache")) extensions)) %load-compiled-path))))(begin (begin 
(false-if-exception (delete-file "/run/booted-system")) (symlink 
(canonicalize-path "/run/current-system") "/run/booted-system") (let loop ((fd 
3)) (when (< fd 1024) (false-if-exception (let ((flags (fcntl fd F_GETFD))) 
(when (zero? (logand flags FD_CLOEXEC)) (fcntl fd F_SETFD (logior FD_CLOEXEC 
flags))))) (loop (+ fd 1)))) (execl 
"/gnu/store/wj5i6x3xgai7p8whwqybxwqdjdbmbzha-shepherd-0.10.99-git/bin/shepherd" 
"shepherd" "--config" 
"/gnu/store/gnjghlc3n5qbala5jfdslgfi0n3vy8v7-shepherd.conf")) (primitive-load 
"/gnu/store/riabgidmf6fh76klc1yam7k9j1478vvw-activate.scm") (begin (use-modules 
(guix build utils)) (letrec-syntax ((fail-safe (syntax-rules () ((_ exp rest 
...) (begin (catch (quote system-error) (lambda () exp) (const #f)) (fail-safe 
rest ...))) ((_) #t)))) (fail-safe (delete-file "/etc/group.lock") (delete-file 
"/etc/passwd.lock") (delete-file "/etc/.pwd.lock") (setenv "GUIX_LOCPATH" 
"/gnu/store/5fmqijrs5f7vx8mc2q2pmq26yvhb74sm-glibc-utf8-locales-2.35/lib/locale")
 (setlocale LC_CTYPE "en_US.utf8") (delete-file-recursively "/tmp") 
(delete-file-recursively "/var/run") (mkdir "/tmp") (chmod "/tmp" 1023) (mkdir 
"/var/run") (chmod "/var/run" 493) (delete-file-recursively 
"/run/udev/watch.old")))))
--8<---------------cut here---------------end--------------->8---

Namely, (execl "…/bin/shepherd") comes before the cleanup expressions,
which is why /var/run/shepherd/socket is still around when we boot.

Ludo’.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]