[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#62802] [PATCH 1/4] services: syslog: Move configuration to /etc/sys
From: |
Maxim Cournoyer |
Subject: |
[bug#62802] [PATCH 1/4] services: syslog: Move configuration to /etc/syslog.conf. |
Date: |
Wed, 12 Apr 2023 21:24:04 -0400 |
Having the configuration live at a static location makes it possible to
hot-reload it.
* gnu/services/base.scm (syslog.conf): New variable.
(syslog-etc, syslog-shepherd-service): New procedures.
(syslog-service-type): Rewrite using the above new variable and procedures,
extending etc-service-type with its configuration file.
---
gnu/services/base.scm | 61 ++++++++++++++++++++++++++-----------------
1 file changed, 37 insertions(+), 24 deletions(-)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index e5c6bf5335..1ed874aa84 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -15,7 +15,7 @@
;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2021 qblade <qblade@protonmail.com>
;;; Copyright © 2021 Hui Lu <luhuins@163.com>
-;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 muradm <mail@muradm.net>
;;; Copyright © 2022 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2022 Justin Veilleux <terramorpha@cock.li>
@@ -1526,30 +1526,43 @@ (define-record-type* <syslog-configuration>
(config-file syslog-configuration-config-file
(default %default-syslog.conf)))
-(define syslog-service-type
- (shepherd-service-type
- 'syslog
- (lambda (config)
- (define config-file
- (syslog-configuration-config-file config))
+;;; Note: a static file name is used for syslog.conf so that the reload action
+;;; work as intended.
+(define syslog.conf "/etc/syslog.conf")
- (shepherd-service
- (documentation "Run the syslog daemon (syslogd).")
- (provision '(syslogd))
- (requirement '(user-processes))
- (actions (list (shepherd-configuration-action config-file)))
- (start #~(let ((spawn (make-forkexec-constructor
- (list #$(syslog-configuration-syslogd config)
- "--rcfile" #$config-file)
- #:pid-file "/var/run/syslog.pid")))
- (lambda ()
- ;; Set the umask such that file permissions are #o640.
- (let ((mask (umask #o137))
- (pid (spawn)))
- (umask mask)
- pid))))
- (stop #~(make-kill-destructor))))
- (syslog-configuration)
+(define (syslog-etc configuration)
+ (match-record configuration <syslog-configuration>
+ (config-file)
+ (list `(,(basename syslog.conf) ,config-file))))
+
+(define (syslog-shepherd-service config)
+ (define config-file
+ (syslog-configuration-config-file config))
+
+ (shepherd-service
+ (documentation "Run the syslog daemon (syslogd).")
+ (provision '(syslogd))
+ (requirement '(user-processes))
+ (actions (list (shepherd-configuration-action syslog.conf)))
+ (start #~(let ((spawn (make-forkexec-constructor
+ (list #$(syslog-configuration-syslogd config)
+ #$(string-append "--rcfile=" syslog.conf))
+ #:pid-file "/var/run/syslog.pid")))
+ (lambda ()
+ ;; Set the umask such that file permissions are #o640.
+ (let ((mask (umask #o137))
+ (pid (spawn)))
+ (umask mask)
+ pid))))
+ (stop #~(make-kill-destructor))))
+
+(define syslog-service-type
+ (service-type
+ (name 'syslog)
+ (default-value (syslog-configuration))
+ (extensions (list (service-extension shepherd-root-service-type
+ (compose list syslog-shepherd-service))
+ (service-extension etc-service-type syslog-etc)))
(description "Run the syslog daemon, @command{syslogd}, which is
responsible for logging system messages.")))
base-commit: 0fe2c78cac19acfb46c3bc365075293e51e0e5aa
--
2.39.2