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.

rnhmjoj dfff4858 98607927

+42 -5
+3 -5
pkgs/tools/misc/man-db/default.nix
··· 15 buildInputs = [ libpipeline db groff ]; # (Yes, 'groff' is both native and build input) 16 checkInputs = [ libiconv /* for 'iconv' binary */ ]; 17 18 postPatch = '' 19 # Remove all mandatory manpaths. Nixpkgs makes no requirements on 20 # these directories existing. 21 sed -i 's/^MANDATORY_MANPATH/# &/' src/man_db.conf.in 22 23 - # Add Nixpkgs and NixOS-related manpaths 24 - echo "MANPATH_MAP /run/current-system/sw/bin /run/current-system/sw/share/man" >> src/man_db.conf.in 25 - echo "MANPATH_MAP /run/wrappers/bin /run/current-system/sw/share/man" >> src/man_db.conf.in 26 echo "MANPATH_MAP /nix/var/nix/profiles/default/bin /nix/var/nix/profiles/default/share/man" >> src/man_db.conf.in 27 28 # Add mandb locations for the above 29 - echo "MANDB_MAP /run/current-system/sw/share/man /var/cache/man/nixos" >> src/man_db.conf.in 30 echo "MANDB_MAP /nix/var/nix/profiles/default/share/man /var/cache/man/nixpkgs" >> src/man_db.conf.in 31 ''; 32 ··· 34 "--disable-setuid" 35 "--disable-cache-owner" 36 "--localstatedir=/var" 37 - # Don't try /etc/man_db.conf by default, so we avoid error messages. 38 "--with-config-file=${placeholder "out"}/etc/man_db.conf" 39 "--with-systemdtmpfilesdir=${placeholder "out"}/lib/tmpfiles.d" 40 "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
··· 15 buildInputs = [ libpipeline db groff ]; # (Yes, 'groff' is both native and build input) 16 checkInputs = [ libiconv /* for 'iconv' binary */ ]; 17 18 + patches = [ ./systemwide-man-db-conf.patch ]; 19 + 20 postPatch = '' 21 # Remove all mandatory manpaths. Nixpkgs makes no requirements on 22 # these directories existing. 23 sed -i 's/^MANDATORY_MANPATH/# &/' src/man_db.conf.in 24 25 + # Add Nix-related manpaths 26 echo "MANPATH_MAP /nix/var/nix/profiles/default/bin /nix/var/nix/profiles/default/share/man" >> src/man_db.conf.in 27 28 # Add mandb locations for the above 29 echo "MANDB_MAP /nix/var/nix/profiles/default/share/man /var/cache/man/nixpkgs" >> src/man_db.conf.in 30 ''; 31 ··· 33 "--disable-setuid" 34 "--disable-cache-owner" 35 "--localstatedir=/var" 36 "--with-config-file=${placeholder "out"}/etc/man_db.conf" 37 "--with-systemdtmpfilesdir=${placeholder "out"}/lib/tmpfiles.d" 38 "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
+39
pkgs/tools/misc/man-db/systemwide-man-db-conf.patch
···
··· 1 + commit 9089291006a4258c39c75a920ad536b61504251a 2 + Author: rnhmjoj <rnhmjoj@inventati.org> 3 + Date: Fri May 1 19:32:15 2020 +0200 4 + 5 + check for systemwide man_db.conf before the bundled one 6 + 7 + diff --git a/src/manp.c b/src/manp.c 8 + index 5441339..0bbf566 100644 9 + --- a/src/manp.c 10 + +++ b/src/manp.c 11 + @@ -841,18 +841,24 @@ void read_config_file (bool optional) 12 + } 13 + 14 + if (getenv ("MAN_TEST_DISABLE_SYSTEM_CONFIG") == NULL) { 15 + - config_file = fopen (CONFIG_FILE, "r"); 16 + + const char *config_filepath; 17 + + if (access ("/etc/man_db.conf", F_OK) != -1) { 18 + + config_filepath = "/etc/man_db.conf"; 19 + + } else { 20 + + config_filepath = CONFIG_FILE; 21 + + } 22 + + config_file = fopen (config_filepath, "r"); 23 + if (config_file == NULL) { 24 + if (optional) 25 + debug ("can't open %s; continuing anyway\n", 26 + - CONFIG_FILE); 27 + + config_filepath); 28 + else 29 + error (FAIL, 0, 30 + _("can't open the manpath " 31 + "configuration file %s"), 32 + - CONFIG_FILE); 33 + + config_filepath); 34 + } else { 35 + - debug ("From the config file %s:\n", CONFIG_FILE); 36 + + debug ("From the config file %s:\n", config_filepath); 37 + 38 + add_to_dirlist (config_file, 0); 39 + fclose (config_file);