guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

04/04: gnu: git: Add inputs for send-email.


From: Eric Bavier
Subject: 04/04: gnu: git: Add inputs for send-email.
Date: Tue, 30 Jun 2015 14:54:14 +0000

bavier pushed a commit to branch master
in repository guix.

commit 58c1806908117e6b83eb58dd6702cc889d21c133
Author: Eric Bavier <address@hidden>
Date:   Sat Jun 27 21:06:53 2015 -0500

    gnu: git: Add inputs for send-email.
    
    * gnu/packages/version-control.scm (package-transitive-propagated-labels*)
      (package-propagated-input-refs): New procedures.
      (git)[inputs]: Add perl-authen-sasl, perl-net-smtp-ssl, and 
perl-io-socket-ssl.
      [outputs]: Add send-email output.
      [arguments]: Add #:modules argument with srfi-1.  In 'split phase, wrap
      git-send-email.
---
 gnu/packages/version-control.scm |   49 +++++++++++++++++++++++++++++++++++--
 1 files changed, 46 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 71171e6..15e6fb6 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -60,7 +60,9 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages tcl)
-  #:use-module (gnu packages))
+  #:use-module (gnu packages)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1))
 
 (define-public bazaar
   (package
@@ -97,6 +99,23 @@ changes to project files over time.  It supports both a 
distributed workflow
 as well as the classic centralized workflow.")
     (license gpl2+)))
 
+(define (package-transitive-propagated-labels* package)
+  "Return a list of the input labels of PACKAGE and its transitive inputs."
+  (let ((name (package-name package)))
+    `(,name
+      ,@(map (match-lambda
+               ((label (? package? _) . _)
+                (string-append name "/" label)))
+             (package-transitive-propagated-inputs package)))))
+
+(define (package-propagated-input-refs inputs packages)
+  "Return a list of (assoc-ref INPUTS <package-name>) for each package in
+PACKAGES and their propagated inputs."
+  (map (lambda (l)
+         `(assoc-ref ,inputs ,l))
+       (append-map package-transitive-propagated-labels*
+                   packages)))
+
 (define-public git
   ;; Keep in sync with 'git-manpages'!
   (package
@@ -124,10 +143,16 @@ as well as the classic centralized workflow.")
       ;; For 'git-svn'.
       ("subversion" ,subversion)
 
+      ;; For 'git-send-email'
+      ("perl-authen-sasl" ,perl-authen-sasl)
+      ("perl-net-smtp-ssl" ,perl-net-smtp-ssl)
+      ("perl-io-socket-ssl" ,perl-io-socket-ssl)
+
       ;; For 'git gui', 'gitk', and 'git citool'.
       ("tcl" ,tcl)
       ("tk" ,tk)))
    (outputs '("out"                               ; the core
+              "send-email"                        ; for git-send-email
               "svn"                               ; git-svn
               "gui"))                             ; gitk, git gui
    (arguments
@@ -141,6 +166,8 @@ as well as the classic centralized workflow.")
                                              (assoc-ref %build-inputs "tk")
                                              "/bin/wish8.6")) ; XXX
 
+      #:modules ((srfi srfi-1)
+                 ,@%gnu-build-system-modules)
       #:phases
        (alist-cons-after
         'configure 'patch-makefile-shebangs
@@ -164,6 +191,7 @@ as well as the classic centralized workflow.")
           (lambda* (#:key inputs outputs #:allow-other-keys)
             ;; Split the binaries to the various outputs.
             (let* ((out      (assoc-ref outputs "out"))
+                   (se       (assoc-ref outputs "send-email"))
                    (svn      (assoc-ref outputs "svn"))
                    (gui      (assoc-ref outputs "gui"))
                    (gitk     (string-append out "/bin/gitk"))
@@ -172,20 +200,23 @@ as well as the classic centralized workflow.")
                    (git-gui* (string-append gui "/libexec/git-core/git-gui"))
                    (git-cit  (string-append out 
"/libexec/git-core/git-citool"))
                    (git-cit* (string-append gui 
"/libexec/git-core/git-citool"))
+                   (git-se   (string-append out 
"/libexec/git-core/git-send-email"))
+                   (git-se*  (string-append se  
"/libexec/git-core/git-send-email"))
                    (git-svn  (string-append out "/libexec/git-core/git-svn"))
                    (git-svn* (string-append svn "/libexec/git-core/git-svn"))
                    (git-sm   (string-append out
                                             
"/libexec/git-core/git-submodule")))
               (mkdir-p (string-append gui "/bin"))
               (mkdir-p (string-append gui "/libexec/git-core"))
+              (mkdir-p (string-append se  "/libexec/git-core"))
               (mkdir-p (string-append svn "/libexec/git-core"))
 
               (for-each (lambda (old new)
                           (copy-file old new)
                           (delete-file old)
                           (chmod new #o555))
-                        (list gitk git-gui git-cit git-svn)
-                        (list gitk* git-gui* git-cit* git-svn*))
+                        (list gitk git-gui git-cit git-se git-svn)
+                        (list gitk* git-gui* git-cit* git-se* git-svn*))
 
               ;; Tell 'git-svn' where Subversion is.
               (wrap-program git-svn*
@@ -202,6 +233,18 @@ as well as the classic centralized workflow.")
                   (,(string-append (assoc-ref inputs "subversion")
                                    "/lib"))))
 
+              ;; Tell 'git-send-email' where perl modules are.
+              (wrap-program git-se*
+                `("PERL5LIB" ":" prefix
+                  ,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
+                        (delete-duplicates
+                         (list
+                          ,@(package-propagated-input-refs
+                             'inputs
+                             `(,perl-authen-sasl
+                               ,perl-net-smtp-ssl
+                               ,perl-io-socket-ssl)))))))
+
               ;; Tell 'git-submodule' where Perl is.
               (wrap-program git-sm
                 `("PATH" ":" prefix



reply via email to

[Prev in Thread] Current Thread [Next in Thread]