gnu: watchexec: Update to 1.14.1.
[jackhill/guix/guix.git] / gnu / packages / code.scm
index 6334c97..4e30dac 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2015, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
@@ -14,6 +14,7 @@
 ;;; Copyright © 2019 Hartmut Goebel <h.goebel@goebel-consult.de>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -38,6 +39,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages autogen)
@@ -47,6 +49,8 @@
   #:use-module (gnu packages c)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages elf)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages graphviz)
@@ -122,14 +126,14 @@ highlighting your own code that seemed comprehensible when you wrote it.")
 (define-public global                             ; a global variable
   (package
     (name "global")
-    (version "6.6.4")
+    (version "6.6.5")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/global/global-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1515642wsjz7x3rsgaqk4sc7n0z2znl7idsk8jz8wgy5aswqqzlq"))))
+               "10vvsgx8v54whb4j9mk5qqyb5h3rdd9da0il3wir8pcpksyk0dww"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)
               ("libltdl" ,libltdl)
@@ -230,16 +234,16 @@ COCOMO model or user-provided parameters.")
 (define-public cloc
   (package
     (name "cloc")
-    (version "1.86")
+    (version "1.88")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/AlDanial/cloc.git")
+             (url "https://github.com/AlDanial/cloc")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "082gj2b3x11bilz8c572dd60vn6n0fhld5zhi7wk7g1wy9wlgm9w"))))
+        (base32 "1ixgswzbzv63bl50gb2kgaqr0jcicjz6w610hi9fal1i7744zraw"))))
     (build-system gnu-build-system)
     (inputs
      `(("coreutils" ,coreutils)
@@ -335,81 +339,93 @@ features that are not supported by the standard @code{stdio} implementation.")
               "http://sourceforge.net/p/ctrio/git/ci/master/tree/README"))))
 
 (define-public universal-ctags
-  ;; The project is unable to decide whether to use 1.0 or 6.0 as the
-  ;; first public release version (it started as a fork of another ctags
-  ;; project that was on version 5.8), and five years later have been
-  ;; unable to tag a release.  Thus, we just take the master branch.
-  (let ((commit "0c78c0c4a68030df0d025c90bad291108b5e7107")
-        (revision "0"))
-    (package
-      (name "universal-ctags")
-      (version (git-version "0.0.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/universal-ctags/ctags")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0lnxc3kwi6srw0015m16vyjfdc7pdr9d1qzxjsbfv3c69ag87jhc"))
-         (modules '((guix build utils)))
-         (snippet
-          '(begin
-             ;; Remove the bundled PackCC and associated build rules.
-             (substitute* "Makefile.am"
-               (("\\$\\(packcc_verbose\\)\\$\\(PACKCC\\)")
-                "packcc")
-               (("\\$\\(PEG_SRCS\\) \\$\\(PEG_HEADS\\): packcc\\$\\(EXEEXT\\)")
-                "$(PEG_SRCS) $(PEG_HEADS):")
-               (("noinst_PROGRAMS \\+= packcc")
-                ""))
-             (delete-file-recursively "misc/packcc")
-             #t))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'make-files-writable
-                      (lambda _
-                        (for-each make-file-writable (find-files "."))
-                        #t))
-                    (add-before 'bootstrap 'patch-optlib2c
-                      (lambda _
-                        ;; The autogen.sh script calls out to optlib2c to
-                        ;; generate translations, so we can not wait for the
-                        ;; patch-source-shebangs phase.
-                        (patch-shebang "misc/optlib2c")
-                        #t))
-                    (add-before 'check 'patch-tests
-                      (lambda _
-                        (substitute* "misc/units"
-                          (("SHELL=/bin/sh")
-                           (string-append "SHELL=" (which "sh"))))
-                        (substitute* "Tmain/utils.sh"
-                          (("/bin/echo") (which "echo")))
-                        #t)))))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("packcc" ,packcc)
-         ("perl" ,perl)
-         ("pkg-config" ,pkg-config)))
-      (inputs
-       `(("jansson" ,jansson)
-         ("libseccomp" ,libseccomp)
-         ("libxml2" ,libxml2)
-         ("libyaml" ,libyaml)))
-      (home-page "https://ctags.io/")
-      (synopsis "Generate tag files for source code")
-      (description
-       "Universal Ctags generates an index (or tag) file of language objects
+  (package
+    (name "universal-ctags")
+    (version "5.9.20201018.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/universal-ctags/ctags")
+             (commit (string-append "p" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "174p1w20pl25k996hfw61inw4mqhskmmic1lyw2m65firmkyvs7x"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove the bundled PackCC and associated build rules.
+           (substitute* "Makefile.am"
+             (("\\$\\(packcc_verbose\\)\\$\\(PACKCC\\)")
+              "packcc")
+             (("\\$\\(PEG_SRCS\\) \\$\\(PEG_HEADS\\): packcc\\$\\(EXEEXT\\)")
+              "$(PEG_SRCS) $(PEG_HEADS):")
+             (("noinst_PROGRAMS \\+= packcc")
+              ""))
+           (delete-file-recursively "misc/packcc")
+           #t))))
+    (build-system gnu-build-system)
+    (arguments
+     '(;; Don't use the build-time TMPDIR (/tmp/guix-build-...) at runtime.
+       #:configure-flags '("--enable-tmpdir=/tmp")
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'make-files-writable
+                    (lambda _
+                      (for-each make-file-writable (find-files "."))
+                      #t))
+                  (add-before 'bootstrap 'patch-optlib2c
+                    (lambda _
+                      ;; The autogen.sh script calls out to optlib2c to
+                      ;; generate translations, so we can not wait for the
+                      ;; patch-source-shebangs phase.
+                      (patch-shebang "misc/optlib2c")
+                      #t))
+                  (add-before 'check 'patch-tests
+                    (lambda _
+                      (substitute* "misc/units"
+                        (("SHELL=/bin/sh")
+                         (string-append "SHELL=" (which "sh"))))
+                      (substitute* "Tmain/utils.sh"
+                        (("/bin/echo") (which "echo")))
+                      #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ;; XXX: Use ctags' own packcc fork even though we meticolously unbundle
+       ;; it above.  Mainly for historical reasons, and perhaps their changes
+       ;; get upstreamed in the future.
+       ("packcc"
+        ,(let ((commit "03402b79505dc0024f90d5bebfd7e5d3fb62da9a"))
+           (package
+             (inherit packcc)
+             (source (origin
+                       (method git-fetch)
+                       (uri (git-reference
+                             (url "https://github.com/universal-ctags/packcc")
+                             (commit commit)))
+                       (file-name (git-file-name "packcc-for-ctags"
+                                                 (string-take commit 7)))
+                       (sha256
+                        (base32
+                         "0vxpdk9l2lf7f32nx1p3b3xmw2kw2wp95vnf9bc4lyqrg69pblm0")))))))
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("jansson" ,jansson)
+       ("libseccomp" ,libseccomp)
+       ("libxml2" ,libxml2)
+       ("libyaml" ,libyaml)))
+    (home-page "https://ctags.io/")
+    (synopsis "Generate tag files for source code")
+    (description
+     "Universal Ctags generates an index (or tag) file of language objects
 found in source files for many popular programming languages.  This index
 makes it easy for text editors and other tools to locate the indexed items.
 Universal Ctags improves on traditional ctags because of its multilanguage
 support, its ability for the user to define new languages searched by regular
 expressions, and its ability to generate emacs-style TAGS files.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public withershins
   (package
@@ -419,7 +435,7 @@ expressions, and its ability to generate emacs-style TAGS files.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cameronwhite/withershins.git")
+             (url "https://github.com/cameronwhite/withershins")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -467,60 +483,116 @@ stack traces.")
     (license license:gpl3+)))
 
 (define-public lcov
-  ;; Use a recent commit from upstream since the latest official release
-  ;; (1.14) doesn't support GCC 9 (see:
-  ;; https://github.com/linux-test-project/lcov/issues/58).
-  (let* ((commit "40580cd65909bc8324ae09b36bca2e178652ff3f")
-         (revision "0")
-         (version (git-version "1.14" revision commit)))
-    (package
-      (name "lcov")
-      (version "1.14")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/linux-test-project/lcov.git")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0shgmh6fzhnj1qfdl90jgjmlbb1ih1qh879dca8hc58yggy3hqgb"))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:test-target "test"
-         #:make-flags (list (string-append "PREFIX="
-                                           (assoc-ref %outputs "out")))
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'patch-pwd
-             ;; Lift the requirement of having a shell in PATH.
-             (lambda _
-               (substitute* "bin/geninfo"
-                 (("qw/abs_path/")
-                  "qw/abs_path getcwd/"))
-               (substitute* '("bin/lcov" "bin/geninfo")
-                 (("`pwd`")
-                  "getcwd()"))
-               #t))
-           (delete 'configure)          ;no configure script
-           (add-after 'install 'wrap
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (wrap-program (string-append out "/bin/geninfo")
-                   `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB")))))
-               #t)))))
-      (inputs `(("perl" ,perl)
-                ("perl-json" ,perl-json)
-                ("perl-perlio-gzip" ,perl-perlio-gzip)))
-      (home-page "http://ltp.sourceforge.net/coverage/lcov.php")
-      (synopsis "Code coverage tool that enhances GNU gcov")
-      (description "LCOV is an extension of @command{gcov}, a tool part of the
+  (package
+    (name "lcov")
+    (version "1.15")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/linux-test-project/lcov"
+                           "/releases/download/v" version
+                           "/lcov-" version ".tar.gz"))
+       (sha256
+        (base32 "0fh5z0q5wg2jxr2nn5w7321y0zg9rwk75j3k5hnamjdy6gxa5kf1"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:test-target "test"
+       #:make-flags (list (string-append "PREFIX="
+                                         (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-pwd
+           ;; Lift the requirement of having a shell in PATH.
+           (lambda _
+             (substitute* "bin/geninfo"
+               (("qw/abs_path/")
+                "qw/abs_path getcwd/"))
+             (substitute* '("bin/lcov" "bin/geninfo")
+               (("`pwd`")
+                "getcwd()"))
+             #t))
+         (delete 'configure)            ;no configure script
+         (add-after 'install 'wrap
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/geninfo")
+                 `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB")))))
+             #t)))))
+    (inputs `(("perl" ,perl)
+              ("perl-io-compress" ,perl-io-compress)
+              ("perl-json" ,perl-json)))
+    (home-page "http://ltp.sourceforge.net/coverage/lcov.php")
+    (synopsis "Code coverage tool that enhances GNU gcov")
+    (description "LCOV is an extension of @command{gcov}, a tool part of the
 GNU@tie{}Binutils, which provides information about what parts of a program
 are actually executed (i.e., \"covered\") while running a particular test
 case.  The extension consists of a set of Perl scripts which build on the
 textual @command{gcov} output to implement the following enhanced
 functionality such as HTML output.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
+
+(define-public lcov-cobertura
+  (package
+    (name "python-lcov-cobertura")
+    (version "1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "lcov_cobertura" version))
+       (sha256
+        (base32
+         "02ar6yjazlxq4p64cz9gag08bvakmzjrp147jara9wlnlbc96j8g"))))
+    (build-system python-build-system)
+    (home-page "https://eriwen.github.io/lcov-to-cobertura-xml/")
+    (synopsis "LCOV to Cobertura XML converter")
+    (description
+     "The lcov-to-cobertura Python module converts code coverage report files
+in the lcov format to the XML format of
+@uref{http://cobertura.github.io/cobertura/, Cobertura}, a Java code coverage
+tool.  It allows continuous integration servers like Jenkins to aggregate
+results and determine build stability.")
+    (license license:asl2.0)))
+
+(define-public kcov
+  (package
+    (name "kcov")
+    (version "38")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/SimonKagstrom/kcov")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0zqg21xwivi16csl6a5wby6679ny01bjaw4am3y4qcgjdyihifp8"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ;no test target
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-/bin/bash-references
+           (lambda _
+             (substitute* (find-files "src" ".*\\.cc?$")
+               (("/bin/bash") (which "bash"))
+               (("/bin/sh") (which "sh")))
+             #t)))))
+    (inputs
+     `(("curl" ,curl)
+       ("elfutils" ,elfutils)
+       ("libelf" ,libelf)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("python" ,python)))
+    (home-page "https://github.com/SimonKagstrom/kcov")
+    (synopsis "Code coverage tester for compiled languages, Python and Bash")
+    (description "Kcov is a FreeBSD/Linux/OSX code coverage tester for compiled
+languages, Python and Bash.  Kcov was originally a fork of Bcov, but has since
+evolved to support a large feature set in addition to that of Bcov.
+
+Kcov uses DWARF debugging information for compiled programs to make it
+possible to collect coverage information without special compiler switches.")
+    (license license:gpl2+)))
 
 (define-public rtags
   (package
@@ -530,7 +602,7 @@ functionality such as HTML output.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Andersbakken/rtags.git")
+             (url "https://github.com/Andersbakken/rtags")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (patches (search-patches "rtags-separate-rct.patch"))
@@ -582,7 +654,7 @@ importantly we give you proper follow-symbol and find-references support.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pagekite/Colormake.git")
+             (url "https://github.com/pagekite/Colormake")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -632,7 +704,7 @@ produce colored output.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/lindenb/makefile2graph.git")
+             (url "https://github.com/lindenb/makefile2graph")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256