summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-09-29 21:55:41 +0200
committerLudovic Courtès <ludo@gnu.org>2013-09-29 21:55:41 +0200
commitecfb69938aef0f90b6c395de452e3b501a71c2e2 (patch)
tree9dc5b200488f7f7fa831f4c32416951e854690e7 /gnu
parent0a5a1db2d4b4607acba03df4164d8f839acf0dd8 (diff)
downloadguix-patches-ecfb69938aef0f90b6c395de452e3b501a71c2e2.tar
guix-patches-ecfb69938aef0f90b6c395de452e3b501a71c2e2.tar.gz
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.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/version-control.scm40
1 files changed, 34 insertions, 6 deletions
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index a7333c0ce7..04a6ae2a57 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -39,7 +39,8 @@
#:use-module (gnu packages xml)
#:use-module (gnu packages emacs)
#:use-module (gnu packages compression)
- #:use-module (gnu packages swig))
+ #:use-module (gnu packages swig)
+ #:use-module (gnu packages tcl))
(define-public bazaar
(package
@@ -93,12 +94,25 @@ from a command line or use a GUI application.")
("zlib" ,zlib)
;; For 'git-svn'.
- ("subversion" ,subversion)))
- (outputs '("out" "svn"))
+ ("subversion" ,subversion)
+
+ ;; For 'git gui', 'gitk', and 'git citool'.
+ ("tcl" ,tcl)
+ ("tk" ,tk)))
+ (outputs '("out" ; the core
+ "svn" ; git-svn
+ "gui")) ; gitk, git gui
(arguments
`(#:make-flags `("V=1") ; more verbose compilation
#:test-target "test"
#: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
(alist-replace
'configure
@@ -112,14 +126,28 @@ from a command line or use a GUI application.")
(alist-cons-after
'install 'split
(lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Split the binaries to the various outputs.
(let* ((out (assoc-ref outputs "out"))
(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 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"))
- (copy-file git-svn git-svn*)
- (delete-file git-svn)
- (chmod git-svn* #o555)
+
+ (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*))
;; Tell 'git-svn' where Subversion is.
(wrap-program git-svn*