Hi,

I'm trying to use "guix deploy" to my aarch64-linux machine.  This does
not succeed as
/gnu/store/g9jx0a8lfwmg1vyx78nlx55ikr5c7cj0-shepherd-1.0.2.drv aborts
with test failures in tests/status-sexp.sh and tests/forking-service.sh.

The log is attached.

FAIL: tests/status-sexp
=======================

+ shepherd --version
shepherd (GNU Shepherd) 1.0.2
Copyright (C) 2025 the Shepherd authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
+ herd --version
herd (GNU Shepherd) 1.0.2
Copyright (C) 2025 the Shepherd authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
+ socket=t-socket-14001
+ conf=t-conf-14001
+ log=t-log-14001
+ pid=t-pid-14001
+ herd='herd -s t-socket-14001'
+ trap 'cat t-log-14001 || true; rm -f t-socket-14001 t-conf-14001  t-log-14001;
      test -f t-pid-14001 && kill `cat t-pid-14001` || true; rm -f t-pid-14001' 
EXIT
+ cat
+ rm -f t-pid-14001
+ test -f t-pid-14001
+ shepherd -I -s t-socket-14001 -c t-conf-14001 -l t-log-14001 --pid=t-pid-14001
+ sleep 0.3
+ test -f t-pid-14001
+ sleep 0.3
+ test -f t-pid-14001
+ sleep 0.3
+ test -f t-pid-14001
+ sleep 0.3
GNU Shepherd 1.0.2 (Guile 3.0.9, aarch64-unknown-linux-gnu)
Starting service root...
Service root started.
Service root running with value #<<process> id: 14089 command: #f>.
Service root has been started.
+ test -f t-pid-14001
+ sleep 0.3
Starting service foo...
Service foo started.
Service foo running with value abc.
Service foo has been started.
Configuration successfully loaded from 't-conf-14001'.
+ test -f t-pid-14001
++ cat t-pid-14001
+ shepherd_pid=14089
+ kill -0 14089
+ test -S t-socket-14001
+ fetch_status='
  (let ((sock (open-connection "t-socket-14001")))
    (write-command (shepherd-command '\''status '\''root) sock)
    (read sock))'
++ cat /proc/14089/cmdline
++ xargs -0
++ sed '-es/ /" "/g ; s/^/"/; s/$/"/'
+ shepherd_command='
  
"/gnu/store/nidrvj938dvdw8rxgr35pgy68974cwfy-qemu-8.2.2-static/bin/qemu-aarch64"
 "/gnu/store/mwv03cfpqwvnffq76fp4x1kmn6833dpa-guile-3.0.9/bin/guile" 
