gnu: subversion: Switch back to Python 2.
[jackhill/guix/guix.git] / gnu / packages / version-control.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
3 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
4 ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
5 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
6 ;;;
7 ;;; This file is part of GNU Guix.
8 ;;;
9 ;;; GNU Guix is free software; you can redistribute it and/or modify it
10 ;;; under the terms of the GNU General Public License as published by
11 ;;; the Free Software Foundation; either version 3 of the License, or (at
12 ;;; your option) any later version.
13 ;;;
14 ;;; GNU Guix is distributed in the hope that it will be useful, but
15 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ;;; GNU General Public License for more details.
18 ;;;
19 ;;; You should have received a copy of the GNU General Public License
20 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22 (define-module (gnu packages version-control)
23 #:use-module ((guix licenses) #:select (asl2.0 gpl1+ gpl2 gpl2+ gpl3+))
24 #:use-module (guix packages)
25 #:use-module (guix download)
26 #:use-module (guix build-system gnu)
27 #:use-module (guix build-system python)
28 #:use-module (guix build utils)
29 #:use-module ((gnu packages gettext)
30 #:renamer (symbol-prefix-proc 'guix:))
31 #:use-module (gnu packages apr)
32 #:use-module (gnu packages curl)
33 #:use-module (gnu packages nano)
34 #:use-module (gnu packages openssl)
35 #:use-module (gnu packages perl)
36 #:use-module (gnu packages python)
37 #:use-module (gnu packages sqlite)
38 #:use-module (gnu packages system)
39 #:use-module (gnu packages xml)
40 #:use-module (gnu packages emacs)
41 #:use-module (gnu packages compression))
42
43 (define-public bazaar
44 (package
45 (name "bazaar")
46 (version "2.5.1")
47 (source
48 (origin
49 (method url-fetch)
50 (uri (string-append "https://launchpad.net/bzr/2.5/" version
51 "/+download/bzr-" version ".tar.gz"))
52 (sha256
53 (base32
54 "10krjbzia2avn09p0cdlbx2wya0r5v11w5ymvyl72af5dkx4cwwn"))))
55 (build-system python-build-system)
56 (inputs
57 ;; Note: 'tools/packaging/lp-upload-release' and 'tools/weavemerge.sh'
58 ;; require Zsh.
59 `(("gettext" ,guix:gettext)))
60 (arguments
61 `(#:tests? #f ; no test target
62 #:python ,python-2)) ; Python 3 apparently not yet supported, see
63 ; https://answers.launchpad.net/bzr/+question/229048
64 (home-page "https://gnu.org/software/bazaar")
65 (synopsis "Decentralized revision control system")
66 (description
67 "GNU Bazaar is a distributed version control system, which supports both
68 central version control and distributed version control. Developers can
69 organize their workspace in whichever way they want. It is possible to work
70 from a command line or use a GUI application.")
71 (license gpl2+)))
72
73 (define-public git
74 (package
75 (name "git")
76 (version "1.8.4")
77 (source (origin
78 (method url-fetch)
79 (uri (string-append "http://git-core.googlecode.com/files/git-"
80 version ".tar.gz"))
81 (sha256
82 (base32
83 "156bwqqgaw65rsvbb4wih5jfg94bxyf6p16mdwf0ky3f4ln55s2i"))))
84 (build-system gnu-build-system)
85 (inputs
86 `(("curl" ,curl)
87 ("expat" ,expat)
88 ("gettext" ,guix:gettext)
89 ("openssl" ,openssl)
90 ("perl" ,perl)
91 ("python" ,python) ; CAVEAT: incompatible with python-3 according to INSTALL
92 ("zlib" ,zlib)))
93 (arguments
94 `(#:make-flags `("V=1") ; more verbose compilation
95 #:test-target "test"
96 #:tests? #f ; FIXME: Many tests are failing
97 #:phases
98 (alist-replace
99 'configure
100 (lambda* (#:key #:allow-other-keys #:rest args)
101 (let ((configure (assoc-ref %standard-phases 'configure)))
102 (and (apply configure args)
103 (substitute* "Makefile"
104 (("/bin/sh") (which "sh"))
105 (("/usr/bin/perl") (which "perl"))
106 (("/usr/bin/python") (which "python"))))))
107 %standard-phases)))
108 (synopsis "Distributed version control system")
109 (description
110 "Git is a free distributed version control system designed to handle
111 everything from small to very large projects with speed and efficiency.")
112 (license gpl2)
113 (home-page "http://git-scm.com/")))
114
115 (define-public subversion
116 (package
117 (name "subversion")
118 (version "1.7.8")
119 (source (origin
120 (method url-fetch)
121 (uri (string-append "http://archive.apache.org/dist/subversion/subversion-"
122 version ".tar.bz2"))
123 (sha256
124 (base32
125 "11inl9n1riahfnbk1fax0dysm2swakzhzhpmm2zvga6fikcx90zw"))))
126 (build-system gnu-build-system)
127 (inputs
128 `(("apr" ,apr)
129 ("apr-util" ,apr-util)
130 ("perl" ,perl)
131 ("python" ,python-2) ; incompatible with Python 3 (print syntax)
132 ("sqlite" ,sqlite)
133 ("zlib" ,zlib)))
134 (home-page "http://subversion.apache.org/")
135 (synopsis "Subversion, a revision control system")
136 (description
137 "Subversion exists to be universally recognized and adopted as an
138 open-source, centralized version control system characterized by its
139 reliability as a safe haven for valuable data; the simplicity of its model and
140 usage; and its ability to support the needs of a wide variety of users and
141 projects, from individuals to large-scale enterprise operations.")
142 (license asl2.0)))
143
144 (define-public rcs
145 (package
146 (name "rcs")
147 (version "5.9.0")
148 (source (origin
149 (method url-fetch)
150 (uri (string-append "mirror://gnu/rcs/rcs-"
151 version ".tar.xz"))
152 (sha256
153 (base32
154 "0w26vsx732dcmb5qfhlkkzvrk1sx6d74qibrn914n14j0ci90jcq"))))
155 (build-system gnu-build-system)
156 (home-page "http://www.gnu.org/software/rcs/")
157 (synopsis "Per-file local revision control system")
158 (description
159 "The GNU Revision Control System (RCS) manages multiple revisions of
160 files. RCS automates the storing, retrieval, logging, identification, and
161 merging of revisions. RCS is useful for text that is revised frequently,
162 including source code, programs, documentation, graphics, papers, and form
163 letters.")
164 (license gpl3+)))
165
166 (define-public cvs
167 (package
168 (name "cvs")
169 (version "1.12.13")
170 (source (origin
171 (method url-fetch)
172 (uri (string-append
173 "http://ftp.gnu.org/non-gnu/cvs/source/feature/"
174 version "/cvs-" version ".tar.bz2"))
175 (sha256
176 (base32
177 "0pjir8cwn0087mxszzbsi1gyfc6373vif96cw4q3m1x6p49kd1bq"))))
178 (build-system gnu-build-system)
179 (arguments
180 ;; XXX: The test suite looks flawed, and the package is obsolete anyway.
181 '(#:tests? #f))
182 (inputs `(("zlib" ,zlib)
183 ("nano" ,nano))) ; the default editor
184 (home-page "http://cvs.nongnu.org")
185 (synopsis "Historical centralized version control system")
186 (description
187 "CVS is a version control system, an important component of Source
188 Configuration Management (SCM). Using it, you can record the history of
189 sources files, and documents. It fills a similar role to the free software
190 RCS, PRCS, and Aegis packages.")
191 (license gpl1+)))
192
193 (define-public vc-dwim
194 (package
195 (name "vc-dwim")
196 (version "1.7")
197 (source (origin
198 (method url-fetch)
199 (uri (string-append "mirror://gnu/vc-dwim/vc-dwim-"
200 version ".tar.xz"))
201 (sha256
202 (base32
203 "094pjwshvazlgagc254in2xvrp93vhcj0kb5ms17qs7sch99x9z2"))))
204 (build-system gnu-build-system)
205 (inputs `(("perl" ,perl)
206 ("inetutils" ,inetutils) ; for `hostname', used in the tests
207 ("emacs" ,emacs))) ; for `ctags'
208 (home-page "http://www.gnu.org/software/vc-dwim/")
209 (synopsis "Version-control-agnostic ChangeLog diff and commit tool")
210 (description
211 "vc-dwim is a version-control-agnostic ChangeLog diff and commit
212 tool. vc-chlog is a helper tool for writing GNU-style ChangeLog entries.")
213 (license gpl3+)))