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