gnu: git: Add graphical tools to the "gui" output.

* gnu/packages/version-control.scm (git): Add "gui" output.  Add Tcl/Tk
  as inputs.  Add #:configure-flags.  Augment 'split' phase to handle
  graphical user interfaces.
This commit is contained in:
Ludovic Courtès 2013-09-29 21:55:41 +02:00
parent 0a5a1db2d4
commit ecfb69938a
1 changed files with 34 additions and 6 deletions

View File

@ -39,7 +39,8 @@
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages emacs) #:use-module (gnu packages emacs)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages swig)) #:use-module (gnu packages swig)
#:use-module (gnu packages tcl))
(define-public bazaar (define-public bazaar
(package (package
@ -93,12 +94,25 @@ from a command line or use a GUI application.")
("zlib" ,zlib) ("zlib" ,zlib)
;; For 'git-svn'. ;; For 'git-svn'.
("subversion" ,subversion))) ("subversion" ,subversion)
(outputs '("out" "svn"))
;; For 'git gui', 'gitk', and 'git citool'.
("tcl" ,tcl)
("tk" ,tk)))
(outputs '("out" ; the core
"svn" ; git-svn
"gui")) ; gitk, git gui
(arguments (arguments
`(#:make-flags `("V=1") ; more verbose compilation `(#:make-flags `("V=1") ; more verbose compilation
#:test-target "test" #:test-target "test"
#:tests? #f ; FIXME: Many tests are failing #:tests? #f ; FIXME: Many tests are failing
;; The explicit --with-tcltk forces the build system to hardcode the
;; absolute file name to 'wish'.
#:configure-flags (list (string-append "--with-tcltk="
(assoc-ref %build-inputs "tk")
"/bin/wish8.6")) ; XXX
#:phases #:phases
(alist-replace (alist-replace
'configure 'configure
@ -112,14 +126,28 @@ from a command line or use a GUI application.")
(alist-cons-after (alist-cons-after
'install 'split 'install 'split
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
;; Split the binaries to the various outputs.
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(svn (assoc-ref outputs "svn")) (svn (assoc-ref outputs "svn"))
(gui (assoc-ref outputs "gui"))
(gitk (string-append out "/bin/gitk"))
(gitk* (string-append gui "/bin/gitk"))
(git-gui (string-append out "/libexec/git-core/git-gui"))
(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-svn (string-append out "/libexec/git-core/git-svn")) (git-svn (string-append out "/libexec/git-core/git-svn"))
(git-svn* (string-append svn "/libexec/git-core/git-svn"))) (git-svn* (string-append svn "/libexec/git-core/git-svn")))
(mkdir-p (string-append gui "/bin"))
(mkdir-p (string-append gui "/libexec/git-core"))
(mkdir-p (string-append svn "/libexec/git-core")) (mkdir-p (string-append svn "/libexec/git-core"))
(copy-file git-svn git-svn*)
(delete-file git-svn) (for-each (lambda (old new)
(chmod git-svn* #o555) (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*))
;; Tell 'git-svn' where Subversion is. ;; Tell 'git-svn' where Subversion is.
(wrap-program git-svn* (wrap-program git-svn*