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