~ruther/guix-local

d1cada0450fca54260fd20ab49d0586d147cbeb3 — Leo Famulari 9 years ago 8ac32b5
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.
1 files changed, 20 insertions(+), 49 deletions(-)

M gnu/packages/version-control.scm
M gnu/packages/version-control.scm => gnu/packages/version-control.scm +20 -49
@@ 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.3")


@@ 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
            "0kabsmjfbvq4y1vlwq0yl2y4033a90rnwsq01d7np3cvy55fiq0l"))))))
   (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
                "0kabsmjfbvq4y1vlwq0yl2y4033a90rnwsq01d7np3cvy55fiq0l"))))
    (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")