;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2016, 2019 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2018 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018 Timothy Sample <samplet@ngyro.com>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2019 Jovany Leandro G.C <bit4bit@riseup.net>
+;;; Copyright © 2019 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system go)
#:use-module (guix build-system python)
#:use-module (guix build-system trivial)
#:use-module (gnu packages apr)
#:use-module (gnu packages compression)
#:use-module (gnu packages sdl)
#:use-module (gnu packages swig)
+ #:use-module (gnu packages sync)
#:use-module (gnu packages tcl)
#:use-module (gnu packages textutils)
#:use-module (gnu packages time)
as well as the classic centralized workflow.")
(license license:gpl2+)))
+(define git-cross-configure-flags
+ '("ac_cv_fread_reads_directories=yes"
+ "ac_cv_snprintf_returns_bogus=no"))
+
(define-public git
(package
(name "git")
;; XXX When updating Git, check if the special 'git-source' input to cgit
;; needs to be updated as well.
- (version "2.21.0")
+ (version "2.24.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "0a0d0b07rmvs985zpndxxy0vzr0vq53kq5kyd68iv6gf8gkirjwc"))))
+ "0ql5z31vgl7b785gwrf00m129mg7zi9pa65n12ij3mpxx3f28gvj"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
version ".tar.xz"))
(sha256
(base32
- "0lgcynqbjmfsvhfk14jvqyvb1xiyqgkgznb707vha38wjcjdqs1g"))))
+ "1yzy5jikkv67ynp576j926kg8zdldh8j4b57l0ixcnjdcyr4lc17"))))
;; For subtree documentation.
("asciidoc" ,asciidoc)
("docbook-xsl" ,docbook-xsl)
;; a problem in 'patch-shebangs'; see <https://bugs.gnu.org/31952>.
("bash-for-tests" ,bash)
- ;; For 'gitweb.cgi'
+ ;; For PCRE support in git grep (USE_LIBPCRE2).
+ ("pcre" ,pcre2)
+
+ ;; For 'gitweb.cgi'.
("perl-cgi" ,perl-cgi)
;; For 'git-svn'.
("subversion" ,subversion)
("perl-term-readkey" ,perl-term-readkey)
- ;; For 'git-send-email'
+ ;; For 'git-send-email'.
("perl-authen-sasl" ,perl-authen-sasl)
("perl-net-smtp-ssl" ,perl-net-smtp-ssl)
("perl-io-socket-ssl" ,perl-io-socket-ssl)
(assoc-ref %build-inputs "bash-for-tests")
"/bin/bash")
+ "USE_LIBPCRE2=yes"
+
;; By default 'make install' creates hard links for
;; things in 'libexec/git-core', which leads to huge
;; nars; see <https://bugs.gnu.org/21949>.
;; absolute file name to 'wish'.
#:configure-flags (list (string-append "--with-tcltk="
(assoc-ref %build-inputs "tk")
- "/bin/wish8.6")) ; XXX
+ "/bin/wish8.6") ; XXX
+ ,@(if (%current-target-system)
+ git-cross-configure-flags
+ '()))
#:modules ((srfi srfi-1)
(srfi srfi-26)
(remove (cut string-prefix? bash-full <>) path)
":"))
#t)))
+ ;; Add cross curl-config script to PATH when cross-compiling.
+ ,@(if (%current-target-system)
+ '((add-before 'configure 'add-cross-curl-config
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "PATH"
+ (string-append (assoc-ref inputs "curl") "/bin:"
+ (getenv "PATH")))
+ #t)))
+ '())
(add-after 'configure 'patch-makefiles
(lambda _
(substitute* "Makefile"
(delete-file-recursively
(string-append out "/share/gitweb"))
#t)))))
+ ((#:make-flags flags)
+ `(delete "USE_LIBPCRE2=yes" ,flags))
((#:configure-flags flags)
- ''())
+ `(list
+ ,@(if (%current-target-system)
+ git-cross-configure-flags
+ '())))
((#:disallowed-references lst '())
`(,perl ,@lst))))
(outputs '("out"))
(define-public libgit2
(package
(name "libgit2")
- (version "0.28.1")
+ (version "0.28.4")
(source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/libgit2/libgit2/"
- "archive/v" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libgit2/libgit2.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0swk2dyq5a4p1jn5wvbcsrxckhh808vifxz5y8w663avg541188c"))
+ "171b25aym4q88bidc4c76y4l6jmdwifm3q9zjqsll0wjhlkycfy1"))
(patches (search-patches "libgit2-avoid-python.patch"
"libgit2-mtime-0.patch"))
(build-system cmake-build-system)
(outputs '("out" "debug"))
(arguments
- `(#:configure-flags '("-DUSE_SHA1DC=ON") ; SHA-1 collision detection
+ `(#:configure-flags
+ (list "-DUSE_SHA1DC=ON" ; SHA-1 collision detection
+ ,@(if (%current-target-system)
+ `((string-append
+ "-DPKG_CONFIG_EXECUTABLE="
+ (assoc-ref %build-inputs "pkg-config")
+ "/bin/" ,(%current-target-system) "-pkg-config"))
+ '()))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-hardcoded-paths
(("/bin/cp") (which "cp"))
(("/bin/rm") (which "rm")))
#t))
- ;; Run checks more verbosely.
+ (add-after 'unpack 'make-git-checkout-writable
+ (lambda _
+ (for-each make-file-writable (find-files "."))
+ #t))
+ ;; Run checks more verbosely, unless we are cross-compiling.
(replace 'check
- (lambda _ (invoke "./libgit2_clar" "-v" "-Q"))))))
+ (lambda* (#:key (tests? #t) #:allow-other-keys)
+ (if tests?
+ (invoke "./libgit2_clar" "-v" "-Q")
+ ;; Tests may be disabled if cross-compiling.
+ (format #t "Test suite not run.~%")))))))
(inputs
`(("libssh2" ,libssh2)
("http-parser" ,http-parser)))
,(origin
(method url-fetch)
;; XXX CGit is currently incompatible with Git > 2.18.
- (uri "mirror://kernel.org/software/scm/git/git-2.18.0.tar.xz")
+ (uri "mirror://kernel.org/software/scm/git/git-2.18.2.tar.xz")
(sha256
(base32
- "14hfwfkrci829a9316hnvkglnqqw1p03cw9k56p4fcb078wbwh4b"))))
+ "1gmcz5k8sa6phzhhv6zjl8izbyqnxcdb8ns8kd2czyak0g409vrq"))))
("openssl" ,openssl)
("groff" ,groff)
("python" ,python)
(package
(name "gitolite")
(version "3.6.7")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/sitaramc/gitolite/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1idxipg0df80bhjcxgwxs3lllqnkvhwpinmfv1xvg1l98fxiapgp"))))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sitaramc/gitolite.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0rmyzr66lxh2ildf3h1nh3hh2ndwk21rjdin50r5vhwbdd7jg8vb"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
(define-public mercurial
(package
(name "mercurial")
- (version "4.7.2")
+ (version "5.0.2")
(source (origin
(method url-fetch)
(uri (string-append "https://www.mercurial-scm.org/"
"release/mercurial-" version ".tar.gz"))
(sha256
(base32
- "1yq9r8s9jzj8hk2yizjk25s4w16yx9b8mbdj6wp8ld7j2r15kw4p"))))
+ "1y60hfc8gh4ha9sw650qs7hndqmvbn0qxpmqwpn4q18z5xwm1f19"))))
(build-system python-build-system)
(arguments
`(;; Restrict to Python 2, as Python 3 would require
(define-public subversion
(package
(name "subversion")
- (version "1.10.4")
+ (version "1.10.6")
(source (origin
(method url-fetch)
(uri
"subversion-" version ".tar.bz2")))
(sha256
(base32
- "18c1vdq32nil76w678lxmp73jsbqha3dmzgmfrj76nc0xjmywql2"))))
+ "19zc215mhpnm92mlyl5jbv57r5zqp6cavr3s2g9yglp6j4kfgj0q"))))
(build-system gnu-build-system)
(arguments
'(#:phases
(patches (search-patches "rcs-5.9.4-noreturn.patch"))))
(build-system gnu-build-system)
(native-inputs `(("ed" ,ed)))
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-before 'check 'disable-t810
+ ;; See https://savannah.gnu.org/bugs/index.php?52288
+ ;; Back-porting the fix is non-trivial, so disable for now.
+ (lambda _
+ (substitute* "tests/Makefile"
+ ((" t810 \\\\\n") ""))
+ #t)))))
(home-page "https://www.gnu.org/software/rcs/")
(synopsis "Per-file local revision control system")
(description
(uri (string-append
"https://ftp.gnu.org/non-gnu/cvs/source/feature/"
version "/cvs-" version ".tar.bz2"))
- (patches (search-patches "cvs-2017-12836.patch"))
+ (patches (search-patches "cvs-CVE-2017-12836.patch"))
(sha256
(base32
"0pjir8cwn0087mxszzbsi1gyfc6373vif96cw4q3m1x6p49kd1bq"))))
(define-public cssc
(package
(name "cssc")
- (version "1.4.0")
+ (version "1.4.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/" name "/CSSC-"
version ".tar.gz"))
(sha256
(base32
- "15191dh8hr46cvssmv4v52gymiiyk6ca9j1bfimlqakcqab6y51h"))))
+ "1vsisqq573xjr2qpn19iwmpqgl3mq03m790akpa4rvj60b4d1gni"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(package
(name "findnewest")
(version "0.3")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/0-wiz-0/findnewest/archive/findnewest-"
- version ".tar.gz"))
- (sha256
- (base32
- "1ydis4y0amkgfr4y60sn076f1l41ya2kn89kfd9fqf44f9ccgb5r"))))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/0-wiz-0/findnewest.git")
+ (commit (string-append "findnewest-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1x1cbn2b27h5r0ah5xc06fkalfdci2ngrgd4wibxjw0h88h0nvgq"))))
(build-system gnu-build-system)
(native-inputs `(("autoconf" ,autoconf)
("automake" ,automake)))
(package
(name "git-annex-remote-hubic")
(version "0.3.1")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/Schnouki/" name "/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "196g3jkaybjx11nbr51n0cjps3wjzb145ab76y717diqvvxp5v4r"))))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Schnouki/git-annex-remote-hubic.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "16y9sk67hfi17h9n2kkffyabfccksh5rab40hhk69v6cxmbpn2sx"))))
(build-system python-build-system)
(arguments `(#:python ,python-2))
(native-inputs
repository\" with git-annex.")
(license license:gpl3+)))
+(define-public git-annex-remote-rclone
+ (package
+ (name "git-annex-remote-rclone")
+ (version "0.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/DanielDent/git-annex-remote-rclone.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0j0hlxji8d974fq7zd4xc02n0jpi31ylhxc7z4zp8iiwad5mkpxp"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let ((bash (string-append (assoc-ref %build-inputs "bash")
+ "/bin/bash"))
+ (rclone (string-append (assoc-ref %build-inputs "rclone")
+ "/bin/rclone")))
+ (copy-file (string-append (assoc-ref %build-inputs "source")
+ "/git-annex-remote-rclone")
+ "git-annex-remote-rclone")
+ (substitute* "git-annex-remote-rclone"
+ (("/bin/bash") bash)
+ (("runcmd rclone") (string-append "runcmd " rclone)))
+ (install-file "git-annex-remote-rclone"
+ (string-append %output "/bin"))
+ #t))))
+ (inputs
+ `(("bash" ,bash)
+ ("rclone" ,rclone)))
+ (home-page "https://github.com/DanielDent/git-annex-remote-rclone")
+ (synopsis "Use rclone-supported cloud storage providers with git-annex")
+ (description "This wrapper around rclone makes any destination supported
+by rclone usable with git-annex.")
+ (license license:gpl3+)))
+
(define-public fossil
(package
(name "fossil")
(inputs
`(("openssl" ,openssl)
("zlib" ,zlib)
- ("sqlite" ,sqlite-3.26.0)))
+ ("sqlite" ,sqlite)))
(arguments
`(#:configure-flags (list "--with-openssl=auto"
"--disable-internal-sqlite")
(package
(name "git-imerge")
(version "1.1.0")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/mhagger/git-imerge/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "0a6ay8fpgz3yd84jc40w41x0rcfpan6bcq4wd1hxiiqwb51jysb2"))))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mhagger/git-imerge.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0vi1w3f0yk4gqhxj2hzqafqq28rihyhyfnp8x7xzib96j2si14a4"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; The are only manual test scripts.
+ `(#:tests? #f ; only manual test scripts
#:make-flags (list (string-append "DESTDIR=" %output)
"PREFIX=")
#:phases
the smallest possible conflicts and to allow a merge to be saved, tested,
interrupted, published, and collaborated on while in progress.")
(license license:gpl2+)))
+
+(define-public git-lfs
+ (package
+ (name "git-lfs")
+ (version "2.7.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/git-lfs/git-lfs")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1nf40rbdz901vsahg5cm09pznpina6wimmxl0lmh8pn0mi51yzvc"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/git-lfs/git-lfs"))
+ (home-page "https://git-lfs.github.com/")
+ (synopsis "Git extension for versioning large files")
+ (description
+ "Git Large File Storage (LFS) replaces large files such as audio samples,
+videos, datasets, and graphics with text pointers inside Git, while storing the
+file contents on a remote server.")
+ (license license:expat)))