Subject: bug#39192: closed (Re: [bug#39192] [PATCH] gnu: hexedit: Make F1 help more reliable)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 29 Jan 2020 10:09:02 +0000

Your bug report

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

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
39192: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=39192
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug#39192] [PATCH] gnu: hexedit: Make F1 help more reliable
From: Marius Bakke <[email-masked]>
To: Jakub Kądziołka <[email-masked]>
Cc: [email-masked]
Date: Wed, 29 Jan 2020 11:08:14 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Jakub Kądziołka <[email-masked]> writes:

> On Tue, Jan 28, 2020 at 12:36:04AM +0100, Marius Bakke wrote:
>> Jakub Kądziołka <[email-masked]> 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

Subject: [PATCH] gnu: hexedit: Make F1 help more reliable
From: Jakub Kądziołka <[email-masked]>
To: [email-masked]
Date: Sun, 19 Jan 2020 13:44:34 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

* 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