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