Subject: [bug#66525] [PATCH 7/7] gnu: public-inbox: Remove dependency on (guix build syscalls).

From: Ludovic Courtès <[email-masked]>
Date: Fri, 13 Oct 2023 17:47:50 +0200

* gnu/packages/mail.scm (public-inbox)[arguments]: Remove #:imported-modules.
Remove (guix build syscalls) from #:modules.  Rewrite ‘check’ phase to
reap processes from the build process.
[native-inputs]: Remove TINI.
---
 gnu/packages/mail.scm | 33 ++++++++++++++++-----------------
 1 file changed, 16 insertions(+), 17 deletions(-)

diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index be458a2d92..fc5cde38ce 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <[email-masked]>
+;;; Copyright © 2013-2021, 2023 Ludovic Courtès <[email-masked]>
 ;;; Copyright © 2014, 2015, 2017, 2020 Mark H Weaver <[email-masked]>
 ;;; Copyright © 2014 Ian Denhardt <[email-masked]>
 ;;; Copyright © 2014 Sou Bunnbu <[email-masked]>
@@ -4242,10 +4242,7 @@ (define-public public-inbox
              (file-name (git-file-name name version))))
     (build-system perl-build-system)
     (arguments
-     `(#:imported-modules (,@%perl-build-system-modules
-                           (guix build syscalls))
-       #:modules ((guix build perl-build-system)
-                  (guix build syscalls)
+     `(#:modules ((guix build perl-build-system)
                   (guix build utils)
                   (ice-9 match))
        #:phases
@@ -4282,18 +4279,20 @@ (define-public public-inbox
                     (setenv "TMP" "/tmp")
                     (setenv "TMPDIR" "/tmp")
 
-                    ;; Use tini so that signals are properly handled and
-                    ;; doubly-forked processes get reaped; otherwise,
-                    ;; lei-daemon is kept as a zombie and the testsuite
-                    ;; fails thinking that it didn't quit as it should.
-                    (set-child-subreaper!)
-                    (apply execlp "tini" "--"
+                    (apply execlp "make"
                            "make" "check" test-flags))
-                   (pid
-                    (match (waitpid pid)
-                      ((_ . status)
-                       (unless (zero? status)
-                         (error "`make check' exited with status" status))))))
+                   (make-pid
+                    ;; Reap child processes; otherwise, lei-daemon is kept as
+                    ;; a zombie and the testsuite fails thinking that it
+                    ;; didn't quit as it should.
+                    (let loop ()
+                      (match (waitpid WAIT_ANY)
+                        ((pid . status)
+                         (if (= pid make-pid)
+                             (unless (zero? status)
+                               (error "`make check' exited with status"
+                                      status))
+                             (loop)))))))
                  (format #t "test suite not run~%"))))
          (add-after 'install 'wrap-programs
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -4313,7 +4312,7 @@ (define-public public-inbox
                 (find-files (string-append out "/bin")))))))))
     (native-inputs
      (list ;; For testing.
-           lsof openssl tini))
+           lsof openssl))
     (inputs
      (append
       (if (not (target-64bit?))
-- 
2.41.0