ambrevar pushed a commit to branch master
in repository guix.

commit 1316413558e288c577d132bee41adcce4bc1e24a
Author: Pierre Neidhardt <m...@ambrevar.xyz>
Date:   Thu Oct 25 19:31:38 2018 +0200

    gnu: git: Add "subtree" output.
    
    * gnu/packages/version-control.scm (git)[outputs]: Add "subtree".
---
 gnu/packages/version-control.scm | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 44b9769..ccb1f5d 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -166,7 +166,11 @@ as well as the classic centralized workflow.")
                 version ".tar.xz"))
           (sha256
            (base32
-            "1vn6pi9yvw7rnb9dvi1yjrvv39fqd1m9mwbaffqwizs3gaf91br7"))))))
+            "1vn6pi9yvw7rnb9dvi1yjrvv39fqd1m9mwbaffqwizs3gaf91br7"))))
+      ;; For subtree documentation.
+      ("asciidoc" ,asciidoc)
+      ("docbook-xsl" ,docbook-xsl)
+      ("xmlto" ,xmlto)))
    (inputs
     `(("curl" ,curl)
       ("expat" ,expat)
@@ -198,6 +202,7 @@ as well as the classic centralized workflow.")
               "send-email"                        ; for git-send-email
               "svn"                               ; git-svn
               "credential-netrc"                  ; git-credential-netrc
+              "subtree"                           ; git-subtree
               "gui"))                             ; gitk, git gui
    (arguments
     `(#:make-flags `("V=1"                        ;more verbose compilation
@@ -256,6 +261,26 @@ as well as the classic centralized workflow.")
             ;; Add the "PM.stamp" to avoid "no rule to make target".
             (call-with-output-file "perl/PM.stamp" (const #t))
             #t))
+        (add-after 'build 'build-subtree
+          (lambda* (#:key inputs #:allow-other-keys)
+            (with-directory-excursion "contrib/subtree"
+              (substitute* "Makefile"
+                ;; Apparently `xmlto' does not bother to looks up the 
stylesheets
+                ;; specified in the XML, unlike the above substitution.  
Instead it
+                ;; uses a hard-coded URL.  Work around it here, but if this is
+                ;; common perhaps we should hardcode this path in xmlto itself.
+                (("\\$\\(XMLTO\\) -m \\$\\(MANPAGE_XSL\\) man")
+                 (string-append "$(XMLTO) -x "
+                                (string-append (assoc-ref inputs "docbook-xsl")
+                                               "/xml/xsl/docbook-xsl-"
+                                               ,(package-version docbook-xsl))
+                                "/manpages/docbook.xsl -m $(MANPAGE_XSL) 
man")))
+              (invoke "make")
+              (invoke "make" "install")
+              (invoke "make" "install-doc")
+              (substitute* "git-subtree"
+                (("/bin/sh") (which "sh"))))
+            #t))
         (add-before 'check 'patch-tests
           (lambda _
             (let ((store-directory (%store-directory)))
@@ -317,6 +342,14 @@ as well as the classic centralized workflow.")
                 `("PERL5LIB" ":" prefix
                   (,(string-append (assoc-ref outputs "out") "/share/perl5"))))
               #t)))
+        (add-after 'install 'install-subtree
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let ((subtree (assoc-ref outputs "subtree")))
+              (install-file "contrib/subtree/git-subtree"
+                            (string-append subtree "/bin"))
+              (install-file "contrib/subtree/git-subtree.1"
+                            (string-append subtree "/share/man/man1"))
+              #t)))
         (add-after 'install 'split
           (lambda* (#:key inputs outputs #:allow-other-keys)
             ;; Split the binaries to the various outputs.

Reply via email to