[bug#77629] services: tlp: Make destructor return #f on success.

Message ID fbf75fc1d34b9af9515ba3ead2ca914558ccb309.1744093824.git.nigko.yerden@gmail.com
State New
Headers
Series [bug#77629] services: tlp: Make destructor return #f on success. |

Commit Message

Nigko Yerden April 8, 2025, 6:30 a.m. UTC
  * gnu/services/pm.scm (tlp-shepherd-service): Make destructor
return #f on success. Destructor "should return #f if it is
now possible again to start the service at a later point"
(shepherd manual).

Change-Id: Ic0d21d32af158da1ae940d9c32c05a3471767764
---
Without this patch tlp service brings annoying messages "Service tlp might
have failed to stop" to the system log. Thanks to lfam and Rutherther on
IRC for mentioning in relation to other service that the destructor of a
shepherd service should return #f on success.

 gnu/services/pm.scm | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)


base-commit: c9524b5841a057b5e64abf0dca75261e741949c5
  

Comments

Ludovic Courtès April 8, 2025, 3:07 p.m. UTC | #1
Nigko Yerden <nigko.yerden@gmail.com> skribis:

> * gnu/services/pm.scm (tlp-shepherd-service): Make destructor
> return #f on success. Destructor "should return #f if it is
> now possible again to start the service at a later point"
> (shepherd manual).
>
> Change-Id: Ic0d21d32af158da1ae940d9c32c05a3471767764

Applied, thanks!
  

Patch

diff --git a/gnu/services/pm.scm b/gnu/services/pm.scm
index e022437748..12f05b4b33 100644
--- a/gnu/services/pm.scm
+++ b/gnu/services/pm.scm
@@ -2,6 +2,7 @@ 
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2024 Dariqq <dariqq@posteo.net>
 ;;; Copyright © 2024 Ian Eure <ian@retrospec.tv>
+;;; Copyright © 2025 Nigko Yerden <nigko.yerden@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -459,15 +460,17 @@  (define-configuration tlp-configuration
 (define (tlp-shepherd-service config)
   (let* ((tlp-bin (file-append
                    (tlp-configuration-tlp config) "/sbin/tlp"))
-         (tlp-action (lambda args
+         (tlp-action (lambda (return-value-on-success . args)
                        #~(lambda _
-                           (zero? (system* #$tlp-bin #$@args))))))
+                           (if (zero? (system* #$tlp-bin #$@args))
+                               #$return-value-on-success
+                               (not #$return-value-on-success))))))
     (list (shepherd-service
            (documentation "Run TLP script.")
            (provision '(tlp))
            (requirement '(user-processes))
-           (start (tlp-action "init" "start"))
-           (stop  (tlp-action "init" "stop"))))))
+           (start (tlp-action #t "init" "start"))
+           (stop  (tlp-action #f "init" "stop"))))))
 
 (define (tlp-activation config)
   (let* ((config-str (with-output-to-string