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
prev parent 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).