From 3c1158ac4e5ef825a9b9a229a233fabd7cef334e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 26 Oct 2021 16:01:40 +0200 Subject: [PATCH] profiles: Build the man database only if 'man-db' is in the profile. This allows us to skip the expensive man-db profile hook in most cases. Suggested by Liliana Marie Prikler . * guix/profiles.scm (manual-database/optional): New procedure. (%default-profile-hooks): Use it instead of 'manual-database'. * doc/guix.texi (Documentation): Add footnote about 'man -k' database creation. --- doc/guix.texi | 4 +++- guix/profiles.scm | 12 +++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index ea1973f02c..b35fb35770 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -36611,7 +36611,9 @@ $ info -k TLS @end example @noindent -The command below searches for the same keyword in man pages: +The command below searches for the same keyword in man +pages@footnote{The database searched by @command{man -k} is only created +in profiles that contain the @code{man-db} package.}: @example $ man -k TLS diff --git a/guix/profiles.scm b/guix/profiles.scm index 9f30349c69..ffdd5f57f6 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -1682,6 +1682,16 @@ the entries in MANIFEST." `((type . profile-hook) (hook . manual-database)))) +(define (manual-database/optional manifest) + "Return a derivation to build the manual database of MANIFEST, but only if +MANIFEST contains the \"man-db\" package. Otherwise, return #f." + ;; Building the man database (for "man -k") is expensive and rarely used. + ;; Build it only if the profile also contains "man-db". + (mlet %store-monad ((man-db (manifest-lookup-package manifest "man-db"))) + (if man-db + (manual-database manifest) + (return #f)))) + (define (texlive-configuration manifest) "Return a derivation that builds a TeXlive configuration for the entries in MANIFEST." @@ -1784,7 +1794,7 @@ MANIFEST." ;; This is the list of derivation-returning procedures that are called by ;; default when making a non-empty profile. (list info-dir-file - manual-database + manual-database/optional fonts-dir-file ghc-package-cache-file ca-certificate-bundle