--- Begin Message ---
Subject: |
[PATCH] gnu: hexedit: Make F1 help more reliable |
Date: |
Sun, 19 Jan 2020 13:44:34 +0100 |
* gnu/packages/hexedit.scm (hexedit)[arguments](patch-man-path): New
phase.
[inputs]: Add MAN-DB.
---
gnu/packages/hexedit.scm | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/gnu/packages/hexedit.scm b/gnu/packages/hexedit.scm
index 39dcb2e0f7..e788c7f766 100644
--- a/gnu/packages/hexedit.scm
+++ b/gnu/packages/hexedit.scm
@@ -24,6 +24,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages man)
#:use-module (gnu packages ncurses)
#:use-module (guix download)
#:use-module (guix git-download)
@@ -43,12 +44,24 @@
(base32
"1xsxa5mip892jkvz9jshj73y6c7j3mgp8y393ciihqlyf2nmfs67"))))
(build-system gnu-build-system)
- (arguments '(#:tests? #f)) ; no check target
+ (arguments
+ `(#:tests? #f ; no check target
+ #:phases
+ (modify-phases %standard-phases
+ ;; Make F1 open the man page even if man-db is not in the profile
+ (add-after 'unpack 'patch-man-path
+ (lambda _
+ (substitute* "interact.c"
+ (("\"man\"")
+ (string-append "\"" (assoc-ref %build-inputs "man-db")
"/bin/man\""))
+ (("\"hexedit\"")
+ (string-append "\"" (assoc-ref %outputs "out")
"/share/man/man1/hexedit.1.gz\""))))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)))
(inputs
- `(("ncurses" ,ncurses)))
+ `(("ncurses" ,ncurses)
+ ("man-db" ,man-db)))
(synopsis "View and edit files or devices in hexadecimal or ASCII")
(description "hexedit shows a file both in ASCII and in hexadecimal. The
file can be a device as the file is read a piece at a time. You can modify
--
2.25.0
--- End Message ---
--- Begin Message ---
Subject: |
Re: [bug#39192] [PATCH] gnu: hexedit: Make F1 help more reliable |
Date: |
Wed, 29 Jan 2020 11:08:14 +0100 |
User-agent: |
Notmuch/0.29.3 (https://notmuchmail.org) Emacs/26.3 (x86_64-pc-linux-gnu) |
Jakub Kądziołka <address@hidden> writes:
> On Tue, Jan 28, 2020 at 12:36:04AM +0100, Marius Bakke wrote:
>> Jakub Kądziołka <address@hidden> writes:
>>
>> > * gnu/packages/hexedit.scm (hexedit)[arguments](patch-man-path): New
>> > phase.
>> > [inputs]: Add MAN-DB.
>>
>> While this change is harmless, I think we can generally expect "man" to
>> be available. Does the program crash if man-db is not installed? Or
>> does it print an actionable error message?
>>
>> In the latter case I'm inclined to leave things as-is, in the former
>> case let's patch it. But no strong opinion, mostly curious :-)
>
> Currently, the problem appears when hexedit is used in a `guix
> environment', and man-db is not specified as an input for the
> environment. In this case (assuming --pure hasn't been used), man prints
> an error message saying "no manpage for hexedit" when the user presses
> F1, but it cannot be seen until one exits hexedit. For a new user, this
> is not a trivial feat. Moreover, the error is confusing - it suggests
> that the manpage just hasn't been packaged.
Right. The problem of manpages being unavailable unless man-db is
included in the profile is not unique to hexedit. 'git foo --help' has
the same problem in a --pure environment. But at least then you get a
good error message.
> When man isn't found at all, no error message is printed, the F1 key
> just makes the screen blink. This could happen in a --pure environment.
I see, not great. Sounds like a good reason to add man-db as an input
in this case.
> In hindsight, this is something I should've explained in my first message.
> Sorry about that.
No worries, these things are difficult. :-)
Pushed in 602059e79, with a few cosmetic modifications:
diff --git a/gnu/packages/hexedit.scm b/gnu/packages/hexedit.scm
index 368a902ce3..e1a029167a 100644
--- a/gnu/packages/hexedit.scm
+++ b/gnu/packages/hexedit.scm
@@ -49,20 +49,22 @@
`(#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
- ;; Make F1 open the man page even if man-db is not in the profile
+ ;; Make F1 open the man page even if man-db is not in the profile.
(add-after 'unpack 'patch-man-path
- (lambda _
+ (lambda* (#:key inputs outputs #:allow-other-keys)
(substitute* "interact.c"
(("\"man\"")
- (string-append "\"" (assoc-ref %build-inputs "man-db")
"/bin/man\""))
+ (string-append "\"" (assoc-ref inputs "man-db") "/bin/man\""))
(("\"hexedit\"")
- (string-append "\"" (assoc-ref %outputs "out")
"/share/man/man1/hexedit.1.gz\""))))))))
+ (string-append "\"" (assoc-ref outputs "out")
+ "/share/man/man1/hexedit.1.gz\"")))
+ #t)))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)))
(inputs
- `(("ncurses" ,ncurses)
- ("man-db" ,man-db)))
+ `(("man-db" ,man-db)
+ ("ncurses" ,ncurses)))
(synopsis "View and edit files or devices in hexadecimal or ASCII")
(description "hexedit shows a file both in ASCII and in hexadecimal. The
file can be a device as the file is read a piece at a time. You can modify
signature.asc
Description: PGP signature
--- End Message ---