Merge branch 'master' into core-updates
[jackhill/guix/guix.git] / gnu / packages / code.scm
index 3eaefc4..86730b2 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, 2021 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>
@@ -13,8 +13,9 @@
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; 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, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2021 lu hui <luhuins@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,6 +40,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)
@@ -125,16 +127,17 @@ highlighting your own code that seemed comprehensible when you wrote it.")
 (define-public global                             ; a global variable
   (package
     (name "global")
-    (version "6.6.5")
+    (version "6.6.6")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/global/global-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "10vvsgx8v54whb4j9mk5qqyb5h3rdd9da0il3wir8pcpksyk0dww"))))
+               "0pad5p31rdspyrzqky3ppgx7f6gdlfnwg1c7qm8w1m4qzyppi03m"))))
     (build-system gnu-build-system)
-    (inputs `(("ncurses" ,ncurses)
+    (inputs `(("coreutils" ,coreutils)
+              ("ncurses" ,ncurses)
               ("libltdl" ,libltdl)
               ("sqlite" ,sqlite)
               ("python-wrapper" ,python-wrapper)))
@@ -148,6 +151,12 @@ highlighting your own code that seemed comprehensible when you wrote it.")
 
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-globash
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((echo (string-append
+                           (assoc-ref inputs "coreutils") "/bin/echo")))
+               (substitute* "globash/globash.in"
+                 (("/bin/echo") echo)))))
         (add-after 'install 'post-install
           (lambda* (#:key outputs #:allow-other-keys)
             ;; Install the plugin files in the right place.
@@ -179,7 +188,7 @@ around in a large, deeply nested project.")
     (version "2.26")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://www.dwheeler.com/sloccount/sloccount-"
+              (uri (string-append "https://dwheeler.com/sloccount/sloccount-"
                                   version ".tar.gz"))
               (sha256
                (base32
@@ -220,7 +229,7 @@ around in a large, deeply nested project.")
         #:make-flags (list (string-append "PREFIX="
                                           (assoc-ref %outputs "out")))))
     (inputs `(("perl" ,perl)))
-    (home-page "http://www.dwheeler.com/sloccount/")
+    (home-page "https://dwheeler.com/sloccount/")
     (synopsis "Count physical source lines of code (SLOC)")
     (description
      "SLOCCount is a set of the programs for counting source lines of
@@ -233,16 +242,16 @@ COCOMO model or user-provided parameters.")
 (define-public cloc
   (package
     (name "cloc")
-    (version "1.86")
+    (version "1.90")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/AlDanial/cloc")
-             (commit version)))
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "082gj2b3x11bilz8c572dd60vn6n0fhld5zhi7wk7g1wy9wlgm9w"))))
+        (base32 "0ic9q6qqw5f1wafp9lpmhr0miasbdb9zr59c0jlymnzffdmnliyc"))))
     (build-system gnu-build-system)
     (inputs
      `(("coreutils" ,coreutils)
@@ -338,81 +347,73 @@ 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.20210509.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
+         "1sq94bnbzr40zwihfnsna759bbak0lw27j0yn12iwpg4xgb4hhwp"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove the bundled PackCC and associated build rules.
+           (substitute* "Makefile.am"
+             (("^PACKCC = .*")
+              "PACKCC = packcc")
+             (("\\$\\(PACKCC_FILES\\)")
+              "")
+             (("\\$\\(PEG_SRCS\\) \\$\\(PEG_HEADS\\): \\$\\(PACKCC\\)")
+              "$(PEG_SRCS) $(PEG_HEADS):"))
+           (delete-file-recursively "misc/packcc")))))
+    (build-system gnu-build-system)
+    (arguments
+     '(;; Don't use the build-time TMPDIR (/tmp/guix-build-...) at runtime.
+       #:configure-flags '("--enable-tmpdir=/tmp")
+       #:test-target "units"
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'make-files-writable
+                    (lambda _
+                      (for-each make-file-writable (find-files "."))))
+                  (add-before 'bootstrap 'patch-misc
+                    (lambda _
+                      ;; The autogen.sh script calls out to these scripts, so
+                      ;; we cannot wait for the patch-source-shebangs phase.
+                      (for-each patch-shebang (find-files "misc"))))
+                  (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"))))))))
+    (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
 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
@@ -470,60 +471,75 @@ 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")
-                      (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