GNU bug report logs -
#65745
[PATCH] gnu: yelp: Provide dependencies to display "man:" URIs.
Previous Next
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Mon, 4 Sep 2023 21:00:01 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 65745 in the body.
You can then email your comments to 65745 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
liliana.prikler <at> gmail.com, maxim.cournoyer <at> gmail.com, rg <at> raghavgururajan.name, guix-patches <at> gnu.org
:
bug#65745
; Package
guix-patches
.
(Mon, 04 Sep 2023 21:00:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Ludovic Courtès <ludo <at> gnu.org>
:
New bug report received and forwarded. Copy sent to
liliana.prikler <at> gmail.com, maxim.cournoyer <at> gmail.com, rg <at> raghavgururajan.name, guix-patches <at> gnu.org
.
(Mon, 04 Sep 2023 21:00:01 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Previously a command like the following one would fail to display the
expected man page:
guix shell yelp coreutils man-db -C \
--expose=/tmp/.X11-unix --expose=/run/user \
--expose=/var/run/dbus --expose=/etc/machine-id \
-E ^DISPLAY -- yelp man:ls
* gnu/packages/gnome.scm (yelp)[arguments]: New field.
[inputs]: Add 'man-db' and its "groff-minimal" input.
Reported-by: Luis Felipe <sirgazil <at> zoho.com>
---
gnu/packages/gnome.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
Hi!
Initially I wanted to fix support for URLs like “info:coreutils”,
which Luis also reported on the Fediverse as being broken. However,
after much debugging I got lost in a maze of callbacks and threads
and opaque objects and eventually gave up. Someone™ should take
another look.
For the record, this is how I went on my debugging journey:
guix shell yelp coreutils man-db info-reader \
--with-debug-info=yelp gdb --pure -E ^DISPLAY -- \
gdb --args /bin/sh yelp info:coreutils
Ludo’.
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 3b80692e90..894d77d7ba 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -7336,6 +7336,31 @@ (define-public yelp
(base32
"0h9vf4fx056imjf8ibmn03wg1c3hniipy1nsm2jqi62lp1m19c95"))))
(build-system glib-or-gtk-build-system)
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-man-file-name
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Create a wrapper for 'man' that knows where to find
+ ;; 'groff' and 'gunzip'.
+ (define libexecdir
+ (string-append #$output "/libexec/yelp"))
+ (define wrapper
+ (string-append libexecdir "/man"))
+
+ (mkdir-p libexecdir)
+ (symlink (search-input-file inputs "bin/man") wrapper)
+ (wrap-program wrapper
+ `("PATH" ":" =
+ ,(map (lambda (program)
+ (dirname (search-input-file inputs program)))
+ '("bin/groff" "bin/gunzip"))))
+
+ ;; Have Yelp use that 'man' wrapper instead of searching
+ ;; for 'man' in $PATH.
+ (substitute* "libyelp/yelp-man-parser.c"
+ (("\"man\"")
+ (string-append "\"" wrapper "\""))))))))
(native-inputs
(list `(,glib "bin") ; for glib-genmarshal, etc.
intltool
@@ -7347,6 +7372,8 @@ (define-public yelp
(list gsettings-desktop-schemas
libhandy
libxslt
+ man-db ;for URIs like "man:ls"
+ (lookup-package-input man-db "groff-minimal") ;ditto
sqlite
webkitgtk
yelp-xsl))
base-commit: 1af35bbb25b122cafddfd2f69b644d46c4beff85
--
2.41.0
Information forwarded
to
guix-patches <at> gnu.org
:
bug#65745
; Package
guix-patches
.
(Tue, 05 Sep 2023 03:44:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 65745 <at> debbugs.gnu.org (full text, mbox):
Hello,
Ludovic Courtès <ludo <at> gnu.org> writes:
[...]
> diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
> index 3b80692e90..894d77d7ba 100644
> --- a/gnu/packages/gnome.scm
> +++ b/gnu/packages/gnome.scm
> @@ -7336,6 +7336,31 @@ (define-public yelp
> (base32
> "0h9vf4fx056imjf8ibmn03wg1c3hniipy1nsm2jqi62lp1m19c95"))))
> (build-system glib-or-gtk-build-system)
> + (arguments
> + (list #:phases
> + #~(modify-phases %standard-phases
> + (add-after 'unpack 'set-man-file-name
> + (lambda* (#:key inputs outputs #:allow-other-keys)
> + ;; Create a wrapper for 'man' that knows where to find
> + ;; 'groff' and 'gunzip'.
> + (define libexecdir
> + (string-append #$output "/libexec/yelp"))
> + (define wrapper
> + (string-append libexecdir "/man"))
> +
> + (mkdir-p libexecdir)
> + (symlink (search-input-file inputs "bin/man") wrapper)
> + (wrap-program wrapper
> + `("PATH" ":" =
> + ,(map (lambda (program)
> + (dirname (search-input-file inputs program)))
> + '("bin/groff" "bin/gunzip"))))
> +
> + ;; Have Yelp use that 'man' wrapper instead of searching
> + ;; for 'man' in $PATH.
> + (substitute* "libyelp/yelp-man-parser.c"
> + (("\"man\"")
> + (string-append "\"" wrapper "\""))))))))
Couldn't we more simply wrap the yelp command with the 'man', 'groff' and
'gunzip' command locations added to PATH?
--
Thanks,
Maxim
Information forwarded
to
guix-patches <at> gnu.org
:
bug#65745
; Package
guix-patches
.
(Sat, 09 Sep 2023 16:46:02 GMT)
Full text and
rfc822 format available.
Message #11 received at 65745 <at> debbugs.gnu.org (full text, mbox):
Hi,
Maxim Cournoyer <maxim.cournoyer <at> gmail.com> skribis:
>> + ;; Create a wrapper for 'man' that knows where to find
>> + ;; 'groff' and 'gunzip'.
>> + (define libexecdir
>> + (string-append #$output "/libexec/yelp"))
>> + (define wrapper
>> + (string-append libexecdir "/man"))
>> +
>> + (mkdir-p libexecdir)
>> + (symlink (search-input-file inputs "bin/man") wrapper)
>> + (wrap-program wrapper
>> + `("PATH" ":" =
>> + ,(map (lambda (program)
>> + (dirname (search-input-file inputs program)))
>> + '("bin/groff" "bin/gunzip"))))
>> +
>> + ;; Have Yelp use that 'man' wrapper instead of searching
>> + ;; for 'man' in $PATH.
>> + (substitute* "libyelp/yelp-man-parser.c"
>> + (("\"man\"")
>> + (string-append "\"" wrapper "\""))))))))
>
> Couldn't we more simply wrap the yelp command with the 'man', 'groff' and
> 'gunzip' command locations added to PATH?
Yeah it’s convoluted; the idea was that the wrapper for ‘man’ is
something that should be fixed in ‘man-db’ proper but that we cannot fix
in ‘master’ because ‘man-db’ has too many dependents.
Maybe I should start with it though…
Ludo’.
Information forwarded
to
guix-patches <at> gnu.org
:
bug#65745
; Package
guix-patches
.
(Sat, 09 Sep 2023 16:57:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 65745 <at> debbugs.gnu.org (full text, mbox):
Am Samstag, dem 09.09.2023 um 18:45 +0200 schrieb Ludovic Courtès:
> Hi,
>
> Maxim Cournoyer <maxim.cournoyer <at> gmail.com> skribis:
>
> > > + ;; Create a wrapper for 'man' that knows
> > > where to find
> > > + ;; 'groff' and 'gunzip'.
> > > + (define libexecdir
> > > + (string-append #$output "/libexec/yelp"))
> > > + (define wrapper
> > > + (string-append libexecdir "/man"))
> > > +
> > > + (mkdir-p libexecdir)
> > > + (symlink (search-input-file inputs "bin/man")
> > > wrapper)
> > > + (wrap-program wrapper
> > > + `("PATH" ":" =
> > > + ,(map (lambda (program)
> > > + (dirname (search-input-file
> > > inputs program)))
> > > + '("bin/groff" "bin/gunzip"))))
> > > +
> > > + ;; Have Yelp use that 'man' wrapper instead
> > > of searching
> > > + ;; for 'man' in $PATH.
> > > + (substitute* "libyelp/yelp-man-parser.c"
> > > + (("\"man\"")
> > > + (string-append "\"" wrapper "\""))))))))
> >
> > Couldn't we more simply wrap the yelp command with the 'man',
> > 'groff' and
> > 'gunzip' command locations added to PATH?
>
> Yeah it’s convoluted; the idea was that the wrapper for ‘man’ is
> something that should be fixed in ‘man-db’ proper but that we cannot
> fix
> in ‘master’ because ‘man-db’ has too many dependents.
>
> Maybe I should start with it though…
Can we graft our man-db to get the same effect?
Information forwarded
to
guix-patches <at> gnu.org
:
bug#65745
; Package
guix-patches
.
(Sat, 09 Sep 2023 22:07:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 65745 <at> debbugs.gnu.org (full text, mbox):
Hi,
Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:
> Am Samstag, dem 09.09.2023 um 18:45 +0200 schrieb Ludovic Courtès:
>> Hi,
>>
>> Maxim Cournoyer <maxim.cournoyer <at> gmail.com> skribis:
>>
>> > > + ;; Create a wrapper for 'man' that knows
>> > > where to find
>> > > + ;; 'groff' and 'gunzip'.
>> > > + (define libexecdir
>> > > + (string-append #$output "/libexec/yelp"))
>> > > + (define wrapper
>> > > + (string-append libexecdir "/man"))
>> > > +
>> > > + (mkdir-p libexecdir)
>> > > + (symlink (search-input-file inputs "bin/man")
>> > > wrapper)
>> > > + (wrap-program wrapper
>> > > + `("PATH" ":" =
>> > > + ,(map (lambda (program)
>> > > + (dirname (search-input-file
>> > > inputs program)))
>> > > + '("bin/groff" "bin/gunzip"))))
>> > > +
>> > > + ;; Have Yelp use that 'man' wrapper instead
>> > > of searching
>> > > + ;; for 'man' in $PATH.
>> > > + (substitute* "libyelp/yelp-man-parser.c"
>> > > + (("\"man\"")
>> > > + (string-append "\"" wrapper "\""))))))))
>> >
>> > Couldn't we more simply wrap the yelp command with the 'man',
>> > 'groff' and
>> > 'gunzip' command locations added to PATH?
>>
>> Yeah it’s convoluted; the idea was that the wrapper for ‘man’ is
>> something that should be fixed in ‘man-db’ proper but that we cannot
>> fix
>> in ‘master’ because ‘man-db’ has too many dependents.
>>
>> Maybe I should start with it though…
> Can we graft our man-db to get the same effect?
We also have a core-updates branch; it could go there and we could merge
it with the docbook stuff that's going to go there.
I'd prefer this than convoluted solutions I don't understand :-).
--
Thanks,
Maxim
Information forwarded
to
liliana.prikler <at> gmail.com, maxim.cournoyer <at> gmail.com, rg <at> raghavgururajan.name, guix-patches <at> gnu.org
:
bug#65745
; Package
guix-patches
.
(Mon, 11 Sep 2023 09:10:01 GMT)
Full text and
rfc822 format available.
Message #20 received at 65745 <at> debbugs.gnu.org (full text, mbox):
Previously a command like the following one would fail to display the
expected man page:
guix shell yelp coreutils -C \
--expose=/tmp/.X11-unix --expose=/run/user \
--expose=/var/run/dbus --expose=/etc/machine-id -E ^DISPLAY -- \
/bin/sh -c \
'export MANPATH=$GUIX_ENVIRONMENT/share/man; echo $MANPATH; yelp man:ls'
* gnu/packages/gnome.scm (yelp)[arguments]: New field.
[inputs]: Add ‘man-db’ and ‘groff-minimal’.
Reported-by: Luis Felipe <sirgazil <at> zoho.com>
---
gnu/packages/gnome.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
Hi!
Here's an improved and more reasonable version.
There's still an issue we should fix in 'man-db' but I ran out of time before
I could find the remaining place where 'man' searches for 'groff' in $PATH.
Ludo'.
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 3b80692e90..36fe1a80a1 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -142,6 +142,7 @@ (define-module (gnu packages gnome)
#:use-module (gnu packages geo)
#:use-module (gnu packages gperf)
#:use-module (gnu packages graphviz)
+ #:use-module (gnu packages groff)
#:use-module (gnu packages gstreamer)
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
@@ -7336,6 +7337,28 @@ (define-public yelp
(base32
"0h9vf4fx056imjf8ibmn03wg1c3hniipy1nsm2jqi62lp1m19c95"))))
(build-system glib-or-gtk-build-system)
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-man-file-name
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Invoke 'man' directly instead of searching $PATH.
+ (substitute* '("libyelp/yelp-man-parser.c"
+ "libyelp/yelp-uri.c")
+ (("\"man\"")
+ (string-append "\""
+ (search-input-file inputs "bin/man")
+ "\""))
+ (("G_SPAWN_SEARCH_PATH")
+ "0"))))
+ (add-after 'install 'help-man-find-its-dependencies
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; XXX: Currently 'man' looks for 'groff' in $PATH in one
+ ;; case. This should be fixed in 'man-db' proper.
+ (wrap-program (string-append (assoc-ref outputs "out")
+ "/bin/yelp")
+ `("PATH" ":" prefix
+ (,(dirname (search-input-file inputs "bin/groff"))))))))))
(native-inputs
(list `(,glib "bin") ; for glib-genmarshal, etc.
intltool
@@ -7347,6 +7370,8 @@ (define-public yelp
(list gsettings-desktop-schemas
libhandy
libxslt
+ man-db ;for URIs like "man:ls"
+ groff-minimal ;ditto
sqlite
webkitgtk
yelp-xsl))
base-commit: a4c35c607cfd7d6b0bad90cfcc46188d489e1754
--
2.41.0
Information forwarded
to
guix-patches <at> gnu.org
:
bug#65745
; Package
guix-patches
.
(Mon, 11 Sep 2023 14:14:01 GMT)
Full text and
rfc822 format available.
Message #23 received at 65745 <at> debbugs.gnu.org (full text, mbox):
Hi Ludo,
Ludovic Courtès <ludo <at> gnu.org> writes:
[...]
> Here's an improved and more reasonable version.
>
> There's still an issue we should fix in 'man-db' but I ran out of time before
> I could find the remaining place where 'man' searches for 'groff' in $PATH.
> diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
> index 3b80692e90..36fe1a80a1 100644
> --- a/gnu/packages/gnome.scm
> +++ b/gnu/packages/gnome.scm
> @@ -142,6 +142,7 @@ (define-module (gnu packages gnome)
> #:use-module (gnu packages geo)
> #:use-module (gnu packages gperf)
> #:use-module (gnu packages graphviz)
> + #:use-module (gnu packages groff)
> #:use-module (gnu packages gstreamer)
> #:use-module (gnu packages gtk)
> #:use-module (gnu packages guile)
> @@ -7336,6 +7337,28 @@ (define-public yelp
> (base32
> "0h9vf4fx056imjf8ibmn03wg1c3hniipy1nsm2jqi62lp1m19c95"))))
> (build-system glib-or-gtk-build-system)
> + (arguments
> + (list #:phases
> + #~(modify-phases %standard-phases
> + (add-after 'unpack 'set-man-file-name
> + (lambda* (#:key inputs #:allow-other-keys)
> + ;; Invoke 'man' directly instead of searching $PATH.
> + (substitute* '("libyelp/yelp-man-parser.c"
> + "libyelp/yelp-uri.c")
> + (("\"man\"")
> + (string-append "\""
> + (search-input-file inputs "bin/man")
> + "\""))
> + (("G_SPAWN_SEARCH_PATH")
> + "0"))))
> + (add-after 'install 'help-man-find-its-dependencies
> + (lambda* (#:key inputs outputs #:allow-other-keys)
> + ;; XXX: Currently 'man' looks for 'groff' in $PATH in one
> + ;; case. This should be fixed in 'man-db' proper.
> + (wrap-program (string-append (assoc-ref outputs "out")
> + "/bin/yelp")
> + `("PATH" ":" prefix
> + (,(dirname (search-input-file inputs "bin/groff"))))))))))
> (native-inputs
> (list `(,glib "bin") ; for glib-genmarshal, etc.
> intltool
> @@ -7347,6 +7370,8 @@ (define-public yelp
> (list gsettings-desktop-schemas
> libhandy
> libxslt
> + man-db ;for URIs like "man:ls"
> + groff-minimal ;ditto
> sqlite
> webkitgtk
> yelp-xsl))
This v2 LGTM! Thanks for the fix.
--
Thanks,
Maxim
Information forwarded
to
guix-patches <at> gnu.org
:
bug#65745
; Package
guix-patches
.
(Mon, 11 Sep 2023 17:17:02 GMT)
Full text and
rfc822 format available.
Message #26 received at 65745 <at> debbugs.gnu.org (full text, mbox):
Am Montag, dem 11.09.2023 um 10:13 -0400 schrieb Maxim Cournoyer:
> Hi Ludo,
>
> Ludovic Courtès <ludo <at> gnu.org> writes:
>
> [...]
>
> > Here's an improved and more reasonable version.
> >
> > There's still an issue we should fix in 'man-db' but I ran out of
> > time before
> > I could find the remaining place where 'man' searches for 'groff'
> > in $PATH.
>
>
> > diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
> > index 3b80692e90..36fe1a80a1 100644
> > --- a/gnu/packages/gnome.scm
> > +++ b/gnu/packages/gnome.scm
> > @@ -142,6 +142,7 @@ (define-module (gnu packages gnome)
> > #:use-module (gnu packages geo)
> > #:use-module (gnu packages gperf)
> > #:use-module (gnu packages graphviz)
> > + #:use-module (gnu packages groff)
> > #:use-module (gnu packages gstreamer)
> > #:use-module (gnu packages gtk)
> > #:use-module (gnu packages guile)
> > @@ -7336,6 +7337,28 @@ (define-public yelp
> > (base32
> >
> > "0h9vf4fx056imjf8ibmn03wg1c3hniipy1nsm2jqi62lp1m19c95"))))
> > (build-system glib-or-gtk-build-system)
> > + (arguments
> > + (list #:phases
> > + #~(modify-phases %standard-phases
> > + (add-after 'unpack 'set-man-file-name
> > + (lambda* (#:key inputs #:allow-other-keys)
> > + ;; Invoke 'man' directly instead of searching
> > $PATH.
> > + (substitute* '("libyelp/yelp-man-parser.c"
> > + "libyelp/yelp-uri.c")
> > + (("\"man\"")
> > + (string-append "\""
> > + (search-input-file inputs
> > "bin/man")
> > + "\""))
> > + (("G_SPAWN_SEARCH_PATH")
> > + "0"))))
> > + (add-after 'install 'help-man-find-its-dependencies
> > + (lambda* (#:key inputs outputs #:allow-other-
> > keys)
> > + ;; XXX: Currently 'man' looks for 'groff' in
> > $PATH in one
> > + ;; case. This should be fixed in 'man-db'
> > proper.
> > + (wrap-program (string-append (assoc-ref outputs
> > "out")
> > + "/bin/yelp")
> > + `("PATH" ":" prefix
> > + (,(dirname (search-input-file inputs
> > "bin/groff"))))))))))
> > (native-inputs
> > (list `(,glib "bin") ; for glib-genmarshal, etc.
> > intltool
> > @@ -7347,6 +7370,8 @@ (define-public yelp
> > (list gsettings-desktop-schemas
> > libhandy
> > libxslt
> > + man-db ;for URIs like
> > "man:ls"
> > + groff-minimal ;ditto
> > sqlite
> > webkitgtk
> > yelp-xsl))
>
> This v2 LGTM! Thanks for the fix.
Also LGTM
Reply sent
to
Ludovic Courtès <ludo <at> gnu.org>
:
You have taken responsibility.
(Mon, 11 Sep 2023 21:57:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Ludovic Courtès <ludo <at> gnu.org>
:
bug acknowledged by developer.
(Mon, 11 Sep 2023 21:57:02 GMT)
Full text and
rfc822 format available.
Message #31 received at 65745-done <at> debbugs.gnu.org (full text, mbox):
Pushed, thanks!
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Tue, 10 Oct 2023 11:24:10 GMT)
Full text and
rfc822 format available.
This bug report was last modified 1 year and 236 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.