summaryrefslogtreecommitdiff
path: root/gnu/services
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2025-03-12 11:48:39 +0100
committerLudovic Courtès <ludo@gnu.org>2025-03-23 19:29:25 +0100
commit667248948ad888600f2ce1caee382e95b5f32583 (patch)
treeeba10c5f8256cf594969927c7c106a3834c82db3 /gnu/services
parentaed019b646603171908e6d63476fe093da36ae0a (diff)
services: file-database: Turn into a Shepherd timer.
* gnu/services/admin.scm (file-database-mcron-jobs): Rename to… (file-database-shepherd-services): … this. Return a list of Shepherd services. (file-database-service-type): Adjust accordingly. * doc/guix.texi (File Search Services): Update documentation of ‘schedule’. Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Change-Id: I5734c629b113e54057694d2ec480abd26b7815db
Diffstat (limited to 'gnu/services')
-rw-r--r--gnu/services/admin.scm22
1 files changed, 18 insertions, 4 deletions
diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm
index 726ca5f9182..5f5b76ffbb9 100644
--- a/gnu/services/admin.scm
+++ b/gnu/services/admin.scm
@@ -462,7 +462,7 @@ the latter should instead be indexed by @command{guix locate} (@pxref{Invoking
guix locate}). This list is passed to the @option{--prunepaths} option of
@command{updatedb} (@pxref{Invoking updatedb,,, find, GNU@tie{}Findutils})."))
-(define (file-database-mcron-jobs configuration)
+(define (file-database-shepherd-services configuration)
(match-record configuration <file-database-configuration>
(package schedule excluded-directories)
(let ((updatedb (program-file
@@ -481,13 +481,27 @@ guix locate}). This list is passed to the @option{--prunepaths} option of
#$(string-append "--prunepaths="
(string-join
excluded-directories)))))))
- (list #~(job #$schedule #$updatedb)))))
+ (list (shepherd-service
+ (provision '(file-database-update))
+ (requirement '(user-processes))
+ (modules '((shepherd service timer)))
+ (start #~(make-timer-constructor
+ #$(if (string? schedule)
+ #~(cron-string->calendar-event #$schedule)
+ schedule)
+ (command '(#$updatedb))
+ #:wait-for-termination? #t))
+ (stop #~(make-timer-destructor))
+ (documentation
+ "Periodically update the system-wide file database that can be
+queried by the 'locate' command.")
+ (actions (list shepherd-trigger-action)))))))
(define file-database-service-type
(service-type
(name 'file-database)
- (extensions (list (service-extension mcron-service-type
- file-database-mcron-jobs)))
+ (extensions (list (service-extension shepherd-root-service-type
+ file-database-shepherd-services)))
(description
"Periodically update the file database used by the @command{locate} command,
which lets you search for files by name. The database is created by running