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