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