"/gnu/store/mwv03cfpqwvnffq76fp4x1kmn6833dpa-guile-3.0.9/bin/guile" 
"--no-auto-compile" 
"/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/shepherd" "-I" "-s" 
"t-socket-14001" "-c" "t-conf-14001" "-l" "t-log-14001" "--pid=t-pid-14001"'
+ root_service_sexp='
   (service (version 0)
      (provides (root shepherd))
      (requires ())
      (respawn? #f)
      (docstring "The root service is used to operate on shepherd itself.")
      (enabled? #t)
      (running (process (version 0)
                        (id 14089)
                        (command (
  
"/gnu/store/nidrvj938dvdw8rxgr35pgy68974cwfy-qemu-8.2.2-static/bin/qemu-aarch64"
 "/gnu/store/mwv03cfpqwvnffq76fp4x1kmn6833dpa-guile-3.0.9/bin/guile" 
"/gnu/store/mwv03cfpqwvnffq76fp4x1kmn6833dpa-guile-3.0.9/bin/guile" 
"--no-auto-compile" 
"/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/shepherd" "-I" "-s" 
"t-socket-14001" "-c" "t-conf-14001" "-l" "t-log-14001" "--pid=t-pid-14001"))))
      (conflicts ())
      (last-respawns ())
      (status-changes ((running . 0) (starting . 0)))
      (startup-failures ())
      (status running)
      (one-shot? #f)
      (transient? #f)
      (respawn-limit (5 . 7))
      (respawn-delay 0.1)
      (actions (help status halt power-off kexec load eval unload reload 
daemonize restart))
      (exit-statuses ())
      (recent-messages ())
      (log-files 
("/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-log-14001"))
      (pending-replacement? #f))'
+ define_canonicalize='
(define (reset-timestamps service)
  (match service
    (('\''service version properties ...)
     (cons* '\''service version
            (map (match-lambda
                   (('\''status-changes alist)
                    (list '\''status-changes
                          (map (match-lambda
                                 ((status . _)
                                  (cons status 0)))
                               alist)))
                   (prop prop))
                 properties)))))

(define (remove-messages service)
  (match service
    (('\''service version properties ...)
     (cons* '\''service version
            (map (match-lambda
                   (('\''recent-messages _)
                    '\''(recent-messages ()))
                   (prop prop))
                 properties)))))

(define canonicalize-service-sexp
  (compose reset-timestamps remove-messages))
'
+ /gnu/store/mwv03cfpqwvnffq76fp4x1kmn6833dpa-guile-3.0.9/bin/guile -c '
(use-modules (shepherd comm) (srfi srfi-1) (ice-9 match))


(define (reset-timestamps service)
  (match service
    (('\''service version properties ...)
     (cons* '\''service version
            (map (match-lambda
                   (('\''status-changes alist)
                    (list '\''status-changes
                          (map (match-lambda
                                 ((status . _)
                                  (cons status 0)))
                               alist)))
                   (prop prop))
                 properties)))))

(define (remove-messages service)
  (match service
    (('\''service version properties ...)
     (cons* '\''service version
            (map (match-lambda
                   (('\''recent-messages _)
                    '\''(recent-messages ()))
                   (prop prop))
                 properties)))))

(define canonicalize-service-sexp
  (compose reset-timestamps remove-messages))


(exit
 (match 
  (let ((sock (open-connection "t-socket-14001")))
    (write-command (shepherd-command '\''status '\''root) sock)
    (read sock))
   (('\''reply _ ('\''result (services)) ('\''error #f) ('\''messages ()))
    (lset= equal?
           (pk '\''ACTUAL (map canonicalize-service-sexp services))
           '\''(
   (service (version 0)
      (provides (root shepherd))
      (requires ())
      (respawn? #f)
      (docstring "The root service is used to operate on shepherd itself.")
      (enabled? #t)
      (running (process (version 0)
                        (id 14089)
                        (command (
  
"/gnu/store/nidrvj938dvdw8rxgr35pgy68974cwfy-qemu-8.2.2-static/bin/qemu-aarch64"
 "/gnu/store/mwv03cfpqwvnffq76fp4x1kmn6833dpa-guile-3.0.9/bin/guile" 
"/gnu/store/mwv03cfpqwvnffq76fp4x1kmn6833dpa-guile-3.0.9/bin/guile" 
"--no-auto-compile" 
"/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/shepherd" "-I" "-s" 
"t-socket-14001" "-c" "t-conf-14001" "-l" "t-log-14001" "--pid=t-pid-14001"))))
      (conflicts ())
      (last-respawns ())
      (status-changes ((running . 0) (starting . 0)))
      (startup-failures ())
      (status running)
      (one-shot? #f)
      (transient? #f)
      (respawn-limit (5 . 7))
      (respawn-delay 0.1)
      (actions (help status halt power-off kexec load eval unload reload 
daemonize restart))
      (exit-statuses ())
      (recent-messages ())
      (log-files 
("/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-log-14001"))
      (pending-replacement? #f))
             (service (version 0)
               (provides (foo)) (requires ())
               (respawn? #t) (docstring "Foo!")
               (enabled? #t) (running abc) (conflicts ())
               (last-respawns ())
               (status-changes ((running . 0) (starting . 0)))
               (startup-failures ())
               (status running)
               (one-shot? #f) (transient? #f)
               (respawn-limit (5 . 7)) (respawn-delay 1)
               (actions ())
               (exit-statuses ())
               (recent-messages ())
               (log-files ())
               (pending-replacement? #f))
             (service (version 0)
               (provides (bar)) (requires (foo))
               (respawn? #f) (docstring "Bar!")
               (enabled? #t) (running #f) (conflicts ())
               (last-respawns ())
               (status-changes ())
               (startup-failures ())
               (status stopped)
               (one-shot? #f) (transient? #f)
               (respawn-limit (5 . 7)) (respawn-delay 1)
               (actions ())
               (exit-statuses ())
               (recent-messages ())
               (log-files ())
               (pending-replacement? #f)))))))
'

;;; (ACTUAL ((service (version 0) (provides (root shepherd)) (requires ()) 
(respawn? #f) (docstring "The root service is used to operate on shepherd 
itself.") (enabled? #t) (running (process (version 0) (id 14089) (command 
("/gnu/store/mwv03cfpqwvnffq76fp4x1kmn6833dpa-guile-3.0.9/bin/guile" 
"--no-auto-compile" 
"/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/shepherd" "-I" "-s" 
"t-socket-14001" "-c" "t-conf-14001" "-l" "t-log-14001" "--pid=t-pid-14001")))) 
(conflicts ()) (last-respawns ()) (status-changes ((running . 0) (starting . 
0))) (startup-failures ()) (status running) (one-shot? #f) (transient? #f) 
(respawn-limit (5 . 7)) (respawn-delay 0.1) (actions (help status halt 
power-off kexec load eval unload reload daemonize restart)) (exit-statuses ()) 
(recent-messages ()) (log-files 
("/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-log-14001")) 
(pending-replacement? #f)) (service (version 0) (provides (foo)) (requires ()) 
(respawn? #t) (docstring "Foo!") (enabled? #t) (running abc) (conflicts ()) 
(last-respawns ()) (status-changes ((running . 0) (starting . 0))) 
(startup-failures ()) (status running) (one-shot? #f) (transient? #f) 
(respawn-limit (5 . 7)) (respawn-delay 1) (actions ()) (exit-statuses ()) 
(recent-messages ()) (log-files ()) (pending-replacement? #f)) (service 
(version 0) (provides (bar)) (requires (foo)) (respawn? #f) (docstring "Bar!") 
(enabled? #t) (running #f) (conflicts ()) (last-respawns ()) (status-changes 
()) (startup-failures ()) (status stopped) (one-shot? #f) (transient? #f) 
(respawn-limit (5 . 7)) (respawn-delay 1) (actions ()) (exit-statuses ()) 
(recent-messages ()) (log-files ()) (pending-replacement? #f))))
+ cat t-log-14001
2025-02-22 21:49:35 GNU Shepherd 1.0.2 (Guile 3.0.9, aarch64-unknown-linux-gnu)
2025-02-22 21:49:35 bit-count is deprecated.  Use bitvector-count, or a loop 
over array-ref if array support is needed.
2025-02-22 21:49:35 scm_bitvector_length is deprecated.  Use 
scm_c_bitvector_length instead.
2025-02-22 21:49:35 Starting service root...
2025-02-22 21:49:35 Service root started.
2025-02-22 21:49:35 Service root running with value #<<process> id: 14089 
command: #f>.
2025-02-22 21:49:35 Service root has been started.
2025-02-22 21:49:35 Starting service foo...
2025-02-22 21:49:35 Service foo started.
2025-02-22 21:49:35 Service foo running with value abc.
2025-02-22 21:49:35 Service foo has been started.
2025-02-22 21:49:35 Configuration successfully loaded from 't-conf-14001'.
+ rm -f t-socket-14001 t-conf-14001 t-log-14001
+ test -f t-pid-14001
++ cat t-pid-14001
+ kill 14089
+ rm -f t-pid-14001
Stopping service root...
Exiting shepherd...
Stopping service foo...
Service foo stopped.
Service foo is now stopped.
Service bar is not running.
Exiting.
FAIL tests/status-sexp.sh (exit status: 1)

FAIL: tests/forking-service
===========================

+ shepherd --version
shepherd (GNU Shepherd) 1.0.2
Copyright (C) 2025 the Shepherd authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
+ herd --version
herd (GNU Shepherd) 1.0.2
Copyright (C) 2025 the Shepherd authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
+ socket=t-socket-14248
+ conf=t-conf-14248
+ log=t-log-14248
+ pid=t-pid-14248
+ service_pid=t-service-pid-14248
+ service_nofiles=t-service-nofiles-14248
+ service2_pid=t-service2-pid-14248
+ service2_started=t-service2-starts-14248
+ herd='herd -s t-socket-14248'
+ trap cleanup EXIT
+ cat
+ cat t-conf-14248
;; Leave a timeout long enough for slow machines.
(default-pid-file-timeout 10)

(define %command
  '("/gnu/store/d7q6yazfa1bxf4x7p9n3b99hn97q6bvw-bash-minimal-5.1.16/bin/bash" 
"-c" "ulimit -n 
>/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-service-nofiles-14248; 
sleep 600 & echo $! > 
/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-service-pid-14248"))

(register-services
 (list (service
         ;; A service that forks into a different process.
         '(test)
         #:start (make-forkexec-constructor
                   %command
                   #:pid-file 
"/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-service-pid-14248"
                   #:resource-limits '((nofile 1567 1567)))
         #:stop  (make-kill-destructor)
         #:respawn? #f)))

(define %command2
  '("/gnu/store/d7q6yazfa1bxf4x7p9n3b99hn97q6bvw-bash-minimal-5.1.16/bin/bash" 
"-c" "echo started >> 
/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-service2-starts-14248; 
sleep 600 & echo $! > 
/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-service2-pid-14248"))

(register-services
 (list (service
         ;; A service that forks into a different process.
         '(test2)
         #:start (make-forkexec-constructor %command2
                                            #:pid-file 
"/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-service2-pid-14248")
         #:stop  (make-kill-destructor)
         #:respawn-delay 0
         #:respawn? #t)))

(define %command3
  '("/gnu/store/d7q6yazfa1bxf4x7p9n3b99hn97q6bvw-bash-minimal-5.1.16/bin/bash" 
"-c" "sleep 600"))

(register-services
 (list (service
         ;; A service that forks into a different process.
         '(test3)
         #:start (make-forkexec-constructor %command3)
         #:stop  (make-kill-destructor)
         #:respawn? #t)))

(define %command4
  '("/gnu/store/d7q6yazfa1bxf4x7p9n3b99hn97q6bvw-bash-minimal-5.1.16/bin/bash" 
"-c" "trap 'echo ignoring SIGTERM' SIGTERM; while true ; do : ; done"))

(register-services
 (list (service
         ;; A service that ignores SIGTERM.
         '(test4)
         #:requirement '(test3)
         #:start (make-forkexec-constructor %command4)
         #:stop  (make-kill-destructor SIGTERM #:grace-period 3))))
+ rm -f t-pid-14248
+ test -f t-pid-14248
+ shepherd -I -s t-socket-14248 -c t-conf-14248 -l t-log-14248 --pid=t-pid-14248
+ sleep 0.3
+ test -f t-pid-14248
+ sleep 0.3
+ test -f t-pid-14248
+ sleep 0.3
+ test -f t-pid-14248
+ sleep 0.3
GNU Shepherd 1.0.2 (Guile 3.0.9, aarch64-unknown-linux-gnu)
Starting service root...
Service root started.
Service root running with value #<<process> id: 14339 command: #f>.
Service root has been started.
+ test -f t-pid-14248
+ sleep 0.3
Configuration successfully loaded from 't-conf-14248'.
+ test -f t-pid-14248
++ cat t-pid-14248
+ shepherd_pid=14339
+ herd -s t-socket-14248 start test
Starting service test...
Service test has been started.
+ herd -s t-socket-14248 start test2
Starting service test2...
Service test2 has been started.
+ herd -s t-socket-14248 status test
+ grep running
  It is running since 21:49:41 (2 seconds ago).
+ test -f t-service-pid-14248
++ cat t-service-pid-14248
+ service_pid_value=14443
+ kill 14443
+ kill -0 14443
./tests/forking-service.sh: line 133: kill: (14443) - No such process
+ within_seconds 3 'herd -s t-socket-14248 status test | grep stopped'
+ seconds=3
+ '[' 3 -gt 0 ']'
+ /gnu/store/d7q6yazfa1bxf4x7p9n3b99hn97q6bvw-bash-minimal-5.1.16/bin/bash -c 
'herd -s t-socket-14248 status test | grep stopped'
+ sleep 1
++ expr 3 - 1
+ seconds=2
+ '[' 2 -gt 0 ']'
+ /gnu/store/d7q6yazfa1bxf4x7p9n3b99hn97q6bvw-bash-minimal-5.1.16/bin/bash -c 
'herd -s t-socket-14248 status test | grep stopped'
+ sleep 1
++ expr 2 - 1
+ seconds=1
+ '[' 1 -gt 0 ']'
+ /gnu/store/d7q6yazfa1bxf4x7p9n3b99hn97q6bvw-bash-minimal-5.1.16/bin/bash -c 
'herd -s t-socket-14248 status test | grep stopped'
+ sleep 1
++ expr 1 - 1
+ seconds=0
+ cleanup
+ cat t-log-14248
2025-02-22 21:49:40 GNU Shepherd 1.0.2 (Guile 3.0.9, aarch64-unknown-linux-gnu)
2025-02-22 21:49:40 bit-count is deprecated.  Use bitvector-count, or a loop 
over array-ref if array support is needed.
2025-02-22 21:49:40 scm_bitvector_length is deprecated.  Use 
scm_c_bitvector_length instead.
2025-02-22 21:49:40 Starting service root...
2025-02-22 21:49:40 Service root started.
2025-02-22 21:49:40 Service root running with value #<<process> id: 14339 
command: #f>.
2025-02-22 21:49:40 Service root has been started.
2025-02-22 21:49:40 Configuration successfully loaded from 't-conf-14248'.
2025-02-22 21:49:40 Starting service test...
2025-02-22 21:49:41 Service test has been started.
2025-02-22 21:49:41 Service test started.
2025-02-22 21:49:41 Service test running with value #<<process> id: 14443 
command: 
("/gnu/store/d7q6yazfa1bxf4x7p9n3b99hn97q6bvw-bash-minimal-5.1.16/bin/bash" 
"-c" "ulimit -n 
>/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-service-nofiles-14248; 
sleep 600 & echo $! > 
/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-service-pid-14248")>.
2025-02-22 21:49:42 Starting service test2...
2025-02-22 21:49:43 Service test2 has been started.
2025-02-22 21:49:43 Service test2 started.
2025-02-22 21:49:43 Service test2 running with value #<<process> id: 14486 
command: 
("/gnu/store/d7q6yazfa1bxf4x7p9n3b99hn97q6bvw-bash-minimal-5.1.16/bin/bash" 
"-c" "echo started >> 
/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-service2-starts-14248; 
sleep 600 & echo $! > 
/tmp/guix-build-shepherd-1.0.2.drv-0/shepherd-1.0.2/t-service2-pid-14248")>.
+ rm -f t-socket-14248 t-conf-14248 t-log-14248 t-service2-starts-14248 
t-service-nofiles-14248
+ test -f t-pid-14248
++ cat t-pid-14248
+ kill 14339
+ rm -f t-pid-14248
Stopping service root...
Exiting shepherd...
Ignoring error while stopping test: (system-error "getpgid" "~A" ("No such 
process") (3))
Service test3 is not running.
+ test -f t-service-pid-14248
Service test4 is not running.
Exiting.
++ cat t-service-pid-14248
+ kill 14443
./tests/forking-service.sh: line 40: kill: (14443) - No such process
+ true
+ rm -f t-service-pid-14248
+ test -f t-service2-pid-14248
++ cat t-service2-pid-14248
+ kill 14486
./tests/forking-service.sh: line 42: kill: (14486) - No such process
+ true
+ rm -f t-service2-pid-14248
FAIL tests/forking-service.sh (exit status: 1)
-- 
Ricardo

Reply via email to