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