man-db: remove NixOS-specific configuration

When using --with-config-file, all man-db programs completely ignore the
systemwide configuration in /etc/man_db.conf: it means on NixOS there is
no way to change the configuration without rebuilding man-db, which in
turn causes a mass-rebuild.

To solve this problem this commit removes the NixOS-specific
configuration in man-db, which wasn't the appropriate place to begin
with: the package is expected to work on non-NixOS systems as well. Also
a small patch now ensure /etc/man_db.conf is used, if available, before
the bundled configuration.
This commit is contained in:
rnhmjoj 2020-05-01 18:34:18 +02:00
parent 986079275b
commit dfff485819
No known key found for this signature in database
GPG key ID: BFBAF4C975F76450
2 changed files with 42 additions and 5 deletions

View file

@ -15,18 +15,17 @@ stdenv.mkDerivation rec {
buildInputs = [ libpipeline db groff ]; # (Yes, 'groff' is both native and build input)
checkInputs = [ libiconv /* for 'iconv' binary */ ];
patches = [ ./systemwide-man-db-conf.patch ];
postPatch = ''
# Remove all mandatory manpaths. Nixpkgs makes no requirements on
# these directories existing.
sed -i 's/^MANDATORY_MANPATH/# &/' src/man_db.conf.in
# Add Nixpkgs and NixOS-related manpaths
echo "MANPATH_MAP /run/current-system/sw/bin /run/current-system/sw/share/man" >> src/man_db.conf.in
echo "MANPATH_MAP /run/wrappers/bin /run/current-system/sw/share/man" >> src/man_db.conf.in
# Add Nix-related manpaths
echo "MANPATH_MAP /nix/var/nix/profiles/default/bin /nix/var/nix/profiles/default/share/man" >> src/man_db.conf.in
# Add mandb locations for the above
echo "MANDB_MAP /run/current-system/sw/share/man /var/cache/man/nixos" >> src/man_db.conf.in
echo "MANDB_MAP /nix/var/nix/profiles/default/share/man /var/cache/man/nixpkgs" >> src/man_db.conf.in
'';
@ -34,7 +33,6 @@ stdenv.mkDerivation rec {
"--disable-setuid"
"--disable-cache-owner"
"--localstatedir=/var"
# Don't try /etc/man_db.conf by default, so we avoid error messages.
"--with-config-file=${placeholder "out"}/etc/man_db.conf"
"--with-systemdtmpfilesdir=${placeholder "out"}/lib/tmpfiles.d"
"--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"

View file

@ -0,0 +1,39 @@
commit 9089291006a4258c39c75a920ad536b61504251a
Author: rnhmjoj <rnhmjoj@inventati.org>
Date: Fri May 1 19:32:15 2020 +0200
check for systemwide man_db.conf before the bundled one
diff --git a/src/manp.c b/src/manp.c
index 5441339..0bbf566 100644
--- a/src/manp.c
+++ b/src/manp.c
@@ -841,18 +841,24 @@ void read_config_file (bool optional)
}
if (getenv ("MAN_TEST_DISABLE_SYSTEM_CONFIG") == NULL) {
- config_file = fopen (CONFIG_FILE, "r");
+ const char *config_filepath;
+ if (access ("/etc/man_db.conf", F_OK) != -1) {
+ config_filepath = "/etc/man_db.conf";
+ } else {
+ config_filepath = CONFIG_FILE;
+ }
+ config_file = fopen (config_filepath, "r");
if (config_file == NULL) {
if (optional)
debug ("can't open %s; continuing anyway\n",
- CONFIG_FILE);
+ config_filepath);
else
error (FAIL, 0,
_("can't open the manpath "
"configuration file %s"),
- CONFIG_FILE);
+ config_filepath);
} else {
- debug ("From the config file %s:\n", CONFIG_FILE);
+ debug ("From the config file %s:\n", config_filepath);
add_to_dirlist (config_file, 0);
fclose (config_file);