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