summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2023-10-13 17:05:27 +0200
committerLudovic Courtès <ludo@gnu.org>2023-10-23 11:56:53 +0200
commit8e3d710f4c31886ebcbfedfcea315388ea7202ee (patch)
treef8b2766b1839a9c77e3a8a5050e9fd46b6340660 /gnu
parent4eda89248dfab7e7708bc76860e6616ba7a9b081 (diff)
downloadguix-8e3d710f4c31886ebcbfedfcea315388ea7202ee.tar.gz
gnu: polkit: Remove dependency on (guix build syscalls).
Having a dependency on (guix build syscalls) this deep in the stack
would make it much harder to change syscalls.scm.

* gnu/packages/polkit.scm (polkit)[arguments]: Remove #:imported-modules.
Remove (guix build syscalls) from #:modules.
Rewrite ‘check’ phase to reap processes from the build process.
[native-inputs]: Remove TINI.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/polkit.scm35
1 files changed, 15 insertions, 20 deletions
diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm
index 6fe7824a57..2f733dd703 100644
--- a/gnu/packages/polkit.scm
+++ b/gnu/packages/polkit.scm
@@ -95,10 +95,7 @@
     (build-system meson-build-system)
     (arguments
      (list
-      #:imported-modules `(,@%meson-build-system-modules
-                           (guix build syscalls))
       #:modules '((guix build meson-build-system)
-                  (guix build syscalls)
                   (guix build utils)
                   (ice-9 match))
       #:configure-flags
@@ -130,24 +127,23 @@
           (replace 'check
             (lambda* (#:key tests? test-options #:allow-other-keys)
               (when tests?
-                ;; Run the test suite through tini to ensure signals are
-                ;; properly handled and zombie processes reaped.
                 (match (primitive-fork)
                   (0                    ;child process
-                   (set-child-subreaper!)
-                   ;; Use tini so that signals are properly handled and
-                   ;; doubly-forked processes get reaped; otherwise,
-                   ;; python-dbusmock would waste time polling for the dbus
-                   ;; processes it spawns to be reaped, in vain.
-                   (apply execlp "tini" "--"
-                          "meson" "--" "test" "-t" "0" "--print-errorlogs"
+                   (apply execlp "meson" "meson"
+                          "test" "-t" "0" "--print-errorlogs"
                           test-options))
-                  (pid
-                   (match (waitpid pid)
-                     ((_ . status)
-                      (unless (zero? status)
-                        (error "`meson test' exited with status"
-                               status))))))))))))
+                  (meson-pid
+                   ;; Reap child processes; otherwise, python-dbusmock would
+                   ;; waste time polling for the dbus processes it spawns to
+                   ;; be reaped, in vain.
+                   (let loop ()
+                     (match (waitpid WAIT_ANY)
+                       ((pid . status)
+                        (if (= pid meson-pid)
+                            (unless (zero? status)
+                              (error "`meson test' exited with status"
+                                     status))
+                            (loop)))))))))))))
     (inputs
      (list duktape expat elogind linux-pam nspr))
     (propagated-inputs
@@ -162,8 +158,7 @@
            perl
            pkg-config
            python
-           python-dbusmock
-           tini))
+           python-dbusmock))
     (home-page "https://www.freedesktop.org/wiki/Software/polkit/")
     (synopsis "Authorization API for privilege management")
     (description "Polkit is an application-level toolkit for defining and