git package misses man pages

  • Done
  • quality assurance status badge
Details
3 participants
  • Andreas Enge
  • Leo Famulari
  • Ludovic Courtès
Owner
unassigned
Submitted by
Andreas Enge
Severity
normal

Debbugs page

Andreas Enge wrote 9 years ago
(address . bug-guix@gnu.org)
20160729124623.GA31006@solar
Hello,

wondering why "git log --help" does not work, I thought that maybe there
was a different doc output. But the man pages are actually hidden in a
separate package called "git-manpages". This is surprising for the user.
Also, the resulting package is quite small with only 2.3 MB.

The reason for the separate package is given as this:
;; Granted, we could build the man pages from the 'git' package itself,
;; which contains the real source. However, it would add a dependency on a
;; full XML tool chain, and building it actually takes ages. So we use this
;; lazy approach.
Building will most of the time happen on the build farm, so the time it
takes should not be an issue. I suppose that the xml tool chain will only
be a native and not a normal input, so it should not be too much of a problem.

I suggest to include the man pages into the git package itself. If building
them is a real issue, adding a source and the build phase of git-manpages
to the git package itself could also be an option.

Thanks!

Andreas
Leo Famulari wrote 9 years ago
(name . Andreas Enge)(address . andreas@enge.fr)(address . 24105@debbugs.gnu.org)
20160729171059.GA14354@jasmine
On Fri, Jul 29, 2016 at 02:46:23PM +0200, Andreas Enge wrote:
Toggle quote (2 lines)
> Also, the resulting package is quite small with only 2.3 MB.

Not much, considering how often I consult these manpages.

Toggle quote (9 lines)
> The reason for the separate package is given as this:
> ;; Granted, we could build the man pages from the 'git' package itself,
> ;; which contains the real source. However, it would add a dependency on a
> ;; full XML tool chain, and building it actually takes ages. So we use this
> ;; lazy approach.
> Building will most of the time happen on the build farm, so the time it
> takes should not be an issue. I suppose that the xml tool chain will only
> be a native and not a normal input, so it should not be too much of a problem.

Our git-manpages package doesn't build the manpages from source anyways.
It simply unpacks a tarball of pre-built manpages.

Toggle quote (4 lines)
> I suggest to include the man pages into the git package itself. If building
> them is a real issue, adding a source and the build phase of git-manpages
> to the git package itself could also be an option.

I agree. If we continue to not build them from source, it won't make the
Git package any more "expensive". We could add the pre-built source
tarball as a native-input to the Git package, and re-use the unpack
phase from git-manpages.

I think the current arrangement offers a bad experience for new users
who can't find the manpages.
Ludovic Courtès wrote 9 years ago
(name . Leo Famulari)(address . leo@famulari.name)
87vaznb5my.fsf@gnu.org
Leo Famulari <leo@famulari.name> skribis:

Toggle quote (2 lines)
> On Fri, Jul 29, 2016 at 02:46:23PM +0200, Andreas Enge wrote:

[...]

Toggle quote (9 lines)
>> I suggest to include the man pages into the git package itself. If building
>> them is a real issue, adding a source and the build phase of git-manpages
>> to the git package itself could also be an option.
>
> I agree. If we continue to not build them from source, it won't make the
> Git package any more "expensive". We could add the pre-built source
> tarball as a native-input to the Git package, and re-use the unpack
> phase from git-manpages.

I agree too, this sounds like a good idea.

Thanks,
Ludo’.
Leo Famulari wrote 9 years ago
(name . Ludovic Courtès)(address . ludo@gnu.org)
20160809190302.GA13796@jasmine
On Sat, Jul 30, 2016 at 03:46:29PM +0200, Ludovic Court�s wrote:
Toggle quote (17 lines)
> Leo Famulari <leo@famulari.name> skribis:
>
> > On Fri, Jul 29, 2016 at 02:46:23PM +0200, Andreas Enge wrote:
>
> [...]
>
> >> I suggest to include the man pages into the git package itself. If building
> >> them is a real issue, adding a source and the build phase of git-manpages
> >> to the git package itself could also be an option.
> >
> > I agree. If we continue to not build them from source, it won't make the
> > Git package any more "expensive". We could add the pre-built source
> > tarball as a native-input to the Git package, and re-use the unpack
> > phase from git-manpages.
>
> I agree too, this sounds like a good idea.

I've attached a patch. Your thoughts?
From 2407216eac19e5a7a3376efc497f7047dc0c8299 Mon Sep 17 00:00:00 2001
From: Leo Famulari <leo@famulari.name>
Date: Tue, 9 Aug 2016 14:55:37 -0400
Subject: [PATCH] gnu: git: Provide man-pages in main Git package.

* gnu/packages/version-control.scm (git-manpages): Remove variable.
(git)[native-inputs]: Add GIT-MANPAGES.
[arguments]: Add 'install-man-pages' phase.
---
gnu/packages/version-control.scm | 69 ++++++++++++----------------------------
1 file changed, 20 insertions(+), 49 deletions(-)

Toggle diff (110 lines)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 767715d..dd0195d 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -9,6 +9,7 @@
;;; Copyright � 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright � 2015 Kyle Meyer <kyle@kyleam.com>
;;; Copyright � 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright � 2016 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -110,7 +111,6 @@ as well as the classic centralized workflow.")
(license gpl2+)))
(define-public git
- ;; Keep in sync with 'git-manpages'!
(package
(name "git")
(version "2.9.2")
@@ -124,7 +124,16 @@ as well as the classic centralized workflow.")
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
- ("gettext" ,gnu-gettext)))
+ ("gettext" ,gnu-gettext)
+ ("git-manpages"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://kernel.org/software/scm/git/git-manpages-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "08y38w6yfvrpgj10dl3vghp05xjpl8jj37kkfna2nhf0wip52p2c"))))))
(inputs
`(("curl" ,curl)
("expat" ,expat)
@@ -260,7 +269,15 @@ as well as the classic centralized workflow.")
;; specify a single directory, not a search path.
(wrap-program (string-append out "/bin/git")
`("PATH" ":" prefix
- ("$HOME/.guix-profile/libexec/git-core")))))))))
+ ("$HOME/.guix-profile/libexec/git-core"))))))
+ (add-after 'split 'install-man-pages
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (man (string-append out "/share/man"))
+ (manpages (assoc-ref inputs "git-manpages")))
+ (mkdir-p man)
+ (with-directory-excursion man
+ (zero? (system* "tar" "xvf" manpages)))))))))
(native-search-paths
;; For HTTPS access, Git needs a single-file certificate bundle, specified
@@ -278,52 +295,6 @@ everything from small to very large projects with speed and efficiency.")
(license gpl2)
(home-page "http://git-scm.com/")))
-(define-public git-manpages
- ;; Keep in sync with 'git'!
-
- ;; Granted, we could build the man pages from the 'git' package itself,
- ;; which contains the real source. However, it would add a dependency on a
- ;; full XML tool chain, and building it actually takes ages. So we use this
- ;; lazy approach.
- (package
- (name "git-manpages")
- (version (package-version git))
- (source (origin
- (method url-fetch)
- (uri (string-append
- "mirror://kernel.org/software/scm/git/git-manpages-"
- version ".tar.xz"))
- (sha256
- (base32
- "08y38w6yfvrpgj10dl3vghp05xjpl8jj37kkfna2nhf0wip52p2c"))))
- (build-system trivial-build-system)
- (arguments
- '(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
-
- (let* ((xz (assoc-ref %build-inputs "xz"))
- (tar (assoc-ref %build-inputs "tar"))
- (out (assoc-ref %outputs "out"))
- (man (string-append out "/share/man")))
- (setenv "PATH" (string-append tar "/bin:" xz "/bin"))
-
- (mkdir-p man)
- (with-directory-excursion man
- (zero? (system* "tar" "xvf"
- (assoc-ref %build-inputs "source"))))))))
-
- (native-inputs `(("tar" ,tar)
- ("xz" ,xz)))
- (home-page (package-home-page git))
- (license (package-license git))
- (synopsis "Man pages of the Git version control system")
- (description
- "This package provides the man pages of the Git version control system.
-This is the documentation displayed when using the '--help' option of a 'git'
-command.")))
-
(define-public libgit2
(package
(name "libgit2")
--
2.9.2
Ludovic Courtès wrote 9 years ago
(name . Leo Famulari)(address . leo@famulari.name)
87pop7u4cd.fsf@gnu.org
Leo Famulari <leo@famulari.name> skribis:

Toggle quote (29 lines)
> On Sat, Jul 30, 2016 at 03:46:29PM +0200, Ludovic Courtès wrote:
>> Leo Famulari <leo@famulari.name> skribis:
>>
>> > On Fri, Jul 29, 2016 at 02:46:23PM +0200, Andreas Enge wrote:
>>
>> [...]
>>
>> >> I suggest to include the man pages into the git package itself. If building
>> >> them is a real issue, adding a source and the build phase of git-manpages
>> >> to the git package itself could also be an option.
>> >
>> > I agree. If we continue to not build them from source, it won't make the
>> > Git package any more "expensive". We could add the pre-built source
>> > tarball as a native-input to the Git package, and re-use the unpack
>> > phase from git-manpages.
>>
>> I agree too, this sounds like a good idea.
>
> I've attached a patch. Your thoughts?
>
> From 2407216eac19e5a7a3376efc497f7047dc0c8299 Mon Sep 17 00:00:00 2001
> From: Leo Famulari <leo@famulari.name>
> Date: Tue, 9 Aug 2016 14:55:37 -0400
> Subject: [PATCH] gnu: git: Provide man-pages in main Git package.
>
> * gnu/packages/version-control.scm (git-manpages): Remove variable.
> (git)[native-inputs]: Add GIT-MANPAGES.
> [arguments]: Add 'install-man-pages' phase.

LGTM! :-)

Thank you!

Ludo'.
Leo Famulari wrote 9 years ago
(name . Ludovic Courtès)(address . ludo@gnu.org)
20160818024254.GA9101@jasmine
On Wed, Aug 17, 2016 at 11:33:54AM +0200, Ludovic Court�s wrote:
Toggle quote (7 lines)
> Leo Famulari <leo@famulari.name> skribis:
> > * gnu/packages/version-control.scm (git-manpages): Remove variable.
> > (git)[native-inputs]: Add GIT-MANPAGES.
> > [arguments]: Add 'install-man-pages' phase.
>
> LGTM! :-)

Pushed as d1cada045.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 24105@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 24105
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help