diff mbox series

[bug#39192] gnu: hexedit: Make F1 help more reliable

Message ID 20200119124434.aatfpdm6ihiig354@zdrowyportier.kadziolka.net
State Accepted
Headers show
Series [bug#39192] gnu: hexedit: Make F1 help more reliable | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job

Commit Message

Maja Kądziołka Jan. 19, 2020, 12:44 p.m. UTC
* 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(-)

Comments

Marius Bakke Jan. 27, 2020, 11:36 p.m. UTC | #1
Jakub Kądziołka <kuba@kadziolka.net> 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 :-)
Maja Kądziołka Jan. 28, 2020, 7:36 a.m. UTC | #2
On Tue, Jan 28, 2020 at 12:36:04AM +0100, Marius Bakke wrote:
> Jakub Kądziołka <kuba@kadziolka.net> 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.

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.

In hindsight, this is something I should've explained in my first message.
Sorry about that.
diff mbox series

Patch

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