X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/992a9e59dd6cdd44d3b57dee4b736081be2db4a3..5a2f019c7d35d539036825a7d0cc184f0c7dc60a:/gnu/packages/version-control.scm diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 316710989c..a41ddf8da3 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -8,13 +8,15 @@ ;;; Copyright © 2014, 2016 Eric Bavier ;;; Copyright © 2015, 2016, 2017 Efraim Flashner ;;; Copyright © 2015 Kyle Meyer -;;; Copyright © 2015 Ricardo Wurmus -;;; Copyright © 2016 Leo Famulari +;;; Copyright © 2015, 2017 Ricardo Wurmus +;;; Copyright © 2016, 2017 Leo Famulari ;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2017 Tobias Geerinckx-Rice ;;; Copyright © 2017 Vasile Dumitrascu ;;; Copyright © 2017 Clément Lassieur ;;; Copyright © 2017 André +;;; Copyright © 2017 Marius Bakke +;;; Copyright © 2017 Stefan Reichör ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,6 +39,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix build-system ant) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system haskell) @@ -56,6 +59,10 @@ #:use-module (gnu packages gettext) #:use-module (gnu packages groff) #:use-module (gnu packages haskell) + #:use-module (gnu packages haskell-check) + #:use-module (gnu packages haskell-crypto) + #:use-module (gnu packages haskell-web) + #:use-module (gnu packages java) #:use-module (gnu packages linux) #:use-module (gnu packages nano) #:use-module (gnu packages ncurses) @@ -63,8 +70,10 @@ #:use-module (gnu packages web) #:use-module (gnu packages openstack) #:use-module (gnu packages perl) + #:use-module (gnu packages perl-check) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-web) #:use-module (gnu packages readline) #:use-module (gnu packages databases) #:use-module (gnu packages admin) @@ -73,6 +82,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages swig) #:use-module (gnu packages tcl) + #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages) #:use-module (ice-9 match) @@ -88,6 +98,7 @@ (uri (string-append "https://launchpad.net/bzr/" (version-major+minor version) "/" version "/+download/bzr-" version ".tar.gz")) + (patches (search-patches "bazaar-CVE-2017-14176.patch")) (sha256 (base32 "1cysix5k3wa6y7jjck3ckq3abls4gvz570s0v0hxv805nwki4i8d")))) @@ -118,14 +129,16 @@ as well as the classic centralized workflow.") (define-public git (package (name "git") - (version "2.13.1") + ;; XXX When updating Git, check if the special 'git:src' input to cgit needs + ;; to be updated as well. + (version "2.15.1") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/scm/git/git-" version ".tar.xz")) (sha256 (base32 - "1zl88rlga9nhgaqc9d04vp1l1g4x6qj1d02698asnxrzk36vxh9v")))) + "0p04linqdywdf7m1hqa904fzqvgzplsxlzdqrn96j1j5gpyr174r")))) (build-system gnu-build-system) (native-inputs `(("native-perl" ,perl) @@ -138,7 +151,7 @@ as well as the classic centralized workflow.") version ".tar.xz")) (sha256 (base32 - "0w7z6mis1x1skhg08qj95yczdsh1qipqnimfj60nsky40ryhkpg3")))))) + "0mi609plzqqwx271hr9m5j4syggqx255bbzml6ca9j5fadywysvc")))))) (inputs `(("curl" ,curl) ("expat" ,expat) @@ -174,7 +187,9 @@ as well as the classic centralized workflow.") ;; nars; see . "NO_INSTALL_HARDLINKS=indeed") #:test-target "test" - #:tests? #f ; FIXME: Many tests are failing + + ;; Tests fail randomly when parallel: . + #:parallel-tests? #f ;; The explicit --with-tcltk forces the build system to hardcode the ;; absolute file name to 'wish'. @@ -201,6 +216,44 @@ as well as the classic centralized workflow.") ;; Add the "PM.stamp" to avoid "no rule to make target". (call-with-output-file "perl/PM.stamp" (const #t)) #t)) + (add-before 'check 'patch-tests + (lambda _ + ;; These files contain some funny bytes that Guile is unable + ;; to decode for shebang patching. Just delete them. + (for-each delete-file '("t/t4201-shortlog.sh" + "t/t7813-grep-icase-iso.sh")) + ;; Many tests contain inline shell scripts (hooks etc). + (substitute* (find-files "t" "\\.sh$") + (("#!/bin/sh") (string-append "#!" (which "sh")))) + ;; Un-do shebang patching here to prevent checksum mismatch. + (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post") + (("^#!.*/bin/perl") "#!/usr/bin/perl")) + (substitute* "t/t5003-archive-zip.sh" + (("cp /bin/sh") (string-append "cp " (which "sh")))) + (substitute* "t/t6030-bisect-porcelain.sh" + (("\"/bin/sh\"") (string-append "\"" (which "sh") "\""))) + ;; FIXME: This test runs `git commit` with a bogus EDITOR + ;; and empty commit message, but does not fail the way it's + ;; expected to. The test passes when invoked interactively. + (substitute* "t/t7508-status.sh" + (("\tcommit_template_commented") "\ttrue")) + ;; More checksum mismatches due to odd shebangs. + (substitute* "t/t9100-git-svn-basic.sh" + (("\"#!/gnu.*/bin/sh") "\"#!/bin/sh")) + (substitute* "t/t9300-fast-import.sh" + (("\t#!/gnu.*/bin/sh") "\t#!/bin/sh") + (("'#!/gnu.*/bin/sh") "'#!/bin/sh")) + ;; FIXME: Some hooks fail with "basename: command not found". + ;; See 't/trash directory.t9164.../svn-hook.log'. + (delete-file "t/t9164-git-svn-dcommit-concurrent.sh") + + ;; XXX: These tests fail intermittently for unknown reasons: + ;; . + (for-each delete-file + '("t/t9128-git-svn-cmd-branch.sh" + "t/t9167-git-svn-cmd-branch-subproject.sh" + "t/t9141-git-svn-multiple-branches.sh")) + #t)) (add-after 'install 'install-shell-completion (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -315,24 +368,10 @@ everything from small to very large projects with speed and efficiency.") (license license:gpl2) (home-page "https://git-scm.com/"))) -;; Some dependent packages directly access internal interfaces which -;; have changed in 2.12 -(define-public git@2.10 - (package - (inherit git) - (version "2.10.3") - (source (origin - (method url-fetch) - (uri (string-append "mirror://kernel.org/software/scm/git/git-" - version ".tar.xz")) - (sha256 - (base32 - "02mb7yi49algsya3hnkcxdslwb6p1bi7c732z1g8kzq4hs838m7z")))))) - (define-public libgit2 (package (name "libgit2") - (version "0.25.1") + (version "0.26.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/libgit2/libgit2/" @@ -340,12 +379,17 @@ everything from small to very large projects with speed and efficiency.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1cdwcw38frc1wf28x5ppddazv9hywc718j92f3xa3ybzzycyds3s")) - (patches (search-patches "libgit2-use-after-free.patch" - "libgit2-0.25.1-mtime-0.patch")))) + "1b3figbhp5l83vd37vq6j2narrq4yl9pfw6mw0px0dzb1hz3jqka")) + (patches (search-patches "libgit2-0.25.1-mtime-0.patch")) + + ;; Remove bundled software. + (snippet '(delete-file-recursively "deps")) + (modules '((guix build utils))))) (build-system cmake-build-system) + (outputs '("out" "debug")) (arguments - `(#:phases + `(#:configure-flags '("-DUSE_SHA1DC=ON") ; SHA-1 collision detection + #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-hardcoded-paths (lambda _ @@ -360,7 +404,7 @@ everything from small to very large projects with speed and efficiency.") (lambda _ (zero? (system* "./libgit2_clar" "-v" "-Q"))))))) (inputs `(("libssh2" ,libssh2) - ("libcurl" ,curl) + ("http-parser" ,http-parser) ("python" ,python-wrapper))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -464,6 +508,8 @@ collaboration using typical untrusted file hosts or services.") (define-public cgit (package (name "cgit") + ;; XXX When updating cgit, try removing the special 'git:src' input and + ;; using the source of the git package. (version "1.1") (source (origin (method url-fetch) @@ -508,7 +554,16 @@ collaboration using typical untrusted file hosts or services.") ;; For building manpage. `(("asciidoc" ,asciidoc))) (inputs - `(("git:src" ,(package-source git@2.10)) + `(;; Cgit directly accesses some internal Git interfaces that changed in + ;; Git 2.12. Try removing this special input and using the source of the + ;; Git package for cgit > 1.1. + ("git:src" + ,(origin + (method url-fetch) + (uri "mirror://kernel.org/software/scm/git/git-2.10.4.tar.xz") + (sha256 + (base32 + "1pni4mgih5w42813dxljl61s7xmcpdnar34d9m4548hzpljjyd4l")))) ("openssl" ,openssl) ("zlib" ,zlib))) (home-page "https://git.zx2c4.com/cgit/") @@ -518,6 +573,44 @@ collaboration using typical untrusted file hosts or services.") a built-in cache to decrease server I/O pressure.") (license license:gpl2))) +(define-public python-ghp-import + (package + (name "python-ghp-import") + (version "0.5.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/davisp/ghp-import/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0x887v690xsac2hzjkpbvp3a6crh3m08mqbk3nb4xwc9dnk869q7")))) + (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'install 'install-documentation + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc")) + (licenses (string-append out "/share/licenses"))) + (install-file "README.md" doc) + (install-file "LICENSE" licenses))))))) + (home-page "https://github.com/davisp/ghp-import") + (synopsis "Copy directory to the gh-pages branch") + (description "Script that copies a directory to the gh-pages branch (by +default) of the repository.") + + ;; See . + (license (license:non-copyleft + "https://raw.githubusercontent.com/davisp/ghp-import/master/LICENSE" + "Tumbolia Public License")))) + +(define-public python2-ghp-import + (package-with-python2 + (strip-python2-variant python-ghp-import))) + (define-public shflags (package (name "shflags") @@ -605,6 +698,79 @@ subcommands helps automate some parts of the flow to make working with it a lot easier.") (license license:bsd-2))) +(define-public stgit + (package + (name "stgit") + (version "0.18") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/ctmarinas/stgit/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "19fk6vw3pgp2a98wpd4j3kyiyll5dy9bi4921wq1mrky0l53mj00")))) + (build-system python-build-system) + (inputs + `(("git" ,git))) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + ;; two tests will fail -> disable them. TODO: fix the failing tests + (delete-file "t/t3300-edit.sh") + (delete-file "t/t7504-commit-msg-hook.sh") + (zero? (system* "make" "test"))))))) + (home-page "http://procode.org/stgit/") + (synopsis "Stacked Git") + (description + "StGit is a command-line application that provides functionality similar +to Quilt (i.e., pushing/popping patches to/from a stack), but using Git +instead of @command{diff} and @command{patch}. StGit stores its patches in a +Git repository as normal Git commits, and provides a number of commands to +manipulate them in various ways.") + (license license:gpl2))) + +(define-public vcsh + (package + (name "vcsh") + (version "1.20151229") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/RichiH/vcsh/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1ym3swkh738c3vciffvlr96vqzhwmzkb8ajqzap8f0j9n039a1mf")))) + (build-system gnu-build-system) + (native-inputs + `(("which" ,which))) + (inputs + `(("git" ,git) + ("perl" ,perl) + ("perl-test-harness" ,perl-test-harness) + ("perl-shell-command" ,perl-shell-command) + ("perl-test-most" ,perl-test-most))) + (arguments + '(#:phases (modify-phases %standard-phases + (delete 'configure) + (delete 'build)) + #:make-flags (list (string-append "PREFIX=" + (assoc-ref %outputs "out"))) + #:test-target "test")) + (home-page "https://github.com/RichiH/vcsh") + (synopsis "Version control system for @code{$HOME}") + (description + "vcsh version-controls configuration files in several Git repositories, +all in one single directory. They all maintain their working trees without +clobbering each other or interfering otherwise. By default, all Git +repositories maintained via vcsh store the actual files in @code{$HOME}, +though this can be overridden.") + (license license:gpl2+))) + (define-public git-test-sequence (let ((commit "48e5a2f5a13a5f30452647237e23362b459b9c76")) (package @@ -705,14 +871,14 @@ control to Git repositories.") (define-public mercurial (package (name "mercurial") - (version "4.2.1") + (version "4.4.1") (source (origin (method url-fetch) (uri (string-append "https://www.mercurial-scm.org/" "release/mercurial-" version ".tar.gz")) (sha256 (base32 - "182qh6d0srps2n5sydzy8n3gi78la6m0wi3846zpyyd0b8pmgmfp")))) + "0ik2ypzxjr6vpcghxvn39a73gw52629n7vwak04gnbycsq95aalg")))) (build-system python-build-system) (arguments `(;; Restrict to Python 2, as Python 3 would require @@ -783,14 +949,18 @@ following features: (define-public subversion (package (name "subversion") - (version "1.8.17") + (version "1.8.19") (source (origin (method url-fetch) - (uri (string-append "https://archive.apache.org/dist/subversion/" - "subversion-" version ".tar.bz2")) + (uri + (list + (string-append "https://archive.apache.org/dist/subversion/" + "subversion-" version ".tar.bz2") + (string-append "https://www-eu.apache.org/dist/subversion/" + "subversion-" version ".tar.bz2"))) (sha256 (base32 - "1450fkj1jmxyphqn6cd95z1ykwsabajm9jw4i412qpwss8w9a4fy")))) + "1gp6426gkdza6ni2whgifjcmjb4nq34ljy07yxkrhlarvfq6ks2n")))) (build-system gnu-build-system) (arguments '(#:phases @@ -882,6 +1052,7 @@ machine.") (uri (string-append "https://ftp.gnu.org/non-gnu/cvs/source/feature/" version "/cvs-" version ".tar.bz2")) + (patches (search-patches "cvs-2017-12836.patch")) (sha256 (base32 "0pjir8cwn0087mxszzbsi1gyfc6373vif96cw4q3m1x6p49kd1bq")))) @@ -1177,15 +1348,15 @@ from Subversion to any supported Distributed Version Control System (DVCS).") (define-public tig (package (name "tig") - (version "2.2") + (version "2.3.0") (source (origin (method url-fetch) (uri (string-append - "http://jonas.nitro.dk/tig/releases/tig-" - version ".tar.gz")) + "https://github.com/jonas/tig/releases/download/tig-" + version "/tig-" version ".tar.gz")) (sha256 (base32 - "0k3m894vfkgkj7xbr0j6ph91351dl6id5f0hk2ksjp5lmg9i6llg")))) + "1vf02snz8qiiqiyqss1z63rzzmwbrc9agcgh21jdq13rja306vv8")))) (build-system gnu-build-system) (native-inputs `(("asciidoc" ,asciidoc) @@ -1200,8 +1371,8 @@ from Subversion to any supported Distributed Version Control System (DVCS).") (lambda _ (zero? (system* "make" "install-doc"))))) #:tests? #f)) ; tests require access to /dev/tty - ;;`(#:test-target "test")) - (home-page "http://jonas.nitro.dk/tig/") + ;; #:test-target "test")) + (home-page "https://jonas.github.io/tig/") (synopsis "Ncurses-based text user interface for Git") (description "Tig is an ncurses text user interface for Git, primarily intended as @@ -1224,7 +1395,7 @@ output of the 'git' command.") (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases - (add-before 'configure 'bootstrap + (add-after 'unpack 'bootstrap (lambda _ (zero? (system* "autoreconf" "-vfi"))))))) (native-inputs `(("autoconf" ,autoconf) @@ -1298,16 +1469,21 @@ repository\" with git-annex.") (define-public fossil (package (name "fossil") - (version "1.35") + (version "2.2") (source (origin (method url-fetch) - (uri (string-append - "https://www.fossil-scm.org/index.html/uv/download/" - "fossil-src-" version ".tar.gz")) + ;; Older downloads are moved to another URL. + (uri (list + (string-append + "https://www.fossil-scm.org/index.html/uv/download/" + "fossil-src-" version ".tar.gz") + (string-append + "https://www.fossil-scm.org/index.html/uv/" + "fossil-src-" version ".tar.gz"))) (sha256 (base32 - "07ds6rhq69bhydpm9a01mgdhxf88p9b6y5hdnhn8gjc7ba92zyf1")))) + "0wfgacfg29dkl0c3l1rp5ji0kraa64gcbg5lh8p4m7mqdqcq53wv")))) (build-system gnu-build-system) (native-inputs `(("tcl" ,tcl) ;for configuration only @@ -1336,9 +1512,6 @@ repository\" with git-annex.") (lambda _ (setenv "USER" "guix") (setenv "TZ" "UTC") - ;; Fixing the th1 test would require many backports, so - ;; just disable for now. - (delete-file "test/th1.test") #t))))) (home-page "https://fossil-scm.org") (synopsis "Software configuration management system") @@ -1476,3 +1649,77 @@ patches. unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}. @end enumerate") (license license:gpl2))) + +(define-public java-jgit + (package + (name "java-jgit") + (version "4.7.0.201704051617-r") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/jgit/org.eclipse.jgit/" + version "/org.eclipse.jgit-" + version "-sources.jar")) + (sha256 + (base32 + "13ii4jn02ynzq6i7gsyi21k2i94jpc85wf6bcm31q4cyvzv0mk4k")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; There are no tests to run. + #:jar-name "jgit.jar" + ;; JGit must be built with a JDK supporting Java 8. + #:jdk ,icedtea-8 + ;; Target our older default JDK. + #:make-flags (list "-Dtarget=1.7") + #:phases + (modify-phases %standard-phases + ;; The jar file generated by the default build.xml does not include + ;; the text properties files, so we need to add them. + (add-after 'build 'add-properties + (lambda* (#:key jar-name #:allow-other-keys) + (with-directory-excursion "src" + (zero? (apply system* "jar" "-uf" + (string-append "../build/jar/" jar-name) + (find-files "." "\\.properties$"))))))))) + (inputs + `(("java-classpathx-servletapi" ,java-classpathx-servletapi) + ("java-javaewah" ,java-javaewah) + ("java-jsch" ,java-jsch) + ("java-slf4j-api" ,java-slf4j-api))) + (home-page "https://eclipse.org/jgit/") + (synopsis "Java library implementing the Git version control system") + (description "JGit is a lightweight, pure Java library implementing the +Git version control system, providing repository access routines, support for +network protocols, and core version control algorithms.") + (license license:edl1.0))) + +;; For axoloti. This package can still be built with icedtea-7, which is +;; currently used as the default JDK. +(define-public java-jgit-4.2 + (package (inherit java-jgit) + (version "4.2.0.201601211800-r") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "org/eclipse/jgit/org.eclipse.jgit/" + version "/org.eclipse.jgit-" + version "-sources.jar")) + (sha256 + (base32 + "15gm537iivhnzlkjym4x3wn5jqdjdragsw9pdpzqqg21nrc817mm")))) + (build-system ant-build-system) + (arguments + (substitute-keyword-arguments (package-arguments java-jgit) + ;; Build for default JDK. + ((#:jdk _) icedtea-7) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'use-latest-javaewah-API + (lambda _ + (substitute* "src/org/eclipse/jgit/internal/storage/file/BitmapIndexImpl.java" + (("wordinbits") "WORD_IN_BITS")) + #t)))))) + (inputs + `(("java-javaewah" ,java-javaewah) + ("java-jsch" ,java-jsch) + ("java-slf4j-api" ,java-slf4j-api)))))