Commit | Line | Data |
---|---|---|
dcee3fc5 NK |
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> | |
cf3fe3b0 | 3 | ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> |
1a59b6d0 | 4 | ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
fc1e4516 | 5 | ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> |
62063d85 | 6 | ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org> |
6c0e2dbb | 7 | ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> |
f36a1eba | 8 | ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org> |
17206f72 | 9 | ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> |
e92b8599 | 10 | ;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com> |
086e498b | 11 | ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> |
d1cada04 | 12 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> |
369387b6 | 13 | ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> |
dcee3fc5 NK |
14 | ;;; |
15 | ;;; This file is part of GNU Guix. | |
16 | ;;; | |
17 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
18 | ;;; under the terms of the GNU General Public License as published by | |
19 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
20 | ;;; your option) any later version. | |
21 | ;;; | |
22 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
23 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
24 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
25 | ;;; GNU General Public License for more details. | |
26 | ;;; | |
27 | ;;; You should have received a copy of the GNU General Public License | |
28 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
29 | ||
1b1c335f | 30 | (define-module (gnu packages version-control) |
369387b6 | 31 | #:use-module ((guix licenses) #:prefix license:) |
d1cba090 | 32 | #:use-module (guix utils) |
dcee3fc5 NK |
33 | #:use-module (guix packages) |
34 | #:use-module (guix download) | |
c7810bd1 | 35 | #:use-module (guix git-download) |
086e498b | 36 | #:use-module (guix build-system cmake) |
1b1c335f | 37 | #:use-module (guix build-system gnu) |
dcee3fc5 | 38 | #:use-module (guix build-system python) |
c7810bd1 | 39 | #:use-module (guix build-system trivial) |
2b24faa2 | 40 | #:use-module (gnu packages apr) |
df7393b9 | 41 | #:use-module (gnu packages autotools) |
99828fa7 | 42 | #:use-module (gnu packages documentation) |
c7810bd1 | 43 | #:use-module (gnu packages base) |
0e534e74 JD |
44 | #:use-module (gnu packages bison) |
45 | #:use-module (gnu packages cook) | |
d9ff410f | 46 | #:use-module (gnu packages curl) |
59ef2030 | 47 | #:use-module (gnu packages docbook) |
740c24df | 48 | #:use-module (gnu packages ed) |
0e534e74 JD |
49 | #:use-module (gnu packages file) |
50 | #:use-module (gnu packages flex) | |
fc1e4516 | 51 | #:use-module (gnu packages gettext) |
0e534e74 JD |
52 | #:use-module (gnu packages groff) |
53 | #:use-module (gnu packages linux) | |
1972fed4 | 54 | #:use-module (gnu packages nano) |
2459141e | 55 | #:use-module (gnu packages ncurses) |
378b01dc | 56 | #:use-module (gnu packages ssh) |
46138f3e | 57 | #:use-module (gnu packages web) |
e8d2168c | 58 | #:use-module (gnu packages openstack) |
cf3fe3b0 | 59 | #:use-module (gnu packages perl) |
fc1e4516 | 60 | #:use-module (gnu packages pkg-config) |
cf3fe3b0 | 61 | #:use-module (gnu packages python) |
d0e11e8b | 62 | #:use-module (gnu packages readline) |
5f96f303 | 63 | #:use-module (gnu packages databases) |
9de46ffb | 64 | #:use-module (gnu packages admin) |
d9ff410f | 65 | #:use-module (gnu packages xml) |
a4572a17 | 66 | #:use-module (gnu packages emacs) |
8b2fe785 | 67 | #:use-module (gnu packages compression) |
ecfb6993 | 68 | #:use-module (gnu packages swig) |
25f76ef0 | 69 | #:use-module (gnu packages tcl) |
cc2b77df | 70 | #:use-module (gnu packages tls) |
58c18069 EB |
71 | #:use-module (gnu packages) |
72 | #:use-module (ice-9 match) | |
73 | #:use-module (srfi srfi-1)) | |
dcee3fc5 NK |
74 | |
75 | (define-public bazaar | |
76 | (package | |
77 | (name "bazaar") | |
d1cba090 | 78 | (version "2.7.0") |
dcee3fc5 NK |
79 | (source |
80 | (origin | |
81 | (method url-fetch) | |
d1cba090 EF |
82 | (uri (string-append "https://launchpad.net/bzr/" |
83 | (version-major+minor version) "/" version | |
dcee3fc5 NK |
84 | "/+download/bzr-" version ".tar.gz")) |
85 | (sha256 | |
86 | (base32 | |
d1cba090 | 87 | "1cysix5k3wa6y7jjck3ckq3abls4gvz570s0v0hxv805nwki4i8d")))) |
dcee3fc5 NK |
88 | (build-system python-build-system) |
89 | (inputs | |
90 | ;; Note: 'tools/packaging/lp-upload-release' and 'tools/weavemerge.sh' | |
91 | ;; require Zsh. | |
b94a6ca0 | 92 | `(("gettext" ,gettext-minimal))) |
dcee3fc5 | 93 | (arguments |
1611eccd | 94 | `(#:tests? #f ; no test target |
3b9af0f3 | 95 | #:python ,python-2 ; Python 3 apparently not yet supported, see |
1611eccd | 96 | ; https://answers.launchpad.net/bzr/+question/229048 |
730c740e EF |
97 | #:phases |
98 | (modify-phases %standard-phases | |
99 | (add-after 'unpack 'fix-mandir | |
100 | (lambda _ | |
101 | (substitute* "setup.py" | |
102 | (("man/man1") "share/man/man1")) | |
103 | #t))))) | |
dcee3fc5 | 104 | (home-page "https://gnu.org/software/bazaar") |
79c311b8 | 105 | (synopsis "Version control system supporting both distributed and centralized workflows") |
dcee3fc5 | 106 | (description |
79c311b8 | 107 | "GNU Bazaar is a version control system that allows you to record |
35b9e423 | 108 | changes to project files over time. It supports both a distributed workflow |
79c311b8 | 109 | as well as the classic centralized workflow.") |
369387b6 | 110 | (license license:gpl2+))) |
1b1c335f | 111 | |
d9ff410f AE |
112 | (define-public git |
113 | (package | |
114 | (name "git") | |
663d5b53 | 115 | (version "2.11.0") |
d9ff410f AE |
116 | (source (origin |
117 | (method url-fetch) | |
4d96439d | 118 | (uri (string-append "mirror://kernel.org/software/scm/git/git-" |
ff212a5c | 119 | version ".tar.xz")) |
d9ff410f AE |
120 | (sha256 |
121 | (base32 | |
663d5b53 | 122 | "02zx368id8rys0bh2sjrxz0ln2l2wm5nf1vhp1rj72clsilqszky")))) |
d9ff410f | 123 | (build-system gnu-build-system) |
2a5e15c6 LC |
124 | (native-inputs |
125 | `(("native-perl" ,perl) | |
b94a6ca0 | 126 | ("gettext" ,gettext-minimal) |
d1cada04 LF |
127 | ("git-manpages" |
128 | ,(origin | |
129 | (method url-fetch) | |
130 | (uri (string-append | |
131 | "mirror://kernel.org/software/scm/git/git-manpages-" | |
132 | version ".tar.xz")) | |
133 | (sha256 | |
134 | (base32 | |
663d5b53 | 135 | "1n18jnpi0z3skwc1ckrm7zdld6i3zvn0g95cg9r9pdn0564fglxk")))))) |
d9ff410f AE |
136 | (inputs |
137 | `(("curl" ,curl) | |
138 | ("expat" ,expat) | |
d9ff410f AE |
139 | ("openssl" ,openssl) |
140 | ("perl" ,perl) | |
d1f30e99 | 141 | ("python" ,python-2) ; CAVEAT: incompatible with python-3 according to INSTALL |
ed5f49ff LC |
142 | ("zlib" ,zlib) |
143 | ||
3bec8a01 RW |
144 | ;; For 'gitweb.cgi' |
145 | ("perl-cgi" ,perl-cgi) | |
146 | ||
ed5f49ff | 147 | ;; For 'git-svn'. |
ecfb6993 | 148 | ("subversion" ,subversion) |
b411517a | 149 | ("perl-term-readkey" ,perl-term-readkey) |
ecfb6993 | 150 | |
58c18069 EB |
151 | ;; For 'git-send-email' |
152 | ("perl-authen-sasl" ,perl-authen-sasl) | |
153 | ("perl-net-smtp-ssl" ,perl-net-smtp-ssl) | |
154 | ("perl-io-socket-ssl" ,perl-io-socket-ssl) | |
155 | ||
ecfb6993 LC |
156 | ;; For 'git gui', 'gitk', and 'git citool'. |
157 | ("tcl" ,tcl) | |
158 | ("tk" ,tk))) | |
159 | (outputs '("out" ; the core | |
58c18069 | 160 | "send-email" ; for git-send-email |
ecfb6993 LC |
161 | "svn" ; git-svn |
162 | "gui")) ; gitk, git gui | |
d9ff410f | 163 | (arguments |
1a59b6d0 LC |
164 | `(#:make-flags `("V=1" ;more verbose compilation |
165 | ||
166 | ;; By default 'make install' creates hard links for | |
167 | ;; things in 'libexec/git-core', which leads to huge | |
168 | ;; nars; see <http://bugs.gnu.org/21949>. | |
169 | "NO_INSTALL_HARDLINKS=indeed") | |
d9ff410f AE |
170 | #:test-target "test" |
171 | #:tests? #f ; FIXME: Many tests are failing | |
ecfb6993 LC |
172 | |
173 | ;; The explicit --with-tcltk forces the build system to hardcode the | |
174 | ;; absolute file name to 'wish'. | |
175 | #:configure-flags (list (string-append "--with-tcltk=" | |
176 | (assoc-ref %build-inputs "tk") | |
177 | "/bin/wish8.6")) ; XXX | |
178 | ||
58c18069 EB |
179 | #:modules ((srfi srfi-1) |
180 | ,@%gnu-build-system-modules) | |
d9ff410f | 181 | #:phases |
98378db6 LC |
182 | (modify-phases %standard-phases |
183 | (add-after 'configure 'patch-makefile-shebangs | |
184 | (lambda _ | |
185 | (substitute* "Makefile" | |
186 | (("/bin/sh") (which "sh")) | |
187 | (("/usr/bin/perl") (which "perl")) | |
188 | (("/usr/bin/python") (which "python"))))) | |
8601feae LC |
189 | (add-after 'configure 'add-PM.stamp |
190 | (lambda _ | |
191 | ;; Add the "PM.stamp" to avoid "no rule to make target". | |
192 | (call-with-output-file "perl/PM.stamp" (const #t)) | |
193 | #t)) | |
98378db6 LC |
194 | (add-after 'install 'install-shell-completion |
195 | (lambda* (#:key outputs #:allow-other-keys) | |
196 | (let* ((out (assoc-ref outputs "out")) | |
197 | (completions (string-append out "/etc/bash_completion.d"))) | |
198 | ;; TODO: Install the tcsh and zsh completions in the right place. | |
199 | (mkdir-p completions) | |
200 | (copy-file "contrib/completion/git-completion.bash" | |
201 | (string-append completions "/git")) | |
202 | #t))) | |
203 | (add-after 'install 'split | |
23c0e743 LC |
204 | (lambda* (#:key inputs outputs #:allow-other-keys) |
205 | ;; Split the binaries to the various outputs. | |
206 | (let* ((out (assoc-ref outputs "out")) | |
58c18069 | 207 | (se (assoc-ref outputs "send-email")) |
23c0e743 LC |
208 | (svn (assoc-ref outputs "svn")) |
209 | (gui (assoc-ref outputs "gui")) | |
210 | (gitk (string-append out "/bin/gitk")) | |
211 | (gitk* (string-append gui "/bin/gitk")) | |
212 | (git-gui (string-append out "/libexec/git-core/git-gui")) | |
213 | (git-gui* (string-append gui "/libexec/git-core/git-gui")) | |
214 | (git-cit (string-append out "/libexec/git-core/git-citool")) | |
215 | (git-cit* (string-append gui "/libexec/git-core/git-citool")) | |
58c18069 EB |
216 | (git-se (string-append out "/libexec/git-core/git-send-email")) |
217 | (git-se* (string-append se "/libexec/git-core/git-send-email")) | |
23c0e743 LC |
218 | (git-svn (string-append out "/libexec/git-core/git-svn")) |
219 | (git-svn* (string-append svn "/libexec/git-core/git-svn")) | |
220 | (git-sm (string-append out | |
221 | "/libexec/git-core/git-submodule"))) | |
222 | (mkdir-p (string-append gui "/bin")) | |
223 | (mkdir-p (string-append gui "/libexec/git-core")) | |
58c18069 | 224 | (mkdir-p (string-append se "/libexec/git-core")) |
23c0e743 | 225 | (mkdir-p (string-append svn "/libexec/git-core")) |
ecfb6993 | 226 | |
23c0e743 LC |
227 | (for-each (lambda (old new) |
228 | (copy-file old new) | |
229 | (delete-file old) | |
230 | (chmod new #o555)) | |
58c18069 EB |
231 | (list gitk git-gui git-cit git-se git-svn) |
232 | (list gitk* git-gui* git-cit* git-se* git-svn*)) | |
ed5f49ff | 233 | |
b411517a | 234 | ;; Tell 'git-svn' where Subversion and perl-term-readkey are. |
23c0e743 LC |
235 | (wrap-program git-svn* |
236 | `("PATH" ":" prefix | |
237 | (,(string-append (assoc-ref inputs "subversion") | |
238 | "/bin"))) | |
239 | `("PERL5LIB" ":" prefix | |
b411517a TD |
240 | ,(map (lambda (i) (string-append (assoc-ref inputs i) |
241 | "/lib/perl5/site_perl")) | |
242 | '("subversion" "perl-term-readkey"))) | |
ed5f49ff | 243 | |
23c0e743 LC |
244 | ;; XXX: The .so for SVN/Core.pm lacks a RUNPATH, so |
245 | ;; help it find 'libsvn_client-1.so'. | |
246 | `("LD_LIBRARY_PATH" ":" prefix | |
247 | (,(string-append (assoc-ref inputs "subversion") | |
248 | "/lib")))) | |
0a5a1db2 | 249 | |
58c18069 EB |
250 | ;; Tell 'git-send-email' where perl modules are. |
251 | (wrap-program git-se* | |
252 | `("PERL5LIB" ":" prefix | |
253 | ,(map (lambda (o) (string-append o "/lib/perl5/site_perl")) | |
355e53c4 | 254 | (list |
a6d0b306 | 255 | ,@(transitive-input-references |
355e53c4 | 256 | 'inputs |
a6d0b306 EB |
257 | (map (lambda (l) |
258 | (assoc l (inputs))) | |
259 | '("perl-authen-sasl" | |
260 | "perl-net-smtp-ssl" | |
261 | "perl-io-socket-ssl"))))))) | |
3bec8a01 RW |
262 | |
263 | ;; Tell 'gitweb.cgi' where perl modules are. | |
264 | (wrap-program (string-append out "/share/gitweb/gitweb.cgi") | |
265 | `("PERL5LIB" ":" prefix | |
266 | ,(map (lambda (o) (string-append o "/lib/perl5/site_perl")) | |
267 | (list | |
268 | ,@(transitive-input-references | |
269 | 'inputs | |
270 | (map (lambda (l) | |
271 | (assoc l (inputs))) | |
272 | '("perl-cgi"))))))) | |
58c18069 | 273 | |
23c0e743 LC |
274 | ;; Tell 'git-submodule' where Perl is. |
275 | (wrap-program git-sm | |
276 | `("PATH" ":" prefix | |
277 | (,(string-append (assoc-ref inputs "perl") | |
278 | "/bin")))) | |
2a5e15c6 | 279 | |
23c0e743 LC |
280 | ;; Tell 'git' to look for core programs in the user's profile. |
281 | ;; This allows user to install other outputs of this package and | |
282 | ;; have them transparently taken into account. There's a | |
283 | ;; 'GIT_EXEC_PATH' environment variable, but it's supposed to | |
284 | ;; specify a single directory, not a search path. | |
285 | (wrap-program (string-append out "/bin/git") | |
286 | `("PATH" ":" prefix | |
d1cada04 LF |
287 | ("$HOME/.guix-profile/libexec/git-core")))))) |
288 | (add-after 'split 'install-man-pages | |
289 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
290 | (let* ((out (assoc-ref outputs "out")) | |
291 | (man (string-append out "/share/man")) | |
292 | (manpages (assoc-ref inputs "git-manpages"))) | |
293 | (mkdir-p man) | |
294 | (with-directory-excursion man | |
295 | (zero? (system* "tar" "xvf" manpages))))))))) | |
da699774 LC |
296 | |
297 | (native-search-paths | |
298 | ;; For HTTPS access, Git needs a single-file certificate bundle, specified | |
299 | ;; with $GIT_SSL_CAINFO. | |
300 | ;; FIXME: This variable designates a single file; it is not a search path. | |
301 | (list (search-path-specification | |
302 | (variable "GIT_SSL_CAINFO") | |
6d461b21 | 303 | (file-type 'regular) |
da699774 LC |
304 | (files '("etc/ssl/certs/ca-certificates.crt"))))) |
305 | ||
d9ff410f AE |
306 | (synopsis "Distributed version control system") |
307 | (description | |
308 | "Git is a free distributed version control system designed to handle | |
309 | everything from small to very large projects with speed and efficiency.") | |
369387b6 | 310 | (license license:gpl2) |
d9ff410f AE |
311 | (home-page "http://git-scm.com/"))) |
312 | ||
4e835710 JD |
313 | ;; Some dependent packages directly access internal interfaces which |
314 | ;; have changed in 2.10 | |
315 | (define-public git@2.9 | |
316 | (package | |
317 | (inherit git) | |
318 | (version "2.9.3") | |
319 | (source (origin | |
320 | (method url-fetch) | |
321 | (uri (string-append "mirror://kernel.org/software/scm/git/git-" | |
322 | version ".tar.xz")) | |
323 | (sha256 | |
324 | (base32 | |
325 | "0qzs681a64k3shh5p0rg41l1z16fbk5sj0xga45k34hp1hsp654z")))))) | |
326 | ||
086e498b RW |
327 | (define-public libgit2 |
328 | (package | |
329 | (name "libgit2") | |
c163a284 | 330 | (version "0.24.3") |
086e498b RW |
331 | (source (origin |
332 | (method url-fetch) | |
333 | (uri (string-append "https://github.com/libgit2/libgit2/" | |
334 | "archive/v" version ".tar.gz")) | |
335 | (file-name (string-append name "-" version ".tar.gz")) | |
336 | (sha256 | |
337 | (base32 | |
c163a284 | 338 | "0m37b2jq8g70bmxlgrhbj4p23c893vxwmlmw1v5ywfxz3njyc90a")))) |
086e498b RW |
339 | (build-system cmake-build-system) |
340 | (arguments | |
341 | `(#:phases | |
342 | (modify-phases %standard-phases | |
343 | (add-after 'unpack 'fix-hardcoded-paths | |
344 | (lambda _ | |
345 | (substitute* "tests/repo/init.c" | |
346 | (("#!/bin/sh") (string-append "#!" (which "sh")))) | |
347 | (substitute* "tests/clar/fs.h" | |
348 | (("/bin/cp") (which "cp")) | |
349 | (("/bin/rm") (which "rm"))) | |
350 | #t)) | |
351 | ;; Run checks more verbosely. | |
352 | (replace 'check | |
353 | (lambda _ (zero? (system* "./libgit2_clar" "-v" "-Q"))))))) | |
354 | (inputs | |
355 | `(("libssh2" ,libssh2) | |
356 | ("libcurl" ,curl) | |
3a099d17 | 357 | ("python" ,python-wrapper) |
086e498b RW |
358 | ("openssl" ,openssl))) |
359 | (native-inputs | |
360 | `(("pkg-config" ,pkg-config))) | |
9bf160a3 | 361 | (home-page "https://libgit2.github.com/") |
086e498b RW |
362 | (synopsis "Library providing Git core methods") |
363 | (description | |
364 | "Libgit2 is a portable, pure C implementation of the Git core methods | |
365 | provided as a re-entrant linkable library with a solid API, allowing you to | |
366 | write native speed custom Git applications in any language with bindings.") | |
367 | ;; GPLv2 with linking exception | |
369387b6 | 368 | (license license:gpl2))) |
086e498b | 369 | |
7ad1fee5 SB |
370 | (define-public cgit |
371 | (package | |
372 | (name "cgit") | |
569d9efe | 373 | (version "1.0") |
7ad1fee5 SB |
374 | (source (origin |
375 | (method url-fetch) | |
376 | (uri (string-append | |
377 | "https://git.zx2c4.com/cgit/snapshot/cgit-" | |
378 | version ".tar.xz")) | |
379 | (sha256 | |
380 | (base32 | |
569d9efe | 381 | "0kbh835p7dl4h88qv55fyfh1za09cgnqh63rii325w9215hm95x8")))) |
7ad1fee5 SB |
382 | (build-system gnu-build-system) |
383 | (arguments | |
384 | '(#:tests? #f ; XXX: fail to build the in-source git. | |
385 | #:test-target "test" | |
386 | #:make-flags '("CC=gcc" "SHELL_PATH=sh") | |
387 | #:phases | |
388 | (modify-phases %standard-phases | |
389 | (add-after 'unpack 'unpack-git | |
390 | (lambda* (#:key inputs #:allow-other-keys) | |
391 | ;; Unpack the source of git into the 'git' directory. | |
392 | (zero? (system* | |
393 | "tar" "--strip-components=1" "-C" "git" "-xf" | |
394 | (assoc-ref inputs "git:src"))))) | |
395 | (delete 'configure) ; no configure script | |
396 | (add-after 'build 'build-man | |
397 | (lambda* (#:key make-flags #:allow-other-keys) | |
398 | (zero? (apply system* `("make" ,@make-flags "doc-man"))))) | |
399 | (replace 'install | |
400 | (lambda* (#:key make-flags outputs #:allow-other-keys) | |
401 | (let ((out (assoc-ref outputs "out"))) | |
402 | (and (zero? (apply system* | |
403 | `("make" ,@make-flags | |
404 | ,(string-append "prefix=" out) | |
405 | ,(string-append | |
406 | "CGIT_SCRIPT_PATH=" out "/share/cgit") | |
407 | "install" "install-man"))) | |
408 | ;; Move the platform-dependent 'cgit.cgi' into lib | |
409 | ;; to get it stripped. | |
410 | (rename-file (string-append out "/share/cgit/cgit.cgi") | |
411 | (string-append out "/lib/cgit/cgit.cgi")) | |
412 | #t))))))) | |
413 | (native-inputs | |
414 | ;; For building manpage. | |
415 | `(("asciidoc" ,asciidoc) | |
416 | ("docbook-xml" ,docbook-xml) | |
417 | ("docbook-xsl" ,docbook-xsl) | |
418 | ("xmllint" ,libxml2) | |
419 | ("xsltprot" ,libxslt))) | |
420 | (inputs | |
4e835710 | 421 | `(("git:src" ,(package-source git@2.9)) |
7ad1fee5 SB |
422 | ("openssl" ,openssl) |
423 | ("zlib" ,zlib))) | |
424 | (home-page "https://git.zx2c4.com/cgit/") | |
425 | (synopsis "Web frontend for git repositories") | |
426 | (description | |
427 | "CGit is an attempt to create a fast web interface for the Git SCM, using | |
428 | a built-in cache to decrease server I/O pressure.") | |
369387b6 | 429 | (license license:gpl2))) |
7ad1fee5 | 430 | |
c7810bd1 EB |
431 | (define-public shflags |
432 | (package | |
433 | (name "shflags") | |
b65195c2 | 434 | (version "1.2.0") |
c7810bd1 EB |
435 | (source (origin |
436 | (method url-fetch) | |
b65195c2 EF |
437 | (uri (string-append "https://github.com/kward/shflags/archive/v" |
438 | version ".tar.gz")) | |
c7810bd1 EB |
439 | (sha256 |
440 | (base32 | |
b65195c2 | 441 | "0zxw12haylaq60a335xlqcs4afw2zrgwqymmpw0m21r51w6irdmr")))) |
c7810bd1 EB |
442 | (build-system trivial-build-system) |
443 | (native-inputs `(("tar" ,tar) | |
444 | ("gzip" ,gzip))) | |
445 | (arguments | |
446 | `(#:modules ((guix build utils)) | |
447 | #:builder (begin | |
448 | (use-modules (guix build utils)) | |
449 | (let* ((source (assoc-ref %build-inputs "source")) | |
450 | (tar (assoc-ref %build-inputs "tar")) | |
451 | (gzip (assoc-ref %build-inputs "gzip")) | |
452 | (output (assoc-ref %outputs "out")) | |
453 | (srcdir (string-append output "/src"))) | |
454 | (begin | |
455 | (setenv "PATH" (string-append gzip "/bin")) | |
456 | (system* (string-append tar "/bin/tar") "xzf" | |
457 | source) | |
458 | (chdir ,(string-append name "-" version)) | |
459 | (mkdir-p srcdir) | |
460 | (copy-file "src/shflags" | |
461 | (string-append srcdir "/shflags")) | |
462 | #t))))) | |
b65195c2 | 463 | (home-page "https://github.com/kward/shflags") |
c7810bd1 EB |
464 | (synopsis "Command-line flags library for shell scripts") |
465 | (description | |
466 | "Shell Flags (shFlags) is a library written to greatly simplify the | |
467 | handling of command-line flags in Bourne based Unix shell scripts (bash, dash, | |
468 | ksh, sh, zsh). Most shell scripts use getopt for flags processing, but the | |
469 | different versions of getopt on various OSes make writing portable shell | |
470 | scripts difficult. shFlags instead provides an API that doesn't change across | |
471 | shell and OS versions so the script writer can be confident that the script | |
472 | will work.") | |
369387b6 | 473 | (license license:lgpl2.1))) |
c7810bd1 EB |
474 | |
475 | (define-public git-flow | |
476 | (package | |
477 | (name "git-flow") | |
478 | ;; This version has not be officially released yet, so we build it | |
479 | ;; directly from the git repository. | |
480 | (version "0.4.2-pre") | |
481 | (source (origin | |
482 | (method git-fetch) | |
483 | (uri (git-reference | |
484 | (url "https://github.com/nvie/gitflow/") | |
698bd297 | 485 | (commit "15aab26490facf285acef56cb5d61025eacb3a69"))) |
c7810bd1 EB |
486 | (sha256 |
487 | (base32 | |
488 | "01fs97q76fdfnvmrh2cyjhywcs3pykf1dg58sy0frflnsdzs6prx")))) | |
489 | (build-system gnu-build-system) | |
490 | (inputs `(("shflags" ,shflags))) | |
491 | (arguments | |
492 | '(#:tests? #f ; no tests | |
493 | #:make-flags (list (string-append "prefix=" | |
494 | (assoc-ref %outputs "out"))) | |
aac42d78 EF |
495 | #:phases |
496 | (modify-phases %standard-phases | |
497 | (add-after 'unpack 'reset-shFlags-link | |
498 | (lambda* (#:key inputs #:allow-other-keys) | |
499 | ;; The link points to a file in the shFlags submodule. | |
500 | ;; Redirect it to point to our system shFlags. | |
501 | (let ((shflags (assoc-ref inputs "shflags"))) | |
502 | (begin | |
503 | (delete-file "gitflow-shFlags") | |
504 | (symlink (string-append shflags "/src/shflags") | |
505 | "gitflow-shFlags"))))) | |
506 | (delete 'configure) | |
507 | (delete 'build)))) | |
c7810bd1 EB |
508 | (home-page "http://nvie.com/posts/a-successful-git-branching-model/") |
509 | (synopsis "Git extensions for Vincent Driessen's branching model") | |
510 | (description | |
511 | "Vincent Driessen's branching model is a git branching and release | |
512 | management strategy that helps developers keep track of features, hotfixes, | |
513 | and releases in bigger software projects. The git-flow library of git | |
514 | subcommands helps automate some parts of the flow to make working with it a | |
515 | lot easier.") | |
369387b6 | 516 | (license license:bsd-2))) |
c7810bd1 | 517 | |
a63094a7 | 518 | (define-public git-test-sequence |
698bd297 | 519 | (let ((commit "48e5a2f5a13a5f30452647237e23362b459b9c76")) |
a63094a7 EB |
520 | (package |
521 | (name "git-test-sequence") | |
698bd297 | 522 | (version (string-append "20140312." (string-take commit 7))) |
a63094a7 EB |
523 | (source (origin |
524 | (method git-fetch) | |
525 | (uri (git-reference | |
526 | ;; There are many other scripts in this directory; we | |
527 | ;; are interested in just one for this package. | |
528 | (url "https://github.com/dustin/bindir") | |
529 | (commit commit))) | |
530 | (sha256 | |
531 | (base32 | |
532 | "1dcq0y16yznbv4k9h8gg90kv1gkn8r8dbvl4m2rpfd7q5nqhn617")))) | |
533 | (build-system trivial-build-system) | |
534 | (arguments | |
535 | `(#:modules ((guix build utils)) | |
536 | #:builder (begin | |
537 | (use-modules (guix build utils)) | |
538 | (let* ((source (assoc-ref %build-inputs "source")) | |
539 | (output (assoc-ref %outputs "out")) | |
540 | (bindir (string-append output "/bin")) | |
541 | (script "git-test-sequence")) | |
96c46210 LC |
542 | (install-file (string-append source "/" script) |
543 | bindir) | |
544 | #t)))) | |
a63094a7 EB |
545 | (home-page "http://dustin.sallings.org/2010/03/28/git-test-sequence.html") |
546 | (synopsis "Run a command over a sequence of commits") | |
547 | (description | |
548 | "git-test-sequence is similar to an automated git bisect except it’s | |
549 | linear. It will test every change between two points in the DAG. It will | |
550 | also walk each side of a merge and test those changes individually.") | |
369387b6 | 551 | (license (license:x11-style "file://LICENSE"))))) |
a63094a7 | 552 | |
378b01dc DT |
553 | (define-public gitolite |
554 | (package | |
555 | (name "gitolite") | |
20109e07 | 556 | (version "3.6.5") |
378b01dc DT |
557 | (source (origin |
558 | (method url-fetch) | |
559 | (uri (string-append | |
560 | "https://github.com/sitaramc/gitolite/archive/v" | |
561 | version ".tar.gz")) | |
562 | (file-name (string-append name "-" version ".tar.gz")) | |
378b01dc DT |
563 | (sha256 |
564 | (base32 | |
20109e07 | 565 | "0xpqg04gyr4dhdhxx5lbk61lwwd5ml32530bigg2qy663icngwqm")))) |
378b01dc DT |
566 | (build-system gnu-build-system) |
567 | (arguments | |
568 | '(#:tests? #f ; no tests | |
569 | #:phases (modify-phases %standard-phases | |
570 | (delete 'configure) | |
571 | (delete 'build) | |
572 | (add-before 'install 'patch-scripts | |
573 | (lambda* (#:key inputs #:allow-other-keys) | |
574 | (let ((perl (string-append (assoc-ref inputs "perl") | |
575 | "/bin/perl"))) | |
576 | ;; This seems to take care of every shell script that | |
577 | ;; invokes Perl. | |
578 | (substitute* (find-files "." ".*") | |
579 | ((" perl -") | |
580 | (string-append " " perl " -")))))) | |
581 | (replace 'install | |
582 | (lambda* (#:key outputs #:allow-other-keys) | |
583 | (let* ((output (assoc-ref outputs "out")) | |
584 | (sharedir (string-append output "/share/gitolite")) | |
585 | (bindir (string-append output "/bin"))) | |
586 | (mkdir-p sharedir) | |
587 | (mkdir-p bindir) | |
588 | (system* "./install" "-to" sharedir) | |
589 | ;; Create symlinks for executable scripts in /bin. | |
590 | (for-each (lambda (script) | |
591 | (symlink (string-append sharedir "/" script) | |
592 | (string-append bindir "/" script))) | |
593 | '("gitolite" "gitolite-shell")) | |
594 | #t)))))) | |
595 | (inputs | |
596 | `(("perl" ,perl))) | |
597 | ;; git and openssh are propagated because trying to patch the source via | |
598 | ;; regexp matching is too brittle and prone to false positives. | |
599 | (propagated-inputs | |
600 | `(("git" ,git) | |
601 | ("openssh" ,openssh))) | |
602 | (home-page "http://gitolite.com") | |
603 | (synopsis "Git access control layer") | |
604 | (description | |
605 | "Gitolite is an access control layer on top of Git, providing fine access | |
606 | control to Git repositories.") | |
369387b6 | 607 | (license license:gpl2))) |
378b01dc | 608 | |
5151c2e1 AB |
609 | (define-public mercurial |
610 | (package | |
611 | (name "mercurial") | |
79f9d5d5 | 612 | (version "3.9") |
5151c2e1 AB |
613 | (source (origin |
614 | (method url-fetch) | |
5575917d EF |
615 | (uri (string-append "https://www.mercurial-scm.org/" |
616 | "release/mercurial-" version ".tar.gz")) | |
5151c2e1 AB |
617 | (sha256 |
618 | (base32 | |
79f9d5d5 | 619 | "1g6svg7fc1kyaxq653iwsvdh8hp2lrhs2ywazfc436a4zzf2akw3")))) |
5151c2e1 AB |
620 | (build-system python-build-system) |
621 | (arguments | |
622 | `(;; Restrict to Python 2, as Python 3 would require | |
623 | ;; the argument --c2to3. | |
624 | #:python ,python-2 | |
625 | ;; FIXME: Disabled tests because they require the nose unit | |
626 | ;; testing framework: https://nose.readthedocs.org/en/latest/ . | |
627 | #:tests? #f)) | |
5575917d | 628 | (home-page "https://www.mercurial-scm.org/") |
5151c2e1 AB |
629 | (synopsis "Decentralized version control system") |
630 | (description | |
631 | "Mercurial is a free, distributed source control management tool. | |
632 | It efficiently handles projects of any size | |
633 | and offers an easy and intuitive interface.") | |
369387b6 | 634 | (license license:gpl2+))) |
5151c2e1 | 635 | |
fc1e4516 AE |
636 | (define-public neon |
637 | (package | |
638 | (name "neon") | |
892f92b7 | 639 | (version "0.30.1") |
fc1e4516 AE |
640 | (source (origin |
641 | (method url-fetch) | |
642 | (uri (string-append "http://www.webdav.org/neon/neon-" | |
643 | version ".tar.gz")) | |
644 | (sha256 | |
645 | (base32 | |
892f92b7 | 646 | "1pawhk02x728xn396a1kcivy9gqm94srmgad6ymr9l0qvk02dih0")))) |
fc1e4516 AE |
647 | (build-system gnu-build-system) |
648 | (native-inputs | |
649 | `(("perl" ,perl) | |
650 | ("pkg-config" ,pkg-config))) | |
651 | (inputs | |
652 | `(("libxml2" ,libxml2) | |
653 | ("openssl" ,openssl) | |
654 | ("zlib" ,zlib))) | |
655 | (arguments | |
656 | `(;; FIXME: Add tests once reverse address lookup is fixed in glibc, see | |
657 | ;; https://sourceware.org/bugzilla/show_bug.cgi?id=16475 | |
658 | #:tests? #f | |
659 | #:configure-flags '("--enable-shared" | |
660 | ;; requires libgnutils-config, deprecated | |
661 | ;; in gnutls 2.8. | |
662 | ; "--with-ssl=gnutls"))) | |
663 | "--with-ssl=openssl"))) | |
664 | (home-page "http://www.webdav.org/neon/") | |
665 | (synopsis "HTTP and WebDAV client library") | |
666 | (description "Neon is an HTTP and WebDAV client library, with a | |
667 | C interface. Features: | |
668 | High-level wrappers for common HTTP and WebDAV operations (GET, MOVE, | |
669 | DELETE, etc.); | |
670 | low-level interface to the HTTP request/response engine, allowing the use | |
671 | of arbitrary HTTP methods, headers, etc.; | |
672 | authentication support including Basic and Digest support, along with | |
673 | GSSAPI-based Negotiate on Unix, and SSPI-based Negotiate/NTLM on Win32; | |
674 | SSL/TLS support using OpenSSL or GnuTLS, exposing an abstraction layer for | |
675 | verifying server certificates, handling client certificates, and examining | |
676 | certificate properties, smartcard-based client certificates are also | |
677 | supported via a PKCS#11 wrapper interface; | |
678 | abstract interface to parsing XML using libxml2 or expat, and wrappers for | |
679 | simplifying handling XML HTTP response bodies; | |
680 | WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify | |
681 | property manipulation.") | |
369387b6 | 682 | (license license:gpl2+))) ; for documentation and tests; source under lgpl2.0+ |
fc1e4516 | 683 | |
cf3fe3b0 CR |
684 | (define-public subversion |
685 | (package | |
686 | (name "subversion") | |
491f2918 | 687 | (version "1.8.17") |
cf3fe3b0 CR |
688 | (source (origin |
689 | (method url-fetch) | |
ce84c924 | 690 | (uri (string-append "https://archive.apache.org/dist/subversion/" |
7639105b | 691 | "subversion-" version ".tar.bz2")) |
cf3fe3b0 CR |
692 | (sha256 |
693 | (base32 | |
491f2918 | 694 | "1450fkj1jmxyphqn6cd95z1ykwsabajm9jw4i412qpwss8w9a4fy")))) |
cf3fe3b0 | 695 | (build-system gnu-build-system) |
8b2fe785 | 696 | (arguments |
7c5a1454 EF |
697 | '(#:phases |
698 | (modify-phases %standard-phases | |
699 | (add-after 'configure 'patch-libtool-wrapper-ls | |
700 | (lambda* (#:key inputs #:allow-other-keys) | |
701 | ;; This substitution allows tests svnauthz_tests and svnlook_tests | |
702 | ;; to pass. These tests execute svnauthz and svnlook through | |
703 | ;; their libtool wrapper scripts from svn hooks, whose empty | |
704 | ;; environments cause "ls: command not found" errors. It would be | |
705 | ;; nice if this fix ultimately made its way into libtool. | |
706 | (let ((coreutils (assoc-ref inputs "coreutils"))) | |
707 | (substitute* "libtool" | |
491f2918 EF |
708 | (("\\\\`ls") (string-append "\\`" coreutils "/bin/ls"))) |
709 | #t))) | |
7c5a1454 EF |
710 | (add-after 'install 'install-perl-bindings |
711 | (lambda* (#:key outputs #:allow-other-keys) | |
712 | ;; Follow the instructions from 'subversion/bindings/swig/INSTALL'. | |
713 | (let ((out (assoc-ref outputs "out"))) | |
714 | (and (zero? (system* "make" "swig-pl-lib")) | |
715 | ;; FIXME: Test failures. | |
716 | ;; (zero? (system* "make" "check-swig-pl")) | |
717 | (zero? (system* "make" "install-swig-pl-lib")) | |
718 | ||
719 | ;; Set the right installation prefix. | |
720 | (with-directory-excursion | |
721 | "subversion/bindings/swig/perl/native" | |
722 | (and (zero? | |
723 | (system* "perl" "Makefile.PL" | |
724 | (string-append "PREFIX=" out))) | |
725 | (zero? | |
726 | (system* "make" "install" | |
727 | (string-append "OTHERLDFLAGS=" | |
728 | "-Wl,-rpath=" | |
729 | out "/lib")))))))))))) | |
8b2fe785 | 730 | (native-inputs |
98b79d36 AE |
731 | `(("pkg-config" ,pkg-config) |
732 | ;; For the Perl bindings. | |
733 | ("swig" ,swig))) | |
cf3fe3b0 | 734 | (inputs |
2b24faa2 AE |
735 | `(("apr" ,apr) |
736 | ("apr-util" ,apr-util) | |
46138f3e | 737 | ("serf" ,serf) |
cf3fe3b0 | 738 | ("perl" ,perl) |
aa9e22ef | 739 | ("python" ,python-2) ; incompatible with Python 3 (print syntax) |
cf3fe3b0 CR |
740 | ("sqlite" ,sqlite) |
741 | ("zlib" ,zlib))) | |
ce84c924 | 742 | (home-page "https://subversion.apache.org/") |
35b9e423 | 743 | (synopsis "Revision control system") |
cf3fe3b0 | 744 | (description |
749b90a5 LC |
745 | "Subversion exists to be universally recognized and adopted as a |
746 | centralized version control system characterized by its | |
cf3fe3b0 CR |
747 | reliability as a safe haven for valuable data; the simplicity of its model and |
748 | usage; and its ability to support the needs of a wide variety of users and | |
749 | projects, from individuals to large-scale enterprise operations.") | |
369387b6 | 750 | (license license:asl2.0))) |
cf3fe3b0 | 751 | |
1b1c335f LC |
752 | (define-public rcs |
753 | (package | |
754 | (name "rcs") | |
73ebc66f | 755 | (version "5.9.4") |
1b1c335f LC |
756 | (source (origin |
757 | (method url-fetch) | |
758 | (uri (string-append "mirror://gnu/rcs/rcs-" | |
759 | version ".tar.xz")) | |
760 | (sha256 | |
761 | (base32 | |
73ebc66f | 762 | "1zsx7bb0rgvvvisiy4zlixf56ay8wbd9qqqcp1a1g0m1gl6mlg86")))) |
1b1c335f | 763 | (build-system gnu-build-system) |
740c24df | 764 | (native-inputs `(("ed" ,ed))) |
1b1c335f LC |
765 | (home-page "http://www.gnu.org/software/rcs/") |
766 | (synopsis "Per-file local revision control system") | |
767 | (description | |
79c311b8 LC |
768 | "RCS is the original Revision Control System. It works on a |
769 | file-by-file basis, in contrast to subsequent version control systems such as | |
770 | CVS, Subversion, and Git. This can make it suitable for system | |
771 | administration files, for example, which are often inherently local to one | |
772 | machine.") | |
369387b6 | 773 | (license license:gpl3+))) |
1972fed4 LC |
774 | |
775 | (define-public cvs | |
776 | (package | |
777 | (name "cvs") | |
778 | (version "1.12.13") | |
779 | (source (origin | |
780 | (method url-fetch) | |
781 | (uri (string-append | |
782 | "http://ftp.gnu.org/non-gnu/cvs/source/feature/" | |
783 | version "/cvs-" version ".tar.bz2")) | |
784 | (sha256 | |
785 | (base32 | |
786 | "0pjir8cwn0087mxszzbsi1gyfc6373vif96cw4q3m1x6p49kd1bq")))) | |
787 | (build-system gnu-build-system) | |
788 | (arguments | |
789 | ;; XXX: The test suite looks flawed, and the package is obsolete anyway. | |
7fbbd3e7 EF |
790 | '(#:tests? #f |
791 | #:configure-flags (list "--with-external-zlib"))) | |
1972fed4 LC |
792 | (inputs `(("zlib" ,zlib) |
793 | ("nano" ,nano))) ; the default editor | |
794 | (home-page "http://cvs.nongnu.org") | |
795 | (synopsis "Historical centralized version control system") | |
796 | (description | |
797 | "CVS is a version control system, an important component of Source | |
798 | Configuration Management (SCM). Using it, you can record the history of | |
799 | sources files, and documents. It fills a similar role to the free software | |
800 | RCS, PRCS, and Aegis packages.") | |
369387b6 | 801 | (license license:gpl1+))) |
a4572a17 | 802 | |
59ef2030 ML |
803 | (define-public cvs-fast-export |
804 | (package | |
805 | (name "cvs-fast-export") | |
806 | (version "1.33") | |
807 | (source (origin | |
808 | (method url-fetch) | |
809 | (uri (string-append "http://www.catb.org/~esr/" | |
810 | name "/" name "-" version ".tar.gz")) | |
811 | (sha256 | |
812 | (base32 | |
813 | "1c3s4nacbwlaaccx1fr7hf72kxxrzy49y2rdz5hhqbk8r29vm8w1")))) | |
814 | (build-system gnu-build-system) | |
815 | (arguments | |
816 | `(#:phases (modify-phases %standard-phases (delete 'configure)) | |
817 | #:make-flags | |
818 | (list "CC=gcc" (string-append "prefix?=" (assoc-ref %outputs "out"))))) | |
819 | (inputs `(("git" ,git))) | |
820 | (native-inputs `(("asciidoc" ,asciidoc) | |
821 | ("docbook-xml" ,docbook-xml) | |
822 | ("docbook-xsl" ,docbook-xsl) | |
823 | ("xmllint" ,libxml2) | |
824 | ("xsltproc" ,libxslt) | |
825 | ;; These are needed for the tests. | |
826 | ("cvs" ,cvs) | |
827 | ("python" ,python-2) | |
828 | ("rcs" ,rcs))) | |
829 | (home-page "http://www.catb.org/esr/cvs-fast-export/") | |
830 | (synopsis "Export an RCS or CVS history as a fast-import stream") | |
831 | (description "This program analyzes a collection of RCS files in a CVS | |
832 | repository (or outside of one) and, when possible, emits an equivalent history | |
833 | in the form of a fast-import stream. Not all possible histories can be | |
834 | rendered this way; the program tries to emit useful warnings when it can't. | |
835 | ||
836 | The program can also produce a visualization of the resulting commit directed | |
837 | acyclic graph (DAG) in the input format of @uref{http://www.graphviz.org, | |
838 | Graphviz}. The package also includes @command{cvssync}, a tool for mirroring | |
839 | masters from remote CVS hosts.") | |
369387b6 | 840 | (license license:gpl2+))) |
59ef2030 | 841 | |
a4572a17 LC |
842 | (define-public vc-dwim |
843 | (package | |
844 | (name "vc-dwim") | |
845 | (version "1.7") | |
846 | (source (origin | |
847 | (method url-fetch) | |
848 | (uri (string-append "mirror://gnu/vc-dwim/vc-dwim-" | |
849 | version ".tar.xz")) | |
850 | (sha256 | |
851 | (base32 | |
852 | "094pjwshvazlgagc254in2xvrp93vhcj0kb5ms17qs7sch99x9z2")))) | |
853 | (build-system gnu-build-system) | |
854 | (inputs `(("perl" ,perl) | |
6aaf3899 | 855 | ("inetutils" ,inetutils))) ; for `hostname', used in the tests |
b8fc3622 | 856 | (native-inputs `(("emacs" ,emacs-minimal))) ; for `ctags' |
a4572a17 LC |
857 | (home-page "http://www.gnu.org/software/vc-dwim/") |
858 | (synopsis "Version-control-agnostic ChangeLog diff and commit tool") | |
859 | (description | |
a22dc0c4 LC |
860 | "The vc-dwim package contains two tools, \"vc-dwim\" and \"vc-chlog\". |
861 | vc-dwim is a tool that simplifies the task of maintaining a ChangeLog and | |
862 | using version control at the same time, for example by printing a reminder | |
863 | when a file change has been described in the ChangeLog but the file has not | |
79c311b8 | 864 | been added to the VC. vc-chlog scans changed files and generates |
a22dc0c4 | 865 | standards-compliant ChangeLog entries based on the changes that it detects.") |
369387b6 | 866 | (license license:gpl3+))) |
83a39ed7 LC |
867 | |
868 | (define-public diffstat | |
869 | (package | |
870 | (name "diffstat") | |
871 | (version "1.58") | |
872 | (source (origin | |
873 | (method url-fetch) | |
874 | (uri (string-append | |
875 | "ftp://invisible-island.net/diffstat/diffstat-" | |
876 | version ".tgz")) | |
877 | (sha256 | |
878 | (base32 | |
879 | "14rpf5c05ff30f6vn6pn6pzy0k4g4is5im656ahsxff3k58i7mgs")))) | |
880 | (build-system gnu-build-system) | |
881 | (home-page "http://invisible-island.net/diffstat/") | |
882 | (synopsis "Make histograms from the output of 'diff'") | |
883 | (description | |
35b9e423 | 884 | "Diffstat reads the output of 'diff' and displays a histogram of the |
83a39ed7 LC |
885 | insertions, deletions, and modifications per-file. It is useful for reviewing |
886 | large, complex patch files.") | |
369387b6 | 887 | (license (license:x11-style "file://COPYING")))) |
25f76ef0 | 888 | |
25f76ef0 JD |
889 | (define-public cssc |
890 | (package | |
891 | (name "cssc") | |
32fd2600 | 892 | (version "1.4.0") |
25f76ef0 JD |
893 | (source (origin |
894 | (method url-fetch) | |
895 | (uri (string-append "mirror://gnu/" name "/CSSC-" | |
896 | version ".tar.gz")) | |
897 | (sha256 | |
898 | (base32 | |
32fd2600 | 899 | "15191dh8hr46cvssmv4v52gymiiyk6ca9j1bfimlqakcqab6y51h")))) |
25f76ef0 JD |
900 | (build-system gnu-build-system) |
901 | (arguments | |
bf3c57ff EF |
902 | `(#:phases |
903 | (modify-phases %standard-phases | |
904 | (add-before 'check 'precheck | |
905 | (lambda _ | |
906 | (begin | |
907 | (substitute* "tests/common/test-common" | |
908 | (("/bin/pwd") (which "pwd"))) | |
909 | ||
910 | (substitute* "tests/prt/all-512.sh" | |
911 | (("/bin/sh") (which "sh"))) | |
912 | ||
913 | ;; XXX: This test has no hope of passing until there is a "nogroup" | |
914 | ;; entry (or at least some group to which the guix builder does | |
915 | ;; not belong) in the /etc/group file of the build environment. | |
916 | ;; Currently we do not have such a group. Disable this test for now. | |
917 | (substitute* "tests/Makefile" | |
918 | (("test-delta ") "")))))))) | |
25f76ef0 JD |
919 | ;; These are needed for the tests |
920 | (native-inputs `(("git" ,git) | |
921 | ("cvs" ,cvs))) | |
922 | (home-page "http://www.gnu.org/software/cssc/") | |
923 | (synopsis "File-based version control like SCCS") | |
924 | (description "GNU CSSC provides a replacement for the legacy Unix source | |
925 | code control system SCCS. This allows old code still under that system to be | |
926 | accessed and migrated on modern systems.") | |
369387b6 | 927 | (license license:gpl3+))) |
0e534e74 | 928 | |
e881752c | 929 | ;; This package can unfortunately work only in -TEST mode, since Aegis |
0e534e74 JD |
930 | ;; requires that it is installed setuid root. |
931 | (define-public aegis | |
932 | (package | |
933 | (name "aegis") | |
934 | (version "4.24") | |
935 | (source (origin | |
936 | (method url-fetch) | |
de67e922 LF |
937 | (uri (string-append "mirror://sourceforge/aegis/aegis/" version |
938 | "/aegis-" version ".tar.gz")) | |
0e534e74 JD |
939 | (sha256 |
940 | (base32 | |
941 | "18s86ssarfmc4l17gbpzybca29m5wa37cbaimdji8czlcry3mcjl")) | |
fc1adab1 AK |
942 | (patches (search-patches "aegis-perl-tempdir1.patch" |
943 | "aegis-perl-tempdir2.patch" | |
944 | "aegis-test-fixup-1.patch" | |
945 | "aegis-test-fixup-2.patch" | |
946 | "aegis-constness-error.patch")))) | |
0e534e74 JD |
947 | (build-system gnu-build-system) |
948 | (inputs | |
949 | `(("e2fsprogs" ,e2fsprogs) | |
950 | ("curl" ,curl) | |
0253ab39 | 951 | ("file" ,file) |
0e534e74 JD |
952 | ("libxml2" ,libxml2) |
953 | ("zlib" ,zlib) | |
b94a6ca0 | 954 | ("gettext" ,gettext-minimal))) |
0e534e74 JD |
955 | (native-inputs |
956 | `(("bison" ,bison) | |
957 | ("groff" ,groff) | |
958 | ("perl" ,perl) | |
959 | ;; Various tests require the following: | |
e881752c | 960 | ("cvs" ,cvs) |
0e534e74 JD |
961 | ("flex" ,flex) |
962 | ("cook" ,cook) | |
963 | ("subversion" ,subversion) | |
964 | ("rcs" ,rcs) | |
965 | ("ed" ,ed))) | |
966 | (arguments | |
e881752c | 967 | `(#:configure-flags (list "--with-no-aegis-configured" |
0e534e74 JD |
968 | "--sharedstatedir=/var/com/aegis") |
969 | #:parallel-build? #f ; There are some nasty racy rules in the Makefile. | |
e881752c | 970 | #:phases |
8ef843c7 EF |
971 | (modify-phases %standard-phases |
972 | (add-before 'configure 'pre-conf | |
973 | (lambda _ | |
974 | (substitute* (append '("configure" | |
975 | "etc/check-tar-gz.sh" | |
976 | "etc/patches.sh" | |
977 | "etc/test.sh" | |
978 | "script/aexver.in" | |
979 | "script/aebisect.in" | |
980 | "script/aeintegratq.in" | |
981 | "script/tkaegis.in" | |
982 | "script/test_funcs.in" | |
983 | "web/eg_oss_templ.sh" | |
984 | "web/webiface.html" | |
985 | "libaegis/getpw_cache.cc") | |
986 | (find-files "test" "\\.sh")) | |
987 | (("/bin/sh") (which "sh"))) | |
988 | (setenv "SH" (which "sh")))) | |
989 | (replace 'check | |
990 | (lambda _ | |
991 | (let ((home (string-append (getcwd) "/my-new-home"))) | |
992 | ;; Some tests need to write to $HOME. | |
993 | (mkdir home) | |
994 | (setenv "HOME" home) | |
995 | ||
996 | ;; This test assumes that flex has been symlinked to "lex". | |
997 | (substitute* "test/00/t0011a.sh" | |
998 | (("type lex") "type flex")) | |
999 | ||
1000 | ;; The author decided to call the check rule "sure". | |
1001 | (zero? (system* "make" "sure")))))))) | |
0e534e74 JD |
1002 | (home-page "http://aegis.sourceforge.net") |
1003 | (synopsis "Project change supervisor") | |
1004 | (description "Aegis is a project change supervisor, and performs some of | |
35b9e423 | 1005 | the Software Configuration Management needed in a CASE environment. Aegis |
0e534e74 JD |
1006 | provides a framework within which a team of developers may work on many |
1007 | changes to a program independently, and Aegis coordinates integrating these | |
1008 | changes back into the master source of the program, with as little disruption | |
35b9e423 | 1009 | as possible. Resolution of contention for source files, a major headache for |
0e534e74 | 1010 | any project with more than one developer, is one of Aegis's major functions.") |
369387b6 | 1011 | (license license:gpl3+))) |
2459141e | 1012 | |
62063d85 ML |
1013 | (define-public reposurgeon |
1014 | (package | |
1015 | (name "reposurgeon") | |
1016 | (version "3.37") | |
1017 | (source (origin | |
1018 | (method url-fetch) | |
1019 | (uri (string-append "http://www.catb.org/~esr/" name "/" | |
1020 | name "-" version ".tar.xz")) | |
1021 | (sha256 | |
1022 | (base32 | |
1023 | "14asjg4xy3mhh5z0r3k7c1wv9y803j2zfq32g5q5m95sf7yzygan")))) | |
1024 | (build-system gnu-build-system) | |
1025 | (arguments | |
1026 | `(#:tests? #f ;no test suite distributed | |
1027 | #:make-flags | |
1028 | (list (string-append "target=" (assoc-ref %outputs "out"))) | |
1029 | #:phases | |
1030 | (modify-phases %standard-phases | |
1031 | (delete 'configure) | |
1032 | (add-before 'build 'fix-docbook | |
1033 | (lambda* (#:key inputs #:allow-other-keys) | |
1034 | (substitute* (find-files "." "\\.xml$") | |
1035 | (("docbook/docbookx.dtd") | |
1036 | (string-append (assoc-ref inputs "docbook-xml") | |
1037 | "/xml/dtd/docbook/docbookx.dtd"))) | |
1038 | #t)) | |
1039 | (add-after 'install 'install-emacs-data | |
1040 | (lambda* (#:key outputs #:allow-other-keys) | |
1041 | (install-file "reposurgeon-mode.el" | |
1042 | (string-append (assoc-ref outputs "out") | |
1043 | "/share/emacs/site-lisp"))))))) | |
1044 | (inputs | |
1045 | `(("python" ,python-wrapper))) | |
1046 | (native-inputs | |
1047 | `(("asciidoc" ,asciidoc) | |
1048 | ("docbook-xml" ,docbook-xml-4.1.2) | |
1049 | ("docbook-xsl" ,docbook-xsl) | |
1050 | ("libxml2" ,libxml2) | |
1051 | ("xmlto" ,xmlto))) | |
1052 | (home-page "http://www.catb.org/~esr/reposurgeon/") | |
1053 | (synopsis "Edit version-control repository history") | |
1054 | (description "Reposurgeon enables risky operations that version-control | |
1055 | systems don't want to let you do, such as editing past comments and metadata | |
1056 | and removing commits. It works with any version control system that can | |
1057 | export and import Git fast-import streams, including Git, Mercurial, Fossil, | |
1058 | Bazaar, CVS, RCS, and Src. It can also read Subversion dump files directly | |
1059 | and can thus be used to script production of very high-quality conversions | |
1060 | from Subversion to any supported Distributed Version Control System (DVCS).") | |
1061 | ;; Most files are distributed under bsd-2, except 'repocutter' which is | |
1062 | ;; under bsd-3. | |
369387b6 | 1063 | (license (list license:bsd-2 license:bsd-3)))) |
62063d85 | 1064 | |
2459141e TČ |
1065 | (define-public tig |
1066 | (package | |
1067 | (name "tig") | |
50feff81 | 1068 | (version "2.2") |
2459141e TČ |
1069 | (source (origin |
1070 | (method url-fetch) | |
1071 | (uri (string-append | |
1072 | "http://jonas.nitro.dk/tig/releases/tig-" | |
1073 | version ".tar.gz")) | |
1074 | (sha256 | |
1075 | (base32 | |
50feff81 | 1076 | "0k3m894vfkgkj7xbr0j6ph91351dl6id5f0hk2ksjp5lmg9i6llg")))) |
2459141e | 1077 | (build-system gnu-build-system) |
2203e4c2 EF |
1078 | (native-inputs |
1079 | `(("asciidoc" ,asciidoc) | |
1080 | ("xmlto" ,xmlto))) | |
2459141e | 1081 | (inputs |
d0e11e8b EF |
1082 | `(("ncurses" ,ncurses) |
1083 | ("readline" ,readline))) | |
2459141e | 1084 | (arguments |
2203e4c2 EF |
1085 | `(#:phases |
1086 | (modify-phases %standard-phases | |
1087 | (add-after 'install 'install-doc | |
1088 | (lambda _ | |
1089 | (zero? (system* "make" "install-doc"))))) | |
1090 | #:tests? #f)) ; tests require access to /dev/tty | |
92d9a36e | 1091 | ;;`(#:test-target "test")) |
2459141e TČ |
1092 | (home-page "http://jonas.nitro.dk/tig/") |
1093 | (synopsis "Ncurses-based text user interface for Git") | |
1094 | (description | |
1095 | "Tig is an ncurses text user interface for Git, primarily intended as | |
1096 | a history browser. It can also stage hunks for commit, or colorize the | |
1097 | output of the 'git' command.") | |
369387b6 | 1098 | (license license:gpl2+))) |
df7393b9 LC |
1099 | |
1100 | (define-public findnewest | |
1101 | (package | |
1102 | (name "findnewest") | |
9c7e7ead | 1103 | (version "0.3") |
df7393b9 LC |
1104 | (source (origin |
1105 | (method url-fetch) | |
1106 | (uri (string-append | |
1107 | "https://github.com/0-wiz-0/findnewest/archive/findnewest-" | |
1108 | version ".tar.gz")) | |
1109 | (sha256 | |
1110 | (base32 | |
9c7e7ead | 1111 | "1ydis4y0amkgfr4y60sn076f1l41ya2kn89kfd9fqf44f9ccgb5r")))) |
df7393b9 LC |
1112 | (build-system gnu-build-system) |
1113 | (arguments | |
1114 | '(#:phases (modify-phases %standard-phases | |
1115 | (add-before 'configure 'bootstrap | |
1116 | (lambda _ | |
1117 | (zero? (system* "autoreconf" "-vfi"))))))) | |
1118 | (native-inputs `(("autoconf" ,autoconf) | |
1119 | ("automake" ,automake))) | |
1120 | (home-page "https://github.com/0-wiz-0/findnewest/releases") | |
1121 | (synopsis "Print the modification time of the latest file") | |
1122 | (description | |
1123 | "Recursively find the newest file in a file tree and print its | |
1124 | modification time.") | |
369387b6 | 1125 | (license license:bsd-2))) |
e92b8599 KM |
1126 | |
1127 | (define-public myrepos | |
1128 | (package | |
1129 | (name "myrepos") | |
17206f72 | 1130 | (version "1.20160123") |
e92b8599 KM |
1131 | (source |
1132 | (origin | |
1133 | (method url-fetch) | |
1134 | (uri (string-append | |
1135 | "https://github.com/joeyh/myrepos/archive/" | |
1136 | version ".tar.gz")) | |
1137 | (file-name (string-append name "-" version ".tar.gz")) | |
1138 | (sha256 | |
17206f72 | 1139 | (base32 "1723cg5haplz2w9dwdzp6ds1ip33cx3awmj4wnb0h4yq171v5lqk")))) |
e92b8599 KM |
1140 | (build-system gnu-build-system) |
1141 | (inputs | |
1142 | `(("perl" ,perl))) | |
1143 | (arguments | |
1144 | `(#:test-target "test" | |
1145 | #:phases (alist-delete 'configure %standard-phases) | |
1146 | #:make-flags (list (string-append "PREFIX=" %output)))) | |
1147 | (home-page "http://myrepos.branchable.com/") | |
1148 | (synopsis "Multiple repository management tool") | |
1149 | (description | |
1150 | "Myrepos provides the @code{mr} command, which maps an operation (e.g., | |
1151 | fetching updates) over a collection of version control repositories. It | |
1152 | supports a large number of version control systems: Git, Subversion, | |
1153 | Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.") | |
369387b6 | 1154 | (license license:gpl2+))) |
e8d2168c EF |
1155 | |
1156 | (define-public git-annex-remote-hubic | |
1157 | (package | |
1158 | (name "git-annex-remote-hubic") | |
1159 | (version "0.3.1") | |
1160 | (source (origin | |
1161 | (method url-fetch) | |
1162 | (uri (string-append | |
1163 | "https://github.com/Schnouki/" name "/archive/v" | |
1164 | version ".tar.gz")) | |
1165 | (file-name (string-append name "-" version ".tar.gz")) | |
1166 | (sha256 | |
1167 | (base32 | |
1168 | "196g3jkaybjx11nbr51n0cjps3wjzb145ab76y717diqvvxp5v4r")))) | |
1169 | (build-system python-build-system) | |
f71d1a08 | 1170 | (arguments `(#:python ,python-2)) |
e8d2168c | 1171 | (native-inputs |
f3b98f4f | 1172 | `(;; for the tests |
f71d1a08 | 1173 | ("python2-six" ,python2-six))) |
e8d2168c | 1174 | (propagated-inputs |
f71d1a08 EF |
1175 | `(("python2-dateutil" ,python2-dateutil-2) |
1176 | ("python2-futures" ,python2-futures) | |
1177 | ("python2-rauth" ,python2-rauth) | |
1178 | ("python2-swiftclient" ,python2-swiftclient))) | |
e8d2168c EF |
1179 | (home-page "https://github.com/Schnouki/git-annex-remote-hubic/") |
1180 | (synopsis "Use hubic as a git-annex remote") | |
1181 | (description | |
1182 | "This package allows you to use your hubic account as a \"special | |
1183 | repository\" with git-annex.") | |
369387b6 | 1184 | (license license:gpl3+))) |
f36a1eba EB |
1185 | |
1186 | (define-public fossil | |
1187 | (package | |
1188 | (name "fossil") | |
7a3f9405 | 1189 | (version "1.35") |
f36a1eba EB |
1190 | (source |
1191 | (origin | |
1192 | (method url-fetch) | |
f36a1eba | 1193 | (uri (string-append |
7a3f9405 EF |
1194 | "https://www.fossil-scm.org/index.html/uv/download/" |
1195 | "fossil-src-" version ".tar.gz")) | |
f36a1eba EB |
1196 | (sha256 |
1197 | (base32 | |
7a3f9405 | 1198 | "07ds6rhq69bhydpm9a01mgdhxf88p9b6y5hdnhn8gjc7ba92zyf1")))) |
f36a1eba EB |
1199 | (build-system gnu-build-system) |
1200 | (native-inputs | |
1201 | `(("tcl" ,tcl) ;for configuration only | |
1202 | ("which" ,which) ;for tests only | |
1203 | ("ed" ,ed))) ;ditto | |
1204 | (inputs | |
1205 | `(("openssl" ,openssl) | |
1206 | ("zlib" ,zlib) | |
1207 | ("sqlite" ,sqlite))) | |
1208 | (arguments | |
1209 | `(#:configure-flags (list "--with-openssl=auto" | |
1210 | "--disable-internal-sqlite") | |
1211 | #:test-target "test" | |
1212 | #:phases (modify-phases %standard-phases | |
1213 | (replace 'configure | |
1214 | (lambda* (#:key outputs (configure-flags '()) | |
1215 | #:allow-other-keys) | |
1216 | ;; The 'configure' script is not an autoconf script and | |
1217 | ;; chokes on unrecognized options. | |
1218 | (zero? (apply system* | |
1219 | "./configure" | |
1220 | (string-append "--prefix=" | |
1221 | (assoc-ref outputs "out")) | |
1222 | configure-flags)))) | |
1223 | (add-before 'check 'test-setup | |
1224 | (lambda _ | |
1225 | (setenv "USER" "guix") | |
1226 | (setenv "TZ" "UTC") | |
1227 | ;; Fixing the th1 test would require many backports, so | |
1228 | ;; just disable for now. | |
1229 | (delete-file "test/th1.test") | |
1230 | #t))))) | |
1231 | (home-page "https://fossil-scm.org") | |
1232 | (synopsis "Software configuration management system") | |
1233 | (description | |
1234 | "Fossil is a distributed source control management system which supports | |
1235 | access and administration over HTTP CGI or via a built-in HTTP server. It has | |
1236 | a built-in wiki, built-in file browsing, built-in tickets system, etc.") | |
369387b6 | 1237 | (license (list license:public-domain ;src/miniz.c, src/shell.c |
1238 | license:bsd-2)))) | |
1062f245 | 1239 | |
1240 | (define-public stagit | |
1241 | (package | |
1242 | (name "stagit") | |
1243 | (version "0.4") | |
1244 | (source (origin | |
1245 | (method url-fetch) | |
1246 | (uri (string-append "http://dl.2f30.org/releases/" | |
1247 | name "-" version ".tar.gz")) | |
1248 | (sha256 | |
1249 | (base32 | |
1250 | "0z5r06wqrfnsz24ci4hjqbd62svclvhkgzaq9npsyjcp6jnf7izc")))) | |
1251 | (build-system gnu-build-system) | |
1252 | (arguments | |
1253 | `(#:tests? #f ; No tests | |
1254 | #:make-flags (list "CC=gcc" | |
1255 | (string-append "PREFIX=" %output)) | |
1256 | #:phases | |
1257 | (modify-phases %standard-phases | |
1258 | (delete 'configure)))) ; No configure script | |
1259 | (inputs | |
1260 | `(("libgit2" ,libgit2))) | |
1261 | (home-page "http://2f30.org") | |
1262 | (synopsis "Static git page generator") | |
1263 | (description "Stagit creates static pages for git repositories, the results can | |
1264 | be served with a HTTP file server of your choice.") | |
1265 | (license license:expat))) |