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
This commit is contained in:
Ludovic Courtès 2025-03-12 11:48:39 +01:00
parent aed019b646
commit 667248948a
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 21 additions and 6 deletions

View file

@ -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