gnu: Add java-jboss-jms-api-spec.
[jackhill/guix/guix.git] / gnu / packages / version-control.scm
CommitLineData
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>
fcd75bdb 4;;; Copyright © 2013, 2014, 2015, 2016, 2017 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>
f968f1a7 9;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
e92b8599 10;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
2613f5af 11;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
8343d373 12;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
877c6163 13;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
35ad6b2e 14;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
136968fb 15;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
0ea45ef4 16;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
ed2b7cb2 17;;; Copyright © 2017 André <eu@euandre.org>
c9f4f56b 18;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
205441eb 19;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
dcee3fc5
NK
20;;;
21;;; This file is part of GNU Guix.
22;;;
23;;; GNU Guix is free software; you can redistribute it and/or modify it
24;;; under the terms of the GNU General Public License as published by
25;;; the Free Software Foundation; either version 3 of the License, or (at
26;;; your option) any later version.
27;;;
28;;; GNU Guix is distributed in the hope that it will be useful, but
29;;; WITHOUT ANY WARRANTY; without even the implied warranty of
30;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31;;; GNU General Public License for more details.
32;;;
33;;; You should have received a copy of the GNU General Public License
34;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
35
1b1c335f 36(define-module (gnu packages version-control)
369387b6 37 #:use-module ((guix licenses) #:prefix license:)
d1cba090 38 #:use-module (guix utils)
dcee3fc5
NK
39 #:use-module (guix packages)
40 #:use-module (guix download)
c7810bd1 41 #:use-module (guix git-download)
2613f5af 42 #:use-module (guix build-system ant)
086e498b 43 #:use-module (guix build-system cmake)
1b1c335f 44 #:use-module (guix build-system gnu)
d81f131f 45 #:use-module (guix build-system haskell)
dcee3fc5 46 #:use-module (guix build-system python)
c7810bd1 47 #:use-module (guix build-system trivial)
2b24faa2 48 #:use-module (gnu packages apr)
df7393b9 49 #:use-module (gnu packages autotools)
99828fa7 50 #:use-module (gnu packages documentation)
c7810bd1 51 #:use-module (gnu packages base)
0e534e74
JD
52 #:use-module (gnu packages bison)
53 #:use-module (gnu packages cook)
d9ff410f 54 #:use-module (gnu packages curl)
59ef2030 55 #:use-module (gnu packages docbook)
740c24df 56 #:use-module (gnu packages ed)
0e534e74
JD
57 #:use-module (gnu packages file)
58 #:use-module (gnu packages flex)
fc1e4516 59 #:use-module (gnu packages gettext)
0e534e74 60 #:use-module (gnu packages groff)
d81f131f 61 #:use-module (gnu packages haskell)
a06b9b50 62 #:use-module (gnu packages haskell-check)
f24eba89 63 #:use-module (gnu packages haskell-crypto)
44b7374a 64 #:use-module (gnu packages haskell-web)
2613f5af 65 #:use-module (gnu packages java)
0e534e74 66 #:use-module (gnu packages linux)
1972fed4 67 #:use-module (gnu packages nano)
2459141e 68 #:use-module (gnu packages ncurses)
378b01dc 69 #:use-module (gnu packages ssh)
46138f3e 70 #:use-module (gnu packages web)
e8d2168c 71 #:use-module (gnu packages openstack)
cf3fe3b0 72 #:use-module (gnu packages perl)
5ccde207 73 #:use-module (gnu packages perl-check)
fc1e4516 74 #:use-module (gnu packages pkg-config)
cf3fe3b0 75 #:use-module (gnu packages python)
1b2f753d 76 #:use-module (gnu packages python-web)
d0e11e8b 77 #:use-module (gnu packages readline)
5f96f303 78 #:use-module (gnu packages databases)
9de46ffb 79 #:use-module (gnu packages admin)
d9ff410f 80 #:use-module (gnu packages xml)
a4572a17 81 #:use-module (gnu packages emacs)
8b2fe785 82 #:use-module (gnu packages compression)
ecfb6993 83 #:use-module (gnu packages swig)
25f76ef0 84 #:use-module (gnu packages tcl)
cc2b77df 85 #:use-module (gnu packages tls)
58c18069
EB
86 #:use-module (gnu packages)
87 #:use-module (ice-9 match)
88 #:use-module (srfi srfi-1))
dcee3fc5
NK
89
90(define-public bazaar
91 (package
92 (name "bazaar")
d1cba090 93 (version "2.7.0")
dcee3fc5
NK
94 (source
95 (origin
96 (method url-fetch)
d1cba090
EF
97 (uri (string-append "https://launchpad.net/bzr/"
98 (version-major+minor version) "/" version
dcee3fc5
NK
99 "/+download/bzr-" version ".tar.gz"))
100 (sha256
101 (base32
d1cba090 102 "1cysix5k3wa6y7jjck3ckq3abls4gvz570s0v0hxv805nwki4i8d"))))
dcee3fc5
NK
103 (build-system python-build-system)
104 (inputs
105 ;; Note: 'tools/packaging/lp-upload-release' and 'tools/weavemerge.sh'
106 ;; require Zsh.
b94a6ca0 107 `(("gettext" ,gettext-minimal)))
dcee3fc5 108 (arguments
1611eccd 109 `(#:tests? #f ; no test target
3b9af0f3 110 #:python ,python-2 ; Python 3 apparently not yet supported, see
1611eccd 111 ; https://answers.launchpad.net/bzr/+question/229048
730c740e
EF
112 #:phases
113 (modify-phases %standard-phases
114 (add-after 'unpack 'fix-mandir
115 (lambda _
116 (substitute* "setup.py"
117 (("man/man1") "share/man/man1"))
118 #t)))))
dcee3fc5 119 (home-page "https://gnu.org/software/bazaar")
79c311b8 120 (synopsis "Version control system supporting both distributed and centralized workflows")
dcee3fc5 121 (description
79c311b8 122 "GNU Bazaar is a version control system that allows you to record
35b9e423 123changes to project files over time. It supports both a distributed workflow
79c311b8 124as well as the classic centralized workflow.")
369387b6 125 (license license:gpl2+)))
1b1c335f 126
d9ff410f
AE
127(define-public git
128 (package
129 (name "git")
8343d373
LF
130 ;; XXX When updating Git, check if the special 'git:src' input to cgit needs
131 ;; to be updated as well.
88b35013 132 (version "2.15.0")
d9ff410f
AE
133 (source (origin
134 (method url-fetch)
4d96439d 135 (uri (string-append "mirror://kernel.org/software/scm/git/git-"
ff212a5c 136 version ".tar.xz"))
d9ff410f
AE
137 (sha256
138 (base32
88b35013 139 "0siyxg1ppg6szjp8xp37zfq1fj97kbdxpigi3asmidqhkx41cw8h"))))
d9ff410f 140 (build-system gnu-build-system)
2a5e15c6
LC
141 (native-inputs
142 `(("native-perl" ,perl)
b94a6ca0 143 ("gettext" ,gettext-minimal)
d1cada04
LF
144 ("git-manpages"
145 ,(origin
146 (method url-fetch)
147 (uri (string-append
148 "mirror://kernel.org/software/scm/git/git-manpages-"
149 version ".tar.xz"))
150 (sha256
38f8a882 151
d1cada04 152 (base32
88b35013 153 "0xqwfg9xz5nw3ifaki87ahbz0xk5zmkgqs0ig357pxwh2i20kb92"))))))
d9ff410f
AE
154 (inputs
155 `(("curl" ,curl)
156 ("expat" ,expat)
d9ff410f
AE
157 ("openssl" ,openssl)
158 ("perl" ,perl)
d1f30e99 159 ("python" ,python-2) ; CAVEAT: incompatible with python-3 according to INSTALL
ed5f49ff
LC
160 ("zlib" ,zlib)
161
3bec8a01
RW
162 ;; For 'gitweb.cgi'
163 ("perl-cgi" ,perl-cgi)
164
ed5f49ff 165 ;; For 'git-svn'.
ecfb6993 166 ("subversion" ,subversion)
b411517a 167 ("perl-term-readkey" ,perl-term-readkey)
ecfb6993 168
58c18069
EB
169 ;; For 'git-send-email'
170 ("perl-authen-sasl" ,perl-authen-sasl)
171 ("perl-net-smtp-ssl" ,perl-net-smtp-ssl)
172 ("perl-io-socket-ssl" ,perl-io-socket-ssl)
173
ecfb6993
LC
174 ;; For 'git gui', 'gitk', and 'git citool'.
175 ("tcl" ,tcl)
176 ("tk" ,tk)))
177 (outputs '("out" ; the core
58c18069 178 "send-email" ; for git-send-email
ecfb6993
LC
179 "svn" ; git-svn
180 "gui")) ; gitk, git gui
d9ff410f 181 (arguments
1a59b6d0
LC
182 `(#:make-flags `("V=1" ;more verbose compilation
183
184 ;; By default 'make install' creates hard links for
185 ;; things in 'libexec/git-core', which leads to huge
9006f8bc 186 ;; nars; see <https://bugs.gnu.org/21949>.
1a59b6d0 187 "NO_INSTALL_HARDLINKS=indeed")
d9ff410f 188 #:test-target "test"
ecfb6993
LC
189
190 ;; The explicit --with-tcltk forces the build system to hardcode the
191 ;; absolute file name to 'wish'.
192 #:configure-flags (list (string-append "--with-tcltk="
193 (assoc-ref %build-inputs "tk")
194 "/bin/wish8.6")) ; XXX
195
58c18069
EB
196 #:modules ((srfi srfi-1)
197 ,@%gnu-build-system-modules)
d9ff410f 198 #:phases
98378db6 199 (modify-phases %standard-phases
0fff1495 200 (add-after 'configure 'patch-makefiles
98378db6
LC
201 (lambda _
202 (substitute* "Makefile"
203 (("/bin/sh") (which "sh"))
204 (("/usr/bin/perl") (which "perl"))
0fff1495
MB
205 (("/usr/bin/python") (which "python")))
206 (substitute* "perl/Makefile"
207 ;; Don't create timestamped 'perllocal.pod'.
208 (("\\$< PREFIX=") "$< NO_PERLLOCAL=1 PREFIX="))
209 #t))
8601feae
LC
210 (add-after 'configure 'add-PM.stamp
211 (lambda _
212 ;; Add the "PM.stamp" to avoid "no rule to make target".
213 (call-with-output-file "perl/PM.stamp" (const #t))
214 #t))
c9f4f56b
MB
215 (add-before 'check 'patch-tests
216 (lambda _
217 ;; These files contain some funny bytes that Guile is unable
218 ;; to decode for shebang patching. Just delete them.
219 (for-each delete-file '("t/t4201-shortlog.sh"
220 "t/t7813-grep-icase-iso.sh"))
221 ;; Many tests contain inline shell scripts (hooks etc).
222 (substitute* (find-files "t" "\\.sh$")
223 (("#!/bin/sh") (string-append "#!" (which "sh"))))
224 ;; Un-do shebang patching here to prevent checksum mismatch.
225 (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post")
226 (("^#!.*/bin/perl") "#!/usr/bin/perl"))
227 (substitute* "t/t5003-archive-zip.sh"
228 (("cp /bin/sh") (string-append "cp " (which "sh"))))
229 (substitute* "t/t6030-bisect-porcelain.sh"
230 (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
231 ;; FIXME: This test runs `git commit` with a bogus EDITOR
232 ;; and empty commit message, but does not fail the way it's
233 ;; expected to. The test passes when invoked interactively.
234 (substitute* "t/t7508-status.sh"
235 (("\tcommit_template_commented") "\ttrue"))
236 ;; More checksum mismatches due to odd shebangs.
237 (substitute* "t/t9100-git-svn-basic.sh"
238 (("\"#!/gnu.*/bin/sh") "\"#!/bin/sh"))
239 (substitute* "t/t9300-fast-import.sh"
240 (("\t#!/gnu.*/bin/sh") "\t#!/bin/sh")
241 (("'#!/gnu.*/bin/sh") "'#!/bin/sh"))
242 ;; FIXME: Some hooks fail with "basename: command not found".
243 ;; See 't/trash directory.t9164.../svn-hook.log'.
244 (delete-file "t/t9164-git-svn-dcommit-concurrent.sh")
245 #t))
98378db6
LC
246 (add-after 'install 'install-shell-completion
247 (lambda* (#:key outputs #:allow-other-keys)
248 (let* ((out (assoc-ref outputs "out"))
249 (completions (string-append out "/etc/bash_completion.d")))
250 ;; TODO: Install the tcsh and zsh completions in the right place.
251 (mkdir-p completions)
252 (copy-file "contrib/completion/git-completion.bash"
253 (string-append completions "/git"))
254 #t)))
255 (add-after 'install 'split
23c0e743
LC
256 (lambda* (#:key inputs outputs #:allow-other-keys)
257 ;; Split the binaries to the various outputs.
258 (let* ((out (assoc-ref outputs "out"))
58c18069 259 (se (assoc-ref outputs "send-email"))
23c0e743
LC
260 (svn (assoc-ref outputs "svn"))
261 (gui (assoc-ref outputs "gui"))
262 (gitk (string-append out "/bin/gitk"))
263 (gitk* (string-append gui "/bin/gitk"))
264 (git-gui (string-append out "/libexec/git-core/git-gui"))
265 (git-gui* (string-append gui "/libexec/git-core/git-gui"))
266 (git-cit (string-append out "/libexec/git-core/git-citool"))
267 (git-cit* (string-append gui "/libexec/git-core/git-citool"))
58c18069
EB
268 (git-se (string-append out "/libexec/git-core/git-send-email"))
269 (git-se* (string-append se "/libexec/git-core/git-send-email"))
23c0e743
LC
270 (git-svn (string-append out "/libexec/git-core/git-svn"))
271 (git-svn* (string-append svn "/libexec/git-core/git-svn"))
272 (git-sm (string-append out
273 "/libexec/git-core/git-submodule")))
274 (mkdir-p (string-append gui "/bin"))
275 (mkdir-p (string-append gui "/libexec/git-core"))
58c18069 276 (mkdir-p (string-append se "/libexec/git-core"))
23c0e743 277 (mkdir-p (string-append svn "/libexec/git-core"))
ecfb6993 278
23c0e743
LC
279 (for-each (lambda (old new)
280 (copy-file old new)
281 (delete-file old)
282 (chmod new #o555))
58c18069
EB
283 (list gitk git-gui git-cit git-se git-svn)
284 (list gitk* git-gui* git-cit* git-se* git-svn*))
ed5f49ff 285
b411517a 286 ;; Tell 'git-svn' where Subversion and perl-term-readkey are.
23c0e743
LC
287 (wrap-program git-svn*
288 `("PATH" ":" prefix
289 (,(string-append (assoc-ref inputs "subversion")
290 "/bin")))
291 `("PERL5LIB" ":" prefix
b411517a
TD
292 ,(map (lambda (i) (string-append (assoc-ref inputs i)
293 "/lib/perl5/site_perl"))
294 '("subversion" "perl-term-readkey")))
ed5f49ff 295
23c0e743
LC
296 ;; XXX: The .so for SVN/Core.pm lacks a RUNPATH, so
297 ;; help it find 'libsvn_client-1.so'.
298 `("LD_LIBRARY_PATH" ":" prefix
299 (,(string-append (assoc-ref inputs "subversion")
300 "/lib"))))
0a5a1db2 301
58c18069
EB
302 ;; Tell 'git-send-email' where perl modules are.
303 (wrap-program git-se*
304 `("PERL5LIB" ":" prefix
305 ,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
355e53c4 306 (list
a6d0b306 307 ,@(transitive-input-references
355e53c4 308 'inputs
a6d0b306
EB
309 (map (lambda (l)
310 (assoc l (inputs)))
311 '("perl-authen-sasl"
312 "perl-net-smtp-ssl"
313 "perl-io-socket-ssl")))))))
3bec8a01
RW
314
315 ;; Tell 'gitweb.cgi' where perl modules are.
316 (wrap-program (string-append out "/share/gitweb/gitweb.cgi")
317 `("PERL5LIB" ":" prefix
318 ,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
319 (list
320 ,@(transitive-input-references
321 'inputs
322 (map (lambda (l)
323 (assoc l (inputs)))
324 '("perl-cgi")))))))
58c18069 325
23c0e743
LC
326 ;; Tell 'git-submodule' where Perl is.
327 (wrap-program git-sm
328 `("PATH" ":" prefix
329 (,(string-append (assoc-ref inputs "perl")
82de2655 330 "/bin")))))))
d1cada04
LF
331 (add-after 'split 'install-man-pages
332 (lambda* (#:key inputs outputs #:allow-other-keys)
333 (let* ((out (assoc-ref outputs "out"))
334 (man (string-append out "/share/man"))
335 (manpages (assoc-ref inputs "git-manpages")))
336 (mkdir-p man)
337 (with-directory-excursion man
338 (zero? (system* "tar" "xvf" manpages)))))))))
da699774
LC
339
340 (native-search-paths
341 ;; For HTTPS access, Git needs a single-file certificate bundle, specified
342 ;; with $GIT_SSL_CAINFO.
da699774
LC
343 (list (search-path-specification
344 (variable "GIT_SSL_CAINFO")
6d461b21 345 (file-type 'regular)
fcd75bdb 346 (separator #f) ;single entry
82de2655
DC
347 (files '("etc/ssl/certs/ca-certificates.crt")))
348 (search-path-specification
349 (variable "GIT_EXEC_PATH")
e3ff8383 350 (separator #f) ;single entry
82de2655 351 (files '("libexec/git-core")))))
da699774 352
d9ff410f
AE
353 (synopsis "Distributed version control system")
354 (description
355 "Git is a free distributed version control system designed to handle
356everything from small to very large projects with speed and efficiency.")
369387b6 357 (license license:gpl2)
9006f8bc 358 (home-page "https://git-scm.com/")))
d9ff410f 359
086e498b
RW
360(define-public libgit2
361 (package
362 (name "libgit2")
58dce7bf 363 (version "0.26.0")
086e498b
RW
364 (source (origin
365 (method url-fetch)
366 (uri (string-append "https://github.com/libgit2/libgit2/"
367 "archive/v" version ".tar.gz"))
368 (file-name (string-append name "-" version ".tar.gz"))
369 (sha256
370 (base32
fd75eb6c 371 "1b3figbhp5l83vd37vq6j2narrq4yl9pfw6mw0px0dzb1hz3jqka"))
58dce7bf 372 (patches (search-patches "libgit2-0.25.1-mtime-0.patch"))))
086e498b 373 (build-system cmake-build-system)
8ecba89b 374 (outputs '("out" "debug"))
086e498b 375 (arguments
3d0fbd3c
LF
376 `(#:configure-flags '("-DUSE_SHA1DC=ON") ; SHA-1 collision detection
377 #:phases
086e498b
RW
378 (modify-phases %standard-phases
379 (add-after 'unpack 'fix-hardcoded-paths
380 (lambda _
381 (substitute* "tests/repo/init.c"
382 (("#!/bin/sh") (string-append "#!" (which "sh"))))
383 (substitute* "tests/clar/fs.h"
384 (("/bin/cp") (which "cp"))
385 (("/bin/rm") (which "rm")))
386 #t))
387 ;; Run checks more verbosely.
388 (replace 'check
389 (lambda _ (zero? (system* "./libgit2_clar" "-v" "-Q")))))))
390 (inputs
391 `(("libssh2" ,libssh2)
392 ("libcurl" ,curl)
34cfeca8 393 ("python" ,python-wrapper)))
086e498b
RW
394 (native-inputs
395 `(("pkg-config" ,pkg-config)))
413f71f3
LC
396 (propagated-inputs
397 ;; These two libraries are in 'Requires.private' in libgit2.pc.
398 `(("openssl" ,openssl)
399 ("zlib" ,zlib)))
9bf160a3 400 (home-page "https://libgit2.github.com/")
086e498b
RW
401 (synopsis "Library providing Git core methods")
402 (description
403 "Libgit2 is a portable, pure C implementation of the Git core methods
404provided as a re-entrant linkable library with a solid API, allowing you to
405write native speed custom Git applications in any language with bindings.")
406 ;; GPLv2 with linking exception
369387b6 407 (license license:gpl2)))
086e498b 408
53ff5495
DC
409(define-public git-crypt
410 (package
411 (name "git-crypt")
412 (version "0.5.0")
413 (source (origin
414 (method url-fetch)
415 (uri (string-append "https://github.com/AGWA/git-crypt"
416 "/archive/" version ".tar.gz"))
417 (file-name (string-append name "-" version ".tar.gz"))
418 (sha256
419 (base32
420 "0454fdmgm5f3razkn8n03lfqm5zyzvr4r2528zmlxiwba9518l2i"))))
421 (build-system gnu-build-system)
422 (inputs
423 `(("git" ,git)
424 ("openssl" ,openssl)))
425 (arguments
426 `(#:tests? #f ; No tests.
427 #:phases
428 (modify-phases %standard-phases
429 (delete 'configure)
430 (replace 'build
431 (lambda _
432 (zero? (system* "make"))))
433 (replace 'install
434 (lambda* (#:key outputs #:allow-other-keys)
435 (let ((out (assoc-ref outputs "out")))
436 (zero? (system* "make" "install"
437 (string-append "PREFIX=" out)))))))))
438 (home-page "https://www.agwa.name/projects/git-crypt")
439 (synopsis "Transparent encryption of files in a git repository")
440 (description "git-crypt enables transparent encryption and decryption of
79990ce3
TGR
441files in a git repository. Files which you choose to protect are encrypted when
442committed, and decrypted when checked out. git-crypt lets you freely share a
443repository containing a mix of public and private content. git-crypt gracefully
53ff5495 444degrades, so developers without the secret key can still clone and commit to a
79990ce3 445repository with encrypted files. This lets you store your secret material (such
53ff5495
DC
446as keys or passwords) in the same repository as your code, without requiring you
447to lock down your entire repository.")
448 (license license:gpl3+)))
449
ed2b7cb2
AM
450(define-public git-remote-gcrypt
451 (package
452 (name "git-remote-gcrypt")
453 (version "1.0.1")
454 (source (origin
455 (method git-fetch)
456 (uri (git-reference
457 (url "https://git.spwhitton.name/git-remote-gcrypt")
458 (commit version)))
459 (file-name (string-append name "-" version "-checkout"))
460 (sha256
461 (base32
462 "0znrx77vpm4a8l7yiybsxk5vrawijqqfxmp1p2yhaaw8cbgrj7az"))))
463 (build-system trivial-build-system)
464 (arguments
465 `(#:modules ((guix build utils))
466 #:builder (begin
467 (use-modules (guix build utils))
468 (let* ((source (assoc-ref %build-inputs "source"))
469 (output (assoc-ref %outputs "out"))
470 (bindir (string-append output "/bin")))
471 (install-file (string-append source "/git-remote-gcrypt")
472 bindir)
473 #t))))
474 (home-page "https://spwhitton.name/tech/code/git-remote-gcrypt/")
475 (synopsis "Whole remote repository encryption")
476 (description "git-remote-gcrypt is a Git remote helper to push and pull from
477repositories encrypted with GnuPG. It works with the standard Git transports,
478including repository hosting services like GitLab.
479
480Remote helper programs are invoked by Git to handle network transport. This
481helper handles @code{gcrypt:} URLs that access a remote repository encrypted
482with GPG, using our custom format.
483
484Supported locations are local, @code{rsync://} and @code{sftp://}, where the
485repository is stored as a set of files, or instead any Git URL where gcrypt
486will store the same representation in a Git repository, bridged over arbitrary
487Git transport.
488
489The aim is to provide confidential, authenticated Git storage and
490collaboration using typical untrusted file hosts or services.")
491 (license license:gpl3+)))
492
7ad1fee5
SB
493(define-public cgit
494 (package
495 (name "cgit")
8343d373
LF
496 ;; XXX When updating cgit, try removing the special 'git:src' input and
497 ;; using the source of the git package.
136968fb 498 (version "1.1")
7ad1fee5
SB
499 (source (origin
500 (method url-fetch)
501 (uri (string-append
502 "https://git.zx2c4.com/cgit/snapshot/cgit-"
503 version ".tar.xz"))
504 (sha256
505 (base32
136968fb 506 "142qcgs8dwnzhymn0a7xx47p9fc2z5wrb86ah4a9iz0mpqlsz288"))))
7ad1fee5
SB
507 (build-system gnu-build-system)
508 (arguments
509 '(#:tests? #f ; XXX: fail to build the in-source git.
510 #:test-target "test"
511 #:make-flags '("CC=gcc" "SHELL_PATH=sh")
512 #:phases
513 (modify-phases %standard-phases
514 (add-after 'unpack 'unpack-git
515 (lambda* (#:key inputs #:allow-other-keys)
516 ;; Unpack the source of git into the 'git' directory.
517 (zero? (system*
518 "tar" "--strip-components=1" "-C" "git" "-xf"
519 (assoc-ref inputs "git:src")))))
520 (delete 'configure) ; no configure script
521 (add-after 'build 'build-man
522 (lambda* (#:key make-flags #:allow-other-keys)
523 (zero? (apply system* `("make" ,@make-flags "doc-man")))))
524 (replace 'install
525 (lambda* (#:key make-flags outputs #:allow-other-keys)
526 (let ((out (assoc-ref outputs "out")))
527 (and (zero? (apply system*
528 `("make" ,@make-flags
529 ,(string-append "prefix=" out)
530 ,(string-append
531 "CGIT_SCRIPT_PATH=" out "/share/cgit")
532 "install" "install-man")))
533 ;; Move the platform-dependent 'cgit.cgi' into lib
534 ;; to get it stripped.
535 (rename-file (string-append out "/share/cgit/cgit.cgi")
536 (string-append out "/lib/cgit/cgit.cgi"))
537 #t)))))))
538 (native-inputs
539 ;; For building manpage.
4b0e6367 540 `(("asciidoc" ,asciidoc)))
7ad1fee5 541 (inputs
8343d373
LF
542 `(;; Cgit directly accesses some internal Git interfaces that changed in
543 ;; Git 2.12. Try removing this special input and using the source of the
544 ;; Git package for cgit > 1.1.
545 ("git:src"
546 ,(origin
547 (method url-fetch)
548 (uri "mirror://kernel.org/software/scm/git/git-2.10.4.tar.xz")
549 (sha256
550 (base32
551 "1pni4mgih5w42813dxljl61s7xmcpdnar34d9m4548hzpljjyd4l"))))
7ad1fee5
SB
552 ("openssl" ,openssl)
553 ("zlib" ,zlib)))
554 (home-page "https://git.zx2c4.com/cgit/")
555 (synopsis "Web frontend for git repositories")
556 (description
557 "CGit is an attempt to create a fast web interface for the Git SCM, using
558a built-in cache to decrease server I/O pressure.")
369387b6 559 (license license:gpl2)))
7ad1fee5 560
65101a25
OP
561(define-public python-ghp-import
562 (package
563 (name "python-ghp-import")
564 (version "0.5.5")
565 (source
566 (origin
567 (method url-fetch)
568 (uri (string-append
569 "https://github.com/davisp/ghp-import/archive/"
570 version ".tar.gz"))
571 (file-name (string-append name "-" version ".tar.gz"))
572 (sha256
573 (base32
574 "0x887v690xsac2hzjkpbvp3a6crh3m08mqbk3nb4xwc9dnk869q7"))))
575 (build-system python-build-system)
576 (arguments
577 `(#:phases (modify-phases %standard-phases
578 (add-after 'install 'install-documentation
579 (lambda* (#:key outputs #:allow-other-keys)
580 (let* ((out (assoc-ref outputs "out"))
581 (doc (string-append out "/share/doc"))
582 (licenses (string-append out "/share/licenses")))
583 (install-file "README.md" doc)
584 (install-file "LICENSE" licenses)))))))
585 (home-page "https://github.com/davisp/ghp-import")
586 (synopsis "Copy directory to the gh-pages branch")
587 (description "Script that copies a directory to the gh-pages branch (by
588default) of the repository.")
589
590 ;; See <https://bugs.gnu.org/27913>.
591 (license (license:non-copyleft
592 "https://raw.githubusercontent.com/davisp/ghp-import/master/LICENSE"
593 "Tumbolia Public License"))))
594
595(define-public python2-ghp-import
596 (package-with-python2
597 (strip-python2-variant python-ghp-import)))
598
c7810bd1
EB
599(define-public shflags
600 (package
601 (name "shflags")
b65195c2 602 (version "1.2.0")
c7810bd1
EB
603 (source (origin
604 (method url-fetch)
b65195c2
EF
605 (uri (string-append "https://github.com/kward/shflags/archive/v"
606 version ".tar.gz"))
c7810bd1
EB
607 (sha256
608 (base32
b65195c2 609 "0zxw12haylaq60a335xlqcs4afw2zrgwqymmpw0m21r51w6irdmr"))))
c7810bd1
EB
610 (build-system trivial-build-system)
611 (native-inputs `(("tar" ,tar)
612 ("gzip" ,gzip)))
613 (arguments
614 `(#:modules ((guix build utils))
615 #:builder (begin
616 (use-modules (guix build utils))
617 (let* ((source (assoc-ref %build-inputs "source"))
618 (tar (assoc-ref %build-inputs "tar"))
619 (gzip (assoc-ref %build-inputs "gzip"))
620 (output (assoc-ref %outputs "out"))
621 (srcdir (string-append output "/src")))
622 (begin
623 (setenv "PATH" (string-append gzip "/bin"))
624 (system* (string-append tar "/bin/tar") "xzf"
625 source)
626 (chdir ,(string-append name "-" version))
627 (mkdir-p srcdir)
628 (copy-file "src/shflags"
629 (string-append srcdir "/shflags"))
630 #t)))))
b65195c2 631 (home-page "https://github.com/kward/shflags")
c7810bd1
EB
632 (synopsis "Command-line flags library for shell scripts")
633 (description
634 "Shell Flags (shFlags) is a library written to greatly simplify the
635handling of command-line flags in Bourne based Unix shell scripts (bash, dash,
636ksh, sh, zsh). Most shell scripts use getopt for flags processing, but the
637different versions of getopt on various OSes make writing portable shell
638scripts difficult. shFlags instead provides an API that doesn't change across
639shell and OS versions so the script writer can be confident that the script
640will work.")
369387b6 641 (license license:lgpl2.1)))
c7810bd1
EB
642
643(define-public git-flow
644 (package
645 (name "git-flow")
646 ;; This version has not be officially released yet, so we build it
647 ;; directly from the git repository.
648 (version "0.4.2-pre")
649 (source (origin
650 (method git-fetch)
651 (uri (git-reference
652 (url "https://github.com/nvie/gitflow/")
698bd297 653 (commit "15aab26490facf285acef56cb5d61025eacb3a69")))
c7810bd1
EB
654 (sha256
655 (base32
656 "01fs97q76fdfnvmrh2cyjhywcs3pykf1dg58sy0frflnsdzs6prx"))))
657 (build-system gnu-build-system)
658 (inputs `(("shflags" ,shflags)))
659 (arguments
660 '(#:tests? #f ; no tests
661 #:make-flags (list (string-append "prefix="
662 (assoc-ref %outputs "out")))
aac42d78
EF
663 #:phases
664 (modify-phases %standard-phases
665 (add-after 'unpack 'reset-shFlags-link
666 (lambda* (#:key inputs #:allow-other-keys)
667 ;; The link points to a file in the shFlags submodule.
668 ;; Redirect it to point to our system shFlags.
669 (let ((shflags (assoc-ref inputs "shflags")))
670 (begin
671 (delete-file "gitflow-shFlags")
672 (symlink (string-append shflags "/src/shflags")
673 "gitflow-shFlags")))))
674 (delete 'configure)
675 (delete 'build))))
c7810bd1
EB
676 (home-page "http://nvie.com/posts/a-successful-git-branching-model/")
677 (synopsis "Git extensions for Vincent Driessen's branching model")
678 (description
679 "Vincent Driessen's branching model is a git branching and release
680management strategy that helps developers keep track of features, hotfixes,
681and releases in bigger software projects. The git-flow library of git
682subcommands helps automate some parts of the flow to make working with it a
683lot easier.")
369387b6 684 (license license:bsd-2)))
c7810bd1 685
205441eb
SR
686(define-public stgit
687 (package
688 (name "stgit")
689 (version "0.18")
690 (source (origin
691 (method url-fetch)
692 (uri (string-append "https://github.com/ctmarinas/stgit/archive/v"
693 version ".tar.gz"))
694 (file-name (string-append name "-" version ".tar.gz"))
695 (sha256
696 (base32
697 "19fk6vw3pgp2a98wpd4j3kyiyll5dy9bi4921wq1mrky0l53mj00"))))
698 (build-system python-build-system)
699 (inputs
700 `(("git" ,git)))
701 (arguments
702 `(#:python ,python-2
703 #:phases
704 (modify-phases %standard-phases
705 (replace 'check
706 (lambda _
707 ;; two tests will fail -> disable them. TODO: fix the failing tests
708 (delete-file "t/t3300-edit.sh")
709 (delete-file "t/t7504-commit-msg-hook.sh")
710 (zero? (system* "make" "test")))))))
711 (home-page "http://procode.org/stgit/")
712 (synopsis "Stacked Git")
713 (description
714 "StGit is a command-line application that provides functionality similar
715to Quilt (i.e., pushing/popping patches to/from a stack), but using Git
716instead of @command{diff} and @command{patch}. StGit stores its patches in a
717Git repository as normal Git commits, and provides a number of commands to
718manipulate them in various ways.")
719 (license license:gpl2)))
720
80d9941c
SR
721(define-public vcsh
722 (package
723 (name "vcsh")
724 (version "1.20151229")
725 (source (origin
726 (method url-fetch)
727 (uri (string-append "https://github.com/RichiH/vcsh/archive/v"
728 version ".tar.gz"))
729 (file-name (string-append name "-" version ".tar.gz"))
730 (sha256
731 (base32
732 "1ym3swkh738c3vciffvlr96vqzhwmzkb8ajqzap8f0j9n039a1mf"))))
733 (build-system gnu-build-system)
734 (native-inputs
735 `(("which" ,which)))
736 (inputs
737 `(("git" ,git)
738 ("perl" ,perl)
739 ("perl-test-harness" ,perl-test-harness)
740 ("perl-shell-command" ,perl-shell-command)
741 ("perl-test-most" ,perl-test-most)))
742 (arguments
743 '(#:phases (modify-phases %standard-phases
744 (delete 'configure)
745 (delete 'build))
746 #:make-flags (list (string-append "PREFIX="
747 (assoc-ref %outputs "out")))
748 #:test-target "test"))
749 (home-page "https://github.com/RichiH/vcsh")
750 (synopsis "Version control system for @code{$HOME}")
751 (description
752 "vcsh version-controls configuration files in several Git repositories,
753all in one single directory. They all maintain their working trees without
754clobbering each other or interfering otherwise. By default, all Git
755repositories maintained via vcsh store the actual files in @code{$HOME},
756though this can be overridden.")
757 (license license:gpl2+)))
758
a63094a7 759(define-public git-test-sequence
698bd297 760 (let ((commit "48e5a2f5a13a5f30452647237e23362b459b9c76"))
a63094a7
EB
761 (package
762 (name "git-test-sequence")
698bd297 763 (version (string-append "20140312." (string-take commit 7)))
a63094a7
EB
764 (source (origin
765 (method git-fetch)
766 (uri (git-reference
767 ;; There are many other scripts in this directory; we
768 ;; are interested in just one for this package.
769 (url "https://github.com/dustin/bindir")
770 (commit commit)))
771 (sha256
772 (base32
773 "1dcq0y16yznbv4k9h8gg90kv1gkn8r8dbvl4m2rpfd7q5nqhn617"))))
774 (build-system trivial-build-system)
775 (arguments
776 `(#:modules ((guix build utils))
777 #:builder (begin
778 (use-modules (guix build utils))
779 (let* ((source (assoc-ref %build-inputs "source"))
780 (output (assoc-ref %outputs "out"))
781 (bindir (string-append output "/bin"))
782 (script "git-test-sequence"))
96c46210
LC
783 (install-file (string-append source "/" script)
784 bindir)
785 #t))))
a63094a7
EB
786 (home-page "http://dustin.sallings.org/2010/03/28/git-test-sequence.html")
787 (synopsis "Run a command over a sequence of commits")
788 (description
789 "git-test-sequence is similar to an automated git bisect except it’s
790linear. It will test every change between two points in the DAG. It will
791also walk each side of a merge and test those changes individually.")
369387b6 792 (license (license:x11-style "file://LICENSE")))))
a63094a7 793
378b01dc
DT
794(define-public gitolite
795 (package
796 (name "gitolite")
34ba7cd4 797 (version "3.6.6")
378b01dc
DT
798 (source (origin
799 (method url-fetch)
800 (uri (string-append
801 "https://github.com/sitaramc/gitolite/archive/v"
802 version ".tar.gz"))
803 (file-name (string-append name "-" version ".tar.gz"))
378b01dc
DT
804 (sha256
805 (base32
34ba7cd4 806 "07q33f86694s0x3k9lcmy1vzfw9appdrlmmb9j3bz4qkrxqdnwb9"))))
378b01dc
DT
807 (build-system gnu-build-system)
808 (arguments
809 '(#:tests? #f ; no tests
810 #:phases (modify-phases %standard-phases
811 (delete 'configure)
812 (delete 'build)
813 (add-before 'install 'patch-scripts
814 (lambda* (#:key inputs #:allow-other-keys)
815 (let ((perl (string-append (assoc-ref inputs "perl")
816 "/bin/perl")))
817 ;; This seems to take care of every shell script that
818 ;; invokes Perl.
819 (substitute* (find-files "." ".*")
820 ((" perl -")
db88b5a8
CL
821 (string-append " " perl " -")))
822
823 ;; Avoid references to the store in authorized_keys.
824 ;; This works because gitolite-shell is in the PATH.
825 (substitute* "src/triggers/post-compile/ssh-authkeys"
826 (("\\$glshell \\$user")
827 "gitolite-shell $user")))))
378b01dc
DT
828 (replace 'install
829 (lambda* (#:key outputs #:allow-other-keys)
830 (let* ((output (assoc-ref outputs "out"))
831 (sharedir (string-append output "/share/gitolite"))
832 (bindir (string-append output "/bin")))
833 (mkdir-p sharedir)
834 (mkdir-p bindir)
835 (system* "./install" "-to" sharedir)
836 ;; Create symlinks for executable scripts in /bin.
837 (for-each (lambda (script)
838 (symlink (string-append sharedir "/" script)
839 (string-append bindir "/" script)))
840 '("gitolite" "gitolite-shell"))
841 #t))))))
842 (inputs
843 `(("perl" ,perl)))
844 ;; git and openssh are propagated because trying to patch the source via
845 ;; regexp matching is too brittle and prone to false positives.
846 (propagated-inputs
847 `(("git" ,git)
848 ("openssh" ,openssh)))
849 (home-page "http://gitolite.com")
850 (synopsis "Git access control layer")
851 (description
852 "Gitolite is an access control layer on top of Git, providing fine access
853control to Git repositories.")
369387b6 854 (license license:gpl2)))
378b01dc 855
5151c2e1
AB
856(define-public mercurial
857 (package
858 (name "mercurial")
38ad27da 859 (version "4.4.1")
5151c2e1
AB
860 (source (origin
861 (method url-fetch)
5575917d
EF
862 (uri (string-append "https://www.mercurial-scm.org/"
863 "release/mercurial-" version ".tar.gz"))
5151c2e1
AB
864 (sha256
865 (base32
38ad27da 866 "0ik2ypzxjr6vpcghxvn39a73gw52629n7vwak04gnbycsq95aalg"))))
5151c2e1
AB
867 (build-system python-build-system)
868 (arguments
869 `(;; Restrict to Python 2, as Python 3 would require
870 ;; the argument --c2to3.
871 #:python ,python-2
872 ;; FIXME: Disabled tests because they require the nose unit
873 ;; testing framework: https://nose.readthedocs.org/en/latest/ .
874 #:tests? #f))
5575917d 875 (home-page "https://www.mercurial-scm.org/")
5151c2e1
AB
876 (synopsis "Decentralized version control system")
877 (description
878 "Mercurial is a free, distributed source control management tool.
879It efficiently handles projects of any size
880and offers an easy and intuitive interface.")
369387b6 881 (license license:gpl2+)))
5151c2e1 882
fc1e4516
AE
883(define-public neon
884 (package
885 (name "neon")
51eb4df6 886 (version "0.30.2")
fc1e4516
AE
887 (source (origin
888 (method url-fetch)
889 (uri (string-append "http://www.webdav.org/neon/neon-"
890 version ".tar.gz"))
891 (sha256
892 (base32
51eb4df6 893 "1jpvczcx658vimqm7c8my2q41fnmjaf1j03g7bsli6rjxk6xh2yv"))))
fc1e4516
AE
894 (build-system gnu-build-system)
895 (native-inputs
896 `(("perl" ,perl)
897 ("pkg-config" ,pkg-config)))
898 (inputs
899 `(("libxml2" ,libxml2)
900 ("openssl" ,openssl)
901 ("zlib" ,zlib)))
902 (arguments
903 `(;; FIXME: Add tests once reverse address lookup is fixed in glibc, see
904 ;; https://sourceware.org/bugzilla/show_bug.cgi?id=16475
905 #:tests? #f
906 #:configure-flags '("--enable-shared"
907 ;; requires libgnutils-config, deprecated
908 ;; in gnutls 2.8.
909 ; "--with-ssl=gnutls")))
910 "--with-ssl=openssl")))
911 (home-page "http://www.webdav.org/neon/")
912 (synopsis "HTTP and WebDAV client library")
35ad6b2e
TGR
913 (description
914 "Neon is an HTTP and WebDAV client library, with a C interface and the
915following features:
916@enumerate
917@item High-level wrappers for common HTTP and WebDAV operations (GET, MOVE,
918 DELETE, etc.);
919@item low-level interface to the HTTP request/response engine, allowing the use
920 of arbitrary HTTP methods, headers, etc.;
921@item authentication support including Basic and Digest support, along with
922 GSSAPI-based Negotiate on Unix, and SSPI-based Negotiate/NTLM on Win32;
923@item SSL/TLS support using OpenSSL or GnuTLS, exposing an abstraction layer for
924 verifying server certificates, handling client certificates, and examining
925 certificate properties, smartcard-based client certificates are also
926 supported via a PKCS#11 wrapper interface;
927@item abstract interface to parsing XML using libxml2 or expat, and wrappers for
928 simplifying handling XML HTTP response bodies;
929@item WebDAV metadata support, wrappers for PROPFIND and PROPPATCH to simplify
930 property manipulation.
931@end enumerate\n")
369387b6 932 (license license:gpl2+))) ; for documentation and tests; source under lgpl2.0+
fc1e4516 933
cf3fe3b0
CR
934(define-public subversion
935 (package
936 (name "subversion")
5993f7c4 937 (version "1.8.19")
cf3fe3b0
CR
938 (source (origin
939 (method url-fetch)
5993f7c4
LF
940 (uri
941 (list
942 (string-append "https://archive.apache.org/dist/subversion/"
943 "subversion-" version ".tar.bz2")
944 (string-append "https://www-eu.apache.org/dist/subversion/"
945 "subversion-" version ".tar.bz2")))
cf3fe3b0
CR
946 (sha256
947 (base32
5993f7c4 948 "1gp6426gkdza6ni2whgifjcmjb4nq34ljy07yxkrhlarvfq6ks2n"))))
cf3fe3b0 949 (build-system gnu-build-system)
8b2fe785 950 (arguments
7c5a1454
EF
951 '(#:phases
952 (modify-phases %standard-phases
953 (add-after 'configure 'patch-libtool-wrapper-ls
954 (lambda* (#:key inputs #:allow-other-keys)
955 ;; This substitution allows tests svnauthz_tests and svnlook_tests
956 ;; to pass. These tests execute svnauthz and svnlook through
957 ;; their libtool wrapper scripts from svn hooks, whose empty
958 ;; environments cause "ls: command not found" errors. It would be
959 ;; nice if this fix ultimately made its way into libtool.
960 (let ((coreutils (assoc-ref inputs "coreutils")))
961 (substitute* "libtool"
491f2918
EF
962 (("\\\\`ls") (string-append "\\`" coreutils "/bin/ls")))
963 #t)))
7c5a1454
EF
964 (add-after 'install 'install-perl-bindings
965 (lambda* (#:key outputs #:allow-other-keys)
966 ;; Follow the instructions from 'subversion/bindings/swig/INSTALL'.
967 (let ((out (assoc-ref outputs "out")))
968 (and (zero? (system* "make" "swig-pl-lib"))
969 ;; FIXME: Test failures.
970 ;; (zero? (system* "make" "check-swig-pl"))
971 (zero? (system* "make" "install-swig-pl-lib"))
972
973 ;; Set the right installation prefix.
974 (with-directory-excursion
975 "subversion/bindings/swig/perl/native"
976 (and (zero?
977 (system* "perl" "Makefile.PL"
b004c79f 978 "NO_PERLLOCAL=1"
7c5a1454
EF
979 (string-append "PREFIX=" out)))
980 (zero?
981 (system* "make" "install"
982 (string-append "OTHERLDFLAGS="
983 "-Wl,-rpath="
984 out "/lib"))))))))))))
8b2fe785 985 (native-inputs
98b79d36
AE
986 `(("pkg-config" ,pkg-config)
987 ;; For the Perl bindings.
988 ("swig" ,swig)))
cf3fe3b0 989 (inputs
2b24faa2
AE
990 `(("apr" ,apr)
991 ("apr-util" ,apr-util)
46138f3e 992 ("serf" ,serf)
cf3fe3b0 993 ("perl" ,perl)
aa9e22ef 994 ("python" ,python-2) ; incompatible with Python 3 (print syntax)
cf3fe3b0
CR
995 ("sqlite" ,sqlite)
996 ("zlib" ,zlib)))
ce84c924 997 (home-page "https://subversion.apache.org/")
35b9e423 998 (synopsis "Revision control system")
cf3fe3b0 999 (description
749b90a5
LC
1000 "Subversion exists to be universally recognized and adopted as a
1001centralized version control system characterized by its
cf3fe3b0
CR
1002reliability as a safe haven for valuable data; the simplicity of its model and
1003usage; and its ability to support the needs of a wide variety of users and
1004projects, from individuals to large-scale enterprise operations.")
369387b6 1005 (license license:asl2.0)))
cf3fe3b0 1006
1b1c335f
LC
1007(define-public rcs
1008 (package
1009 (name "rcs")
73ebc66f 1010 (version "5.9.4")
1b1c335f
LC
1011 (source (origin
1012 (method url-fetch)
1013 (uri (string-append "mirror://gnu/rcs/rcs-"
1014 version ".tar.xz"))
1015 (sha256
1016 (base32
096f0080
ST
1017 "1zsx7bb0rgvvvisiy4zlixf56ay8wbd9qqqcp1a1g0m1gl6mlg86"))
1018 (patches (search-patches "rcs-5.9.4-noreturn.patch"))))
1b1c335f 1019 (build-system gnu-build-system)
740c24df 1020 (native-inputs `(("ed" ,ed)))
6fd52309 1021 (home-page "https://www.gnu.org/software/rcs/")
1b1c335f
LC
1022 (synopsis "Per-file local revision control system")
1023 (description
79c311b8
LC
1024 "RCS is the original Revision Control System. It works on a
1025file-by-file basis, in contrast to subsequent version control systems such as
1026CVS, Subversion, and Git. This can make it suitable for system
1027administration files, for example, which are often inherently local to one
1028machine.")
369387b6 1029 (license license:gpl3+)))
1972fed4
LC
1030
1031(define-public cvs
1032 (package
1033 (name "cvs")
1034 (version "1.12.13")
1035 (source (origin
1036 (method url-fetch)
1037 (uri (string-append
9006f8bc 1038 "https://ftp.gnu.org/non-gnu/cvs/source/feature/"
1972fed4 1039 version "/cvs-" version ".tar.bz2"))
15428168 1040 (patches (search-patches "cvs-2017-12836.patch"))
1972fed4
LC
1041 (sha256
1042 (base32
1043 "0pjir8cwn0087mxszzbsi1gyfc6373vif96cw4q3m1x6p49kd1bq"))))
1044 (build-system gnu-build-system)
1045 (arguments
1046 ;; XXX: The test suite looks flawed, and the package is obsolete anyway.
7fbbd3e7
EF
1047 '(#:tests? #f
1048 #:configure-flags (list "--with-external-zlib")))
1972fed4
LC
1049 (inputs `(("zlib" ,zlib)
1050 ("nano" ,nano))) ; the default editor
1051 (home-page "http://cvs.nongnu.org")
1052 (synopsis "Historical centralized version control system")
1053 (description
1054 "CVS is a version control system, an important component of Source
1055Configuration Management (SCM). Using it, you can record the history of
1056sources files, and documents. It fills a similar role to the free software
1057RCS, PRCS, and Aegis packages.")
369387b6 1058 (license license:gpl1+)))
a4572a17 1059
59ef2030
ML
1060(define-public cvs-fast-export
1061 (package
1062 (name "cvs-fast-export")
d2885c83 1063 (version "1.43")
59ef2030
ML
1064 (source (origin
1065 (method url-fetch)
1066 (uri (string-append "http://www.catb.org/~esr/"
1067 name "/" name "-" version ".tar.gz"))
1068 (sha256
1069 (base32
d2885c83 1070 "17xp5q4cxmd6z0ii1fdr4j1djb9mz1qv7hzr6fawdapjzahi65m3"))))
59ef2030
ML
1071 (build-system gnu-build-system)
1072 (arguments
d2885c83
EF
1073 '(#:phases
1074 (modify-phases %standard-phases
1075 (delete 'configure)
1076 (add-after 'unpack 'remove-optimizations
1077 (lambda _
1078 ;; Don't optimize for a specific processor architecture.
1079 (substitute* "Makefile"
1080 (("CFLAGS \\+= -march=native") ""))
1081 ;; This code runs with Python2 or Python3
1082 (substitute* "cvsreduce"
1083 (("python3") "python"))
1084 #t)))
1085 #:parallel-build? #f ; parallel a2x commands fail spectacularly
59ef2030
ML
1086 #:make-flags
1087 (list "CC=gcc" (string-append "prefix?=" (assoc-ref %outputs "out")))))
1088 (inputs `(("git" ,git)))
1089 (native-inputs `(("asciidoc" ,asciidoc)
59ef2030
ML
1090 ;; These are needed for the tests.
1091 ("cvs" ,cvs)
1092 ("python" ,python-2)
1093 ("rcs" ,rcs)))
1094 (home-page "http://www.catb.org/esr/cvs-fast-export/")
1095 (synopsis "Export an RCS or CVS history as a fast-import stream")
1096 (description "This program analyzes a collection of RCS files in a CVS
1097repository (or outside of one) and, when possible, emits an equivalent history
1098in the form of a fast-import stream. Not all possible histories can be
1099rendered this way; the program tries to emit useful warnings when it can't.
1100
1101The program can also produce a visualization of the resulting commit directed
1102acyclic graph (DAG) in the input format of @uref{http://www.graphviz.org,
1103Graphviz}. The package also includes @command{cvssync}, a tool for mirroring
1104masters from remote CVS hosts.")
369387b6 1105 (license license:gpl2+)))
59ef2030 1106
a4572a17
LC
1107(define-public vc-dwim
1108 (package
1109 (name "vc-dwim")
f968f1a7 1110 (version "1.8")
a4572a17
LC
1111 (source (origin
1112 (method url-fetch)
1113 (uri (string-append "mirror://gnu/vc-dwim/vc-dwim-"
1114 version ".tar.xz"))
1115 (sha256
1116 (base32
f968f1a7 1117 "0d5sqafc40l878m8wjr35jxmalj4kam1m6ph60v08ng4ml5g7931"))))
a4572a17
LC
1118 (build-system gnu-build-system)
1119 (inputs `(("perl" ,perl)
6aaf3899 1120 ("inetutils" ,inetutils))) ; for `hostname', used in the tests
b8fc3622 1121 (native-inputs `(("emacs" ,emacs-minimal))) ; for `ctags'
f968f1a7 1122 (home-page "https://www.gnu.org/software/vc-dwim/")
a4572a17
LC
1123 (synopsis "Version-control-agnostic ChangeLog diff and commit tool")
1124 (description
a22dc0c4
LC
1125 "The vc-dwim package contains two tools, \"vc-dwim\" and \"vc-chlog\".
1126vc-dwim is a tool that simplifies the task of maintaining a ChangeLog and
1127using version control at the same time, for example by printing a reminder
1128when a file change has been described in the ChangeLog but the file has not
79c311b8 1129been added to the VC. vc-chlog scans changed files and generates
a22dc0c4 1130standards-compliant ChangeLog entries based on the changes that it detects.")
369387b6 1131 (license license:gpl3+)))
83a39ed7
LC
1132
1133(define-public diffstat
1134 (package
1135 (name "diffstat")
86bc52f9 1136 (version "1.61")
83a39ed7
LC
1137 (source (origin
1138 (method url-fetch)
86bc52f9
TGR
1139 (uri
1140 (list
1141 (string-append "ftp://invisible-island.net/diffstat/"
1142 name "-" version ".tgz")
1143 (string-append "http://invisible-mirror.net/archives/diffstat/"
1144 name "-" version ".tgz")))
83a39ed7
LC
1145 (sha256
1146 (base32
86bc52f9 1147 "1vjmda2zfjxg0qkaj8hfqa8g6bfwnn1ja8696rxrjgqq4w69wd95"))))
83a39ed7
LC
1148 (build-system gnu-build-system)
1149 (home-page "http://invisible-island.net/diffstat/")
0aea268a 1150 (synopsis "Make histograms from the output of @command{diff}")
83a39ed7 1151 (description
0aea268a
TGR
1152 "Diffstat reads the output of @command{diff} and displays a histogram of
1153the insertions, deletions, and modifications per file. It is useful for
1154reviewing large, complex patch files.")
369387b6 1155 (license (license:x11-style "file://COPYING"))))
25f76ef0 1156
25f76ef0
JD
1157(define-public cssc
1158 (package
1159 (name "cssc")
32fd2600 1160 (version "1.4.0")
25f76ef0
JD
1161 (source (origin
1162 (method url-fetch)
1163 (uri (string-append "mirror://gnu/" name "/CSSC-"
1164 version ".tar.gz"))
1165 (sha256
1166 (base32
32fd2600 1167 "15191dh8hr46cvssmv4v52gymiiyk6ca9j1bfimlqakcqab6y51h"))))
25f76ef0
JD
1168 (build-system gnu-build-system)
1169 (arguments
bf3c57ff
EF
1170 `(#:phases
1171 (modify-phases %standard-phases
1172 (add-before 'check 'precheck
1173 (lambda _
1174 (begin
1175 (substitute* "tests/common/test-common"
1176 (("/bin/pwd") (which "pwd")))
1177
1178 (substitute* "tests/prt/all-512.sh"
1179 (("/bin/sh") (which "sh")))
1180
1181 ;; XXX: This test has no hope of passing until there is a "nogroup"
1182 ;; entry (or at least some group to which the guix builder does
1183 ;; not belong) in the /etc/group file of the build environment.
1184 ;; Currently we do not have such a group. Disable this test for now.
1185 (substitute* "tests/Makefile"
1186 (("test-delta ") ""))))))))
25f76ef0
JD
1187 ;; These are needed for the tests
1188 (native-inputs `(("git" ,git)
1189 ("cvs" ,cvs)))
6fd52309 1190 (home-page "https://www.gnu.org/software/cssc/")
25f76ef0
JD
1191 (synopsis "File-based version control like SCCS")
1192 (description "GNU CSSC provides a replacement for the legacy Unix source
1193code control system SCCS. This allows old code still under that system to be
1194accessed and migrated on modern systems.")
369387b6 1195 (license license:gpl3+)))
0e534e74 1196
e881752c 1197;; This package can unfortunately work only in -TEST mode, since Aegis
0e534e74
JD
1198;; requires that it is installed setuid root.
1199(define-public aegis
1200 (package
1201 (name "aegis")
1202 (version "4.24")
1203 (source (origin
1204 (method url-fetch)
de67e922
LF
1205 (uri (string-append "mirror://sourceforge/aegis/aegis/" version
1206 "/aegis-" version ".tar.gz"))
0e534e74
JD
1207 (sha256
1208 (base32
1209 "18s86ssarfmc4l17gbpzybca29m5wa37cbaimdji8czlcry3mcjl"))
fc1adab1
AK
1210 (patches (search-patches "aegis-perl-tempdir1.patch"
1211 "aegis-perl-tempdir2.patch"
1212 "aegis-test-fixup-1.patch"
1213 "aegis-test-fixup-2.patch"
1214 "aegis-constness-error.patch"))))
0e534e74
JD
1215 (build-system gnu-build-system)
1216 (inputs
1217 `(("e2fsprogs" ,e2fsprogs)
1218 ("curl" ,curl)
0253ab39 1219 ("file" ,file)
0e534e74
JD
1220 ("libxml2" ,libxml2)
1221 ("zlib" ,zlib)
b94a6ca0 1222 ("gettext" ,gettext-minimal)))
0e534e74
JD
1223 (native-inputs
1224 `(("bison" ,bison)
1225 ("groff" ,groff)
1226 ("perl" ,perl)
1227 ;; Various tests require the following:
e881752c 1228 ("cvs" ,cvs)
0e534e74
JD
1229 ("flex" ,flex)
1230 ("cook" ,cook)
1231 ("subversion" ,subversion)
1232 ("rcs" ,rcs)
1233 ("ed" ,ed)))
1234 (arguments
e881752c 1235 `(#:configure-flags (list "--with-no-aegis-configured"
0e534e74
JD
1236 "--sharedstatedir=/var/com/aegis")
1237 #:parallel-build? #f ; There are some nasty racy rules in the Makefile.
e881752c 1238 #:phases
8ef843c7
EF
1239 (modify-phases %standard-phases
1240 (add-before 'configure 'pre-conf
1241 (lambda _
1242 (substitute* (append '("configure"
1243 "etc/check-tar-gz.sh"
1244 "etc/patches.sh"
1245 "etc/test.sh"
1246 "script/aexver.in"
1247 "script/aebisect.in"
1248 "script/aeintegratq.in"
1249 "script/tkaegis.in"
1250 "script/test_funcs.in"
1251 "web/eg_oss_templ.sh"
1252 "web/webiface.html"
1253 "libaegis/getpw_cache.cc")
1254 (find-files "test" "\\.sh"))
1255 (("/bin/sh") (which "sh")))
1256 (setenv "SH" (which "sh"))))
1257 (replace 'check
1258 (lambda _
1259 (let ((home (string-append (getcwd) "/my-new-home")))
1260 ;; Some tests need to write to $HOME.
1261 (mkdir home)
1262 (setenv "HOME" home)
1263
1264 ;; This test assumes that flex has been symlinked to "lex".
1265 (substitute* "test/00/t0011a.sh"
1266 (("type lex") "type flex"))
1267
1268 ;; The author decided to call the check rule "sure".
1269 (zero? (system* "make" "sure"))))))))
0e534e74
JD
1270 (home-page "http://aegis.sourceforge.net")
1271 (synopsis "Project change supervisor")
1272 (description "Aegis is a project change supervisor, and performs some of
35b9e423 1273the Software Configuration Management needed in a CASE environment. Aegis
0e534e74
JD
1274provides a framework within which a team of developers may work on many
1275changes to a program independently, and Aegis coordinates integrating these
1276changes back into the master source of the program, with as little disruption
35b9e423 1277as possible. Resolution of contention for source files, a major headache for
0e534e74 1278any project with more than one developer, is one of Aegis's major functions.")
369387b6 1279 (license license:gpl3+)))
2459141e 1280
62063d85
ML
1281(define-public reposurgeon
1282 (package
1283 (name "reposurgeon")
1284 (version "3.37")
1285 (source (origin
1286 (method url-fetch)
1287 (uri (string-append "http://www.catb.org/~esr/" name "/"
1288 name "-" version ".tar.xz"))
1289 (sha256
1290 (base32
1291 "14asjg4xy3mhh5z0r3k7c1wv9y803j2zfq32g5q5m95sf7yzygan"))))
1292 (build-system gnu-build-system)
1293 (arguments
1294 `(#:tests? #f ;no test suite distributed
1295 #:make-flags
1296 (list (string-append "target=" (assoc-ref %outputs "out")))
1297 #:phases
1298 (modify-phases %standard-phases
1299 (delete 'configure)
1300 (add-before 'build 'fix-docbook
1301 (lambda* (#:key inputs #:allow-other-keys)
1302 (substitute* (find-files "." "\\.xml$")
1303 (("docbook/docbookx.dtd")
1304 (string-append (assoc-ref inputs "docbook-xml")
1305 "/xml/dtd/docbook/docbookx.dtd")))
1306 #t))
1307 (add-after 'install 'install-emacs-data
1308 (lambda* (#:key outputs #:allow-other-keys)
1309 (install-file "reposurgeon-mode.el"
1310 (string-append (assoc-ref outputs "out")
1311 "/share/emacs/site-lisp")))))))
1312 (inputs
1313 `(("python" ,python-wrapper)))
1314 (native-inputs
1315 `(("asciidoc" ,asciidoc)
1316 ("docbook-xml" ,docbook-xml-4.1.2)
1317 ("docbook-xsl" ,docbook-xsl)
1318 ("libxml2" ,libxml2)
1319 ("xmlto" ,xmlto)))
1320 (home-page "http://www.catb.org/~esr/reposurgeon/")
1321 (synopsis "Edit version-control repository history")
1322 (description "Reposurgeon enables risky operations that version-control
1323systems don't want to let you do, such as editing past comments and metadata
1324and removing commits. It works with any version control system that can
1325export and import Git fast-import streams, including Git, Mercurial, Fossil,
1326Bazaar, CVS, RCS, and Src. It can also read Subversion dump files directly
1327and can thus be used to script production of very high-quality conversions
1328from Subversion to any supported Distributed Version Control System (DVCS).")
1329 ;; Most files are distributed under bsd-2, except 'repocutter' which is
1330 ;; under bsd-3.
369387b6 1331 (license (list license:bsd-2 license:bsd-3))))
62063d85 1332
2459141e
1333(define-public tig
1334 (package
1335 (name "tig")
73f71bc9 1336 (version "2.3.0")
2459141e
1337 (source (origin
1338 (method url-fetch)
1339 (uri (string-append
73f71bc9
EF
1340 "https://github.com/jonas/tig/releases/download/tig-"
1341 version "/tig-" version ".tar.gz"))
2459141e
1342 (sha256
1343 (base32
73f71bc9 1344 "1vf02snz8qiiqiyqss1z63rzzmwbrc9agcgh21jdq13rja306vv8"))))
2459141e 1345 (build-system gnu-build-system)
2203e4c2
EF
1346 (native-inputs
1347 `(("asciidoc" ,asciidoc)
1348 ("xmlto" ,xmlto)))
2459141e 1349 (inputs
d0e11e8b
EF
1350 `(("ncurses" ,ncurses)
1351 ("readline" ,readline)))
2459141e 1352 (arguments
2203e4c2
EF
1353 `(#:phases
1354 (modify-phases %standard-phases
1355 (add-after 'install 'install-doc
1356 (lambda _
1357 (zero? (system* "make" "install-doc")))))
1358 #:tests? #f)) ; tests require access to /dev/tty
73f71bc9
EF
1359 ;; #:test-target "test"))
1360 (home-page "https://jonas.github.io/tig/")
2459141e
1361 (synopsis "Ncurses-based text user interface for Git")
1362 (description
1363 "Tig is an ncurses text user interface for Git, primarily intended as
1364a history browser. It can also stage hunks for commit, or colorize the
1365output of the 'git' command.")
369387b6 1366 (license license:gpl2+)))
df7393b9
LC
1367
1368(define-public findnewest
1369 (package
1370 (name "findnewest")
9c7e7ead 1371 (version "0.3")
df7393b9
LC
1372 (source (origin
1373 (method url-fetch)
1374 (uri (string-append
1375 "https://github.com/0-wiz-0/findnewest/archive/findnewest-"
1376 version ".tar.gz"))
1377 (sha256
1378 (base32
9c7e7ead 1379 "1ydis4y0amkgfr4y60sn076f1l41ya2kn89kfd9fqf44f9ccgb5r"))))
df7393b9
LC
1380 (build-system gnu-build-system)
1381 (arguments
1382 '(#:phases (modify-phases %standard-phases
d10092b8 1383 (add-after 'unpack 'bootstrap
df7393b9
LC
1384 (lambda _
1385 (zero? (system* "autoreconf" "-vfi")))))))
1386 (native-inputs `(("autoconf" ,autoconf)
1387 ("automake" ,automake)))
1388 (home-page "https://github.com/0-wiz-0/findnewest/releases")
1389 (synopsis "Print the modification time of the latest file")
1390 (description
1391 "Recursively find the newest file in a file tree and print its
1392modification time.")
369387b6 1393 (license license:bsd-2)))
e92b8599
KM
1394
1395(define-public myrepos
1396 (package
1397 (name "myrepos")
d46e9fcb 1398 (version "1.20170129")
e92b8599
KM
1399 (source
1400 (origin
d46e9fcb
EF
1401 (method git-fetch)
1402 (uri (git-reference
1403 (url "git://myrepos.branchable.com/myrepos")
1404 (commit version)))
1405 (file-name (string-append name "-" version "-checkout"))
e92b8599 1406 (sha256
d46e9fcb 1407 (base32 "15i9bs2i25l7ibv530ghy8280kklcgm5kr6j86s7iwcqqckd0czp"))))
e92b8599
KM
1408 (build-system gnu-build-system)
1409 (inputs
1410 `(("perl" ,perl)))
1411 (arguments
d46e9fcb 1412 '(#:test-target "test"
d5a3e8f0 1413 #:phases (modify-phases %standard-phases (delete 'configure))
e92b8599 1414 #:make-flags (list (string-append "PREFIX=" %output))))
d46e9fcb 1415 (home-page "https://myrepos.branchable.com/")
e92b8599
KM
1416 (synopsis "Multiple repository management tool")
1417 (description
1418 "Myrepos provides the @code{mr} command, which maps an operation (e.g.,
1419fetching updates) over a collection of version control repositories. It
1420supports a large number of version control systems: Git, Subversion,
1421Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.")
369387b6 1422 (license license:gpl2+)))
e8d2168c
EF
1423
1424(define-public git-annex-remote-hubic
1425 (package
1426 (name "git-annex-remote-hubic")
1427 (version "0.3.1")
1428 (source (origin
1429 (method url-fetch)
1430 (uri (string-append
1431 "https://github.com/Schnouki/" name "/archive/v"
1432 version ".tar.gz"))
1433 (file-name (string-append name "-" version ".tar.gz"))
1434 (sha256
1435 (base32
1436 "196g3jkaybjx11nbr51n0cjps3wjzb145ab76y717diqvvxp5v4r"))))
1437 (build-system python-build-system)
f71d1a08 1438 (arguments `(#:python ,python-2))
e8d2168c 1439 (native-inputs
f3b98f4f 1440 `(;; for the tests
f71d1a08 1441 ("python2-six" ,python2-six)))
e8d2168c 1442 (propagated-inputs
7b6ff42a 1443 `(("python2-dateutil" ,python2-dateutil)
f71d1a08
EF
1444 ("python2-futures" ,python2-futures)
1445 ("python2-rauth" ,python2-rauth)
1446 ("python2-swiftclient" ,python2-swiftclient)))
e8d2168c
EF
1447 (home-page "https://github.com/Schnouki/git-annex-remote-hubic/")
1448 (synopsis "Use hubic as a git-annex remote")
1449 (description
1450 "This package allows you to use your hubic account as a \"special
1451repository\" with git-annex.")
369387b6 1452 (license license:gpl3+)))
f36a1eba
EB
1453
1454(define-public fossil
1455 (package
1456 (name "fossil")
d0b13d7b 1457 (version "2.2")
f36a1eba
EB
1458 (source
1459 (origin
1460 (method url-fetch)
d0b13d7b 1461 ;; Older downloads are moved to another URL.
1462 (uri (list
1463 (string-append
1464 "https://www.fossil-scm.org/index.html/uv/download/"
1465 "fossil-src-" version ".tar.gz")
1466 (string-append
1467 "https://www.fossil-scm.org/index.html/uv/"
1468 "fossil-src-" version ".tar.gz")))
f36a1eba
EB
1469 (sha256
1470 (base32
d0b13d7b 1471 "0wfgacfg29dkl0c3l1rp5ji0kraa64gcbg5lh8p4m7mqdqcq53wv"))))
f36a1eba
EB
1472 (build-system gnu-build-system)
1473 (native-inputs
1474 `(("tcl" ,tcl) ;for configuration only
1475 ("which" ,which) ;for tests only
1476 ("ed" ,ed))) ;ditto
1477 (inputs
1478 `(("openssl" ,openssl)
1479 ("zlib" ,zlib)
1480 ("sqlite" ,sqlite)))
1481 (arguments
1482 `(#:configure-flags (list "--with-openssl=auto"
1483 "--disable-internal-sqlite")
1484 #:test-target "test"
1485 #:phases (modify-phases %standard-phases
1486 (replace 'configure
1487 (lambda* (#:key outputs (configure-flags '())
1488 #:allow-other-keys)
1489 ;; The 'configure' script is not an autoconf script and
1490 ;; chokes on unrecognized options.
1491 (zero? (apply system*
1492 "./configure"
1493 (string-append "--prefix="
1494 (assoc-ref outputs "out"))
1495 configure-flags))))
1496 (add-before 'check 'test-setup
1497 (lambda _
1498 (setenv "USER" "guix")
1499 (setenv "TZ" "UTC")
f36a1eba
EB
1500 #t)))))
1501 (home-page "https://fossil-scm.org")
1502 (synopsis "Software configuration management system")
1503 (description
1504 "Fossil is a distributed source control management system which supports
1505access and administration over HTTP CGI or via a built-in HTTP server. It has
1506a built-in wiki, built-in file browsing, built-in tickets system, etc.")
369387b6 1507 (license (list license:public-domain ;src/miniz.c, src/shell.c
1508 license:bsd-2))))
1062f245 1509
1510(define-public stagit
1511 (package
1512 (name "stagit")
877c6163 1513 (version "0.5")
1062f245 1514 (source (origin
1515 (method url-fetch)
fea8b729 1516 (uri (string-append "https://dl.2f30.org/releases/"
1062f245 1517 name "-" version ".tar.gz"))
1518 (sha256
1519 (base32
877c6163 1520 "0ym1dwzn2z23hcg53qh1m1g5pfibrfnnlp3sm3z1v4mhz0pgaj56"))))
1062f245 1521 (build-system gnu-build-system)
1522 (arguments
1523 `(#:tests? #f ; No tests
1524 #:make-flags (list "CC=gcc"
1525 (string-append "PREFIX=" %output))
1526 #:phases
1527 (modify-phases %standard-phases
1528 (delete 'configure)))) ; No configure script
1529 (inputs
1530 `(("libgit2" ,libgit2)))
fea8b729 1531 (home-page "https://2f30.org/")
1062f245 1532 (synopsis "Static git page generator")
1533 (description "Stagit creates static pages for git repositories, the results can
1534be served with a HTTP file server of your choice.")
1535 (license license:expat)))
d81f131f 1536
1537;; Darcs has no https support: http://irclog.perlgeek.de/darcs/2016-09-17
1538;; http://darcs.net/manual/Configuring_darcs.html#SECTION00440070000000000000
1539;; and results of search engines will show that if the protocol is http, https
1540;; is never mentioned.
1541(define-public darcs
1542 (package
1543 (name "darcs")
1544 (version "2.12.4")
1545 (source
1546 (origin
1547 (method url-fetch)
1548 (uri (string-append "https://hackage.haskell.org/package/darcs/"
1549 "darcs-" version ".tar.gz"))
1550 (sha256
1551 (base32
1552 "0jfwiwl5k8wspciq1kpmvh5yap4japrf97s9pvhcybxxhaj3ds28"))
1553 (modules '((guix build utils)))
1554 ;; Remove time-dependent code for reproducibility.
1555 (snippet
1556 '(begin
1557 (substitute* "darcs/darcs.hs"
1558 (("__DATE__") "\"1970-01-01\"")
1559 (("__TIME__") "\"00:00:00\""))
1560 (substitute* "src/impossible.h"
1561 (("__DATE__") "\"\"")
1562 (("__TIME__") "\"\""))))))
1563 (build-system haskell-build-system)
1564 (arguments
1565 `(#:configure-flags '("-fpkgconfig" "-fcurl" "-flibiconv" "-fthreaded"
1566 "-fnetwork-uri" "-fhttp" "--flag=executable"
1567 "--flag=library")
1568 #:tests? #f)) ; 20 failing shell tests out of over 400
1569 (inputs
1570 `(("ghc-cmdargs" ,ghc-cmdargs)
1571 ("ghc-split" ,ghc-split)
1572 ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
1573 ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
1574 ("ghc-test-framework" ,ghc-test-framework)
1575 ("ghc-quickcheck" ,ghc-quickcheck)
1576 ("ghc-findbin" ,ghc-findbin)
1577 ("ghc-hunit" ,ghc-hunit)
1578 ("ghc-array" ,ghc-array)
1579 ("ghc-async" ,ghc-async)
1580 ("ghc-attoparsec" ,ghc-attoparsec)
1581 ("ghc-base16-bytestring" ,ghc-base16-bytestring)
1582 ("ghc-binary" ,ghc-binary)
1583 ("ghc-bytestring-builder" ,ghc-bytestring-builder)
1584 ("ghc-cryptohash" ,ghc-cryptohash)
1585 ("ghc-data-ordlist" ,ghc-data-ordlist)
1586 ("ghc-directory" ,ghc-directory)
1587 ("ghc-fgl" ,ghc-fgl)
1588 ("ghc-system-filepath" ,ghc-system-filepath)
1589 ("ghc-graphviz" ,ghc-graphviz)
1590 ("ghc-hashable" ,ghc-hashable)
1591 ("ghc-haskeline" ,ghc-haskeline)
1592 ("ghc-html" ,ghc-html)
1593 ("ghc-mmap" ,ghc-mmap)
1594 ("ghc-mtl" ,ghc-mtl)
1595 ("ghc-old-time" ,ghc-old-time)
1596 ("ghc-parsec" ,ghc-parsec)
1597 ("ghc-process" ,ghc-process)
1598 ("ghc-random" ,ghc-random)
1599 ("ghc-regex-applicative" ,ghc-regex-applicative)
1600 ("ghc-regex-compat-tdfa" ,ghc-regex-compat-tdfa)
1601 ("ghc-sandi" ,ghc-sandi)
1602 ("ghc-shelly" ,ghc-shelly)
1603 ("ghc-tar" ,ghc-tar)
1604 ("ghc-transformers-compat" ,ghc-transformers-compat)
1605 ("ghc-unix-compat" ,ghc-unix-compat)
1606 ("ghc-utf8-string" ,ghc-utf8-string)
1607 ("ghc-vector" ,ghc-vector)
1608 ("ghc-zip-archive" ,ghc-zip-archive)
1609 ("ghc-zlib" ,ghc-zlib)
1610 ("ghc-http" ,ghc-http)
1611 ("curl" ,curl)
1612 ("ghc" ,ghc)
1613 ("ncurses" ,ncurses)
1614 ("perl" ,perl)
1615 ("libiconv" ,libiconv)
1616 ("ghc-network" ,ghc-network)
1617 ("ghc-network-uri" ,ghc-network-uri)))
1618 (native-inputs
1619 `(("pkg-config" ,pkg-config)))
1620 (home-page "http://darcs.net")
1621 (synopsis "Distributed Revision Control System")
1622 (description
1623 "Darcs is a revision control system. It is:
1624
1625@enumerate
1626@item Distributed: Every user has access to the full command set, removing boundaries
1627between server and client or committer and non-committers.
1628@item Interactive: Darcs is easy to learn and efficient to use because it asks you
1629questions in response to simple commands, giving you choices in your work flow.
1630You can choose to record one change in a file, while ignoring another. As you update
1631from upstream, you can review each patch name, even the full diff for interesting
1632patches.
1633@item Smart: Originally developed by physicist David Roundy, darcs is based on a
1634unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
1635@end enumerate")
1636 (license license:gpl2)))
2613f5af
RW
1637
1638(define-public java-jgit
1639 (package
1640 (name "java-jgit")
1641 (version "4.7.0.201704051617-r")
1642 (source (origin
1643 (method url-fetch)
1644 (uri (string-append "https://repo1.maven.org/maven2/"
1645 "org/eclipse/jgit/org.eclipse.jgit/"
1646 version "/org.eclipse.jgit-"
1647 version "-sources.jar"))
1648 (sha256
1649 (base32
1650 "13ii4jn02ynzq6i7gsyi21k2i94jpc85wf6bcm31q4cyvzv0mk4k"))))
1651 (build-system ant-build-system)
1652 (arguments
1653 `(#:tests? #f ; There are no tests to run.
1654 #:jar-name "jgit.jar"
1655 ;; JGit must be built with a JDK supporting Java 8.
1656 #:jdk ,icedtea-8
1657 ;; Target our older default JDK.
88433733
RW
1658 #:make-flags (list "-Dtarget=1.7")
1659 #:phases
1660 (modify-phases %standard-phases
1661 ;; The jar file generated by the default build.xml does not include
1662 ;; the text properties files, so we need to add them.
1663 (add-after 'build 'add-properties
1664 (lambda* (#:key jar-name #:allow-other-keys)
1665 (with-directory-excursion "src"
1666 (zero? (apply system* "jar" "-uf"
1667 (string-append "../build/jar/" jar-name)
1668 (find-files "." "\\.properties$")))))))))
2613f5af
RW
1669 (inputs
1670 `(("java-classpathx-servletapi" ,java-classpathx-servletapi)
1671 ("java-javaewah" ,java-javaewah)
1672 ("java-jsch" ,java-jsch)
1673 ("java-slf4j-api" ,java-slf4j-api)))
1674 (home-page "https://eclipse.org/jgit/")
1675 (synopsis "Java library implementing the Git version control system")
1676 (description "JGit is a lightweight, pure Java library implementing the
1677Git version control system, providing repository access routines, support for
1678network protocols, and core version control algorithms.")
1679 (license license:edl1.0)))
bdb31853
RW
1680
1681;; For axoloti. This package can still be built with icedtea-7, which is
1682;; currently used as the default JDK.
1683(define-public java-jgit-4.2
1684 (package (inherit java-jgit)
1685 (version "4.2.0.201601211800-r")
1686 (source (origin
1687 (method url-fetch)
1688 (uri (string-append "https://repo1.maven.org/maven2/"
1689 "org/eclipse/jgit/org.eclipse.jgit/"
1690 version "/org.eclipse.jgit-"
1691 version "-sources.jar"))
1692 (sha256
1693 (base32
1694 "15gm537iivhnzlkjym4x3wn5jqdjdragsw9pdpzqqg21nrc817mm"))))
1695 (build-system ant-build-system)
1696 (arguments
88433733 1697 (substitute-keyword-arguments (package-arguments java-jgit)
bdb31853 1698 ;; Build for default JDK.
88433733
RW
1699 ((#:jdk _) icedtea-7)
1700 ((#:phases phases)
1701 `(modify-phases ,phases
1702 (add-after 'unpack 'use-latest-javaewah-API
1703 (lambda _
1704 (substitute* "src/org/eclipse/jgit/internal/storage/file/BitmapIndexImpl.java"
1705 (("wordinbits") "WORD_IN_BITS"))
1706 #t))))))
bdb31853
RW
1707 (inputs
1708 `(("java-javaewah" ,java-javaewah)
1709 ("java-jsch" ,java-jsch)
1710 ("java-slf4j-api" ,java-slf4j-api)))))