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