unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: zimoun <zimon.toutoune@gmail.com>
Cc: "Jakub Kądziołka" <kuba@kadziolka.net>, 38838-done@debbugs.gnu.org
Subject: bug#38838: 'whatis' doesn't work
Date: Wed, 02 Mar 2022 00:26:13 -0500	[thread overview]
Message-ID: <87tuchj56y.fsf@gmail.com> (raw)
In-Reply-To: <CAJ3okZ3p+319_nm2p48APK0Sz24=+dwa8GYtZFmHMp=RTYknJQ@mail.gmail.com> (zimoun's message of "Mon, 6 Jan 2020 19:05:06 +0100")

Hello,

zimoun <zimon.toutoune@gmail.com> writes:

> Dear,
>
> I confirm that something appears unexpected with the command 'whatis'.
>
> Below, using Guix 3a695c01d7ee18f30f22df53f3c44dfac04017f1, and running
> `guix environment --ad-hoc man-db man-pages --pure` then let output the
> internal debugging information (option '-d'). See below.
>
> Everything seems pointing to the correct path, so maybe it should come
> from the 'index.db' file.

[...]

> I do not know if this report helps and if the index is the culprit.

You were on the right path; the database file was indeed the culprit.
This is the database, in hex, generated by man-db for a single cat.1.gz
man page:

--8<---------------cut here---------------start------------->8---
2476 6572 7369 6f6e 2400 322e 352e 3000  $version$.2.5.0.
00003010: 6361 7400 2d09 3109 3109 3136 3436 3138  cat.-.1.1.164618
00003020: 3834 3934 0939 3333 3430 3030 3430 0941  8494.933400040.A
00003030: 092d 092d 0967 7a09 636f 6e63 6174 656e  .-.-.gz.concaten
00003040: 6174 6520 6669 6c65 7320 616e 6420 7072  ate files and pr
00003050: 696e 7420 6f6e 2074 6865 2073 7461 6e64  int on the stand
00003060: 6172 6420 6f75 7470 7574 0000 0000 0000  ard output......
00003070:
--8<---------------cut here---------------end--------------->8---

while this is what Guix was generating:

--8<---------------cut here---------------start------------->8---
00000600: 2476 6572 7369 6f6e 2400 322e 352e 3000  $version$.2.5.0.
00000610: 2f74 6d70 2f67 7569 782f 6d61 6e2f 6d61  /tmp/guix/man/ma
00000620: 6e31 2f63 6174 2e31 2e67 7a00 6361 7409  n1/cat.1.gz.cat.
00000630: 3109 3109 3009 3009 4109 2d09 2d09 677a  1.1.0.0.A.-.-.gz
00000640: 0963 6f6e 6361 7465 6e61 7465 2066 696c  .concatenate fil
00000650: 6573 2061 6e64 2070 7269 6e74 206f 6e20  es and print on
00000660: 7468 6520 7374 616e 6461 7264 206f 7574  the standard out
00000670: 7075 7400 0000 0000 0000 0000 0000 0000  put.............
--8<---------------cut here---------------end--------------->8---

The entry that comes right after the 2.5.0 version is the key.  Guix was
using the file name, while man-db uses the name of the man page, such as
'cat'.

With the following change:

--8<---------------cut here---------------start------------->8---
modified   guix/man-db.scm
@@ -110,7 +110,12 @@ (define (write-mandb-database file entries)
     ;; Write ENTRIES in sorted order so we get deterministic output.
     (for-each (lambda (entry)
                 (gdbm-set! db
-                           (string-append (mandb-entry-file-name entry)
+                           ;; For the 'whatis' tool to find anything, the key
+                           ;; should match the name of the software,
+                           ;; e.g. 'cat'.  Derive it from the file name, as
+                           ;; the name could technically be #f.
+                           (string-append (abbreviate-file-name
+                                           (mandb-entry-file-name entry))
                                           "\x00")
                            (entry->string entry)))
               (sort entries mandb-entry<?))
--8<---------------cut here---------------end--------------->8---
               
I now get:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix shell --pure man-db coreutils -- whatis cat
[...]
building database for manual pages...
building profile with 2 packages...
cat (1)              - concatenate files and print on the standard output
--8<---------------cut here---------------end--------------->8---

and apropos, man seem to continue working as expected.

Pushed as deaa322963.

Closing.

Thanks for the report!

Maxim




      reply	other threads:[~2022-03-02  5:27 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-31 21:59 bug#38838: 'whatis' doesn't work Jakub Kądziołka
2020-01-06 18:05 ` zimoun
2022-03-02  5:26   ` Maxim Cournoyer [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87tuchj56y.fsf@gmail.com \
    --to=maxim.cournoyer@gmail.com \
    --cc=38838-done@debbugs.gnu.org \
    --cc=kuba@kadziolka.net \
    --cc=zimon.toutoune@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).