X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/0cf2b6f2dbcd299f7a4b7a563cf34ae5de154b15..4ea6852c5ff1606cf6848f3ddbb669120b228c13:/gnu/packages/code.scm diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index 13e2c4ad44..86730b231f 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -1,9 +1,9 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2015, 2018 Ludovic Courtès +;;; Copyright © 2013, 2015, 2018, 2020, 2021 Ludovic Courtès ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015, 2018 Ricardo Wurmus -;;; Copyright © 2016, 2017, 2019 Efraim Flashner -;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice +;;; Copyright © 2016, 2017, 2019, 2020 Efraim Flashner +;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2017, 2018 Clément Lassieur ;;; Copyright © 2017 Andy Wingo ;;; Copyright © 2018 Fis Trivial @@ -11,6 +11,11 @@ ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2019 Hartmut Goebel +;;; Copyright © 2020 Maxim Cournoyer +;;; Copyright © 2020, 2021 Marius Bakke +;;; Copyright © 2020 Julien Lepiller +;;; Copyright © 2021 lu hui ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,31 +34,40 @@ (define-module (gnu packages code) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (guix download) #:use-module (guix git-download) #: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) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bash) + #: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) + #:use-module (gnu packages llvm) + #:use-module (gnu packages linux) + #:use-module (gnu packages lua) + #:use-module (gnu packages ncurses) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) + #:use-module (gnu packages perl-compression) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages sqlite) #:use-module (gnu packages texinfo) - #:use-module (gnu packages ncurses) - #:use-module (gnu packages llvm) - #:use-module (gnu packages lua)) + #:use-module (gnu packages web) + #:use-module (gnu packages xml)) ;;; Tools to deal with source code: metrics, cross-references, etc. @@ -113,35 +127,51 @@ highlighting your own code that seemed comprehensible when you wrote it.") (define-public global ; a global variable (package (name "global") - (version "6.6.3") + (version "6.6.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/global/global-" version ".tar.gz")) (sha256 (base32 - "0735pj47dnspf20n0j1px24p59nwjinlmlb2n32ln1hvdkprivnb")))) + "0pad5p31rdspyrzqky3ppgx7f6gdlfnwg1c7qm8w1m4qzyppi03m")))) (build-system gnu-build-system) - (inputs `(("ncurses" ,ncurses) + (inputs `(("coreutils" ,coreutils) + ("ncurses" ,ncurses) ("libltdl" ,libltdl) - ("sqlite" ,sqlite))) + ("sqlite" ,sqlite) + ("python-wrapper" ,python-wrapper))) (arguments `(#:configure-flags (list (string-append "--with-ncurses=" (assoc-ref %build-inputs "ncurses")) (string-append "--with-sqlite3=" - (assoc-ref %build-inputs "sqlite"))) + (assoc-ref %build-inputs "sqlite")) + "--disable-static") #: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 Emacs Lisp file in the right place. + ;; Install the plugin files in the right place. (let* ((out (assoc-ref outputs "out")) (data (string-append out "/share/gtags")) + (vim (string-append out "/share/vim/vimfiles/plugin")) (lisp (string-append out "/share/emacs/site-lisp"))) - (install-file (string-append data "/gtags.el") lisp) - (delete-file (string-append data "/gtags.el")) + (mkdir-p lisp) + (mkdir-p vim) + (rename-file (string-append data "/gtags.el") + (string-append lisp "/gtags.el")) + (rename-file (string-append data "/gtags.vim") + (string-append vim "/gtags.vim")) + (rename-file (string-append data "/gtags-cscope.vim") + (string-append vim "/gtags-cscope.vim")) #t)))))) (home-page "https://www.gnu.org/software/global/") (synopsis "Cross-environment source code tag system") @@ -158,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 @@ -199,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 @@ -212,16 +242,16 @@ COCOMO model or user-provided parameters.") (define-public cloc (package (name "cloc") - (version "1.82") + (version "1.90") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/AlDanial/cloc.git") - (commit version))) + (url "https://github.com/AlDanial/cloc") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0fsz07z0slfg58512fmnlj8pnxkc360bgf7fclg60v9clvcjbjsw")))) + (base32 "0ic9q6qqw5f1wafp9lpmhr0miasbdb9zr59c0jlymnzffdmnliyc")))) (build-system gnu-build-system) (inputs `(("coreutils" ,coreutils) @@ -305,7 +335,7 @@ tools such as @command{grep}.") (base32 "02pwd5m5vq7hbrffgm2na1dfc249z50yyr5jv73vdw15bd7ygl44")))) (build-system gnu-build-system) - (home-page "http://daniel.haxx.se/projects/trio/") + (home-page "https://daniel.haxx.se/projects/trio/") (synopsis "Portable and extendable printf and string functions") (description "Trio is a set of @code{printf} and string functions designed be used by @@ -316,22 +346,94 @@ features that are not supported by the standard @code{stdio} implementation.") (license (license:non-copyleft "http://sourceforge.net/p/ctrio/git/ci/master/tree/README")))) +(define-public universal-ctags + (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+))) + (define-public withershins (package (name "withershins") (version "0.1") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/cameronwhite/withershins/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "08z3lyvswx7sad10637vfpwglbcbgzzcpfihw0x8lzr74f3b70bh")))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cameronwhite/withershins") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1cviqvbbcwljm1zx12j6511hazr3kscwrvcyifrkfi4fpy5z985m")))) (build-system cmake-build-system) (arguments `(#:out-of-source? #f + #:configure-flags + ;; XXX A (justified!) misleading-indentation error breaks the build. + (list "-DENABLE_WERROR=OFF") #:phases (modify-phases %standard-phases (add-after @@ -371,28 +473,45 @@ stack traces.") (define-public lcov (package (name "lcov") - (version "1.14") - (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/ltp/Coverage%20Analysis" - "/LCOV-" version "/lcov-" version ".tar.gz")) - (sha256 - (base32 - "06h7ixyznf6vz1qvksjgy5f3q2nw9akf6zx59npf0h3l32cmd68l")))) + (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 - '(#:make-flags - (let ((out (assoc-ref %outputs "out"))) - (list (string-append "PREFIX=" out))) + '(#:test-target "test" + #:make-flags (list (string-append "PREFIX=" + (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases - (delete 'configure)) ; no configure script - #:tests? #f)) ; no 'check' target - (inputs `(("perl" ,perl))) + (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 + (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 @@ -400,6 +519,69 @@ textual @command{gcov} output to implement the following enhanced functionality such as HTML output.") (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 (name "rtags") @@ -408,7 +590,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")) @@ -431,7 +613,6 @@ functionality such as HTML output.") '(#:build-type "RelWithDebInfo" #:configure-flags '("-DRTAGS_NO_ELISP_FILES=1" - "-DCMAKE_CXX_FLAGS=-std=c++11" "-DBUILD_TESTING=FALSE") #:tests? #f)) (native-inputs @@ -459,30 +640,24 @@ importantly we give you proper follow-symbol and find-references support.") (version "0.9.20140503") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/pagekite/Colormake/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/pagekite/Colormake") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "08ldss9zd8ls6bjahvxhffpsjcysifr720yf3jz9db2mlklzmyd3")))) + (base32 "1f9v5s0viq4yc9iv6701h3pv7j21zz1ckl37lpp9hsnliiizv03p")))) (build-system trivial-build-system) (native-inputs `(("bash" ,bash) - ("gzip" ,gzip) - ("perl" ,perl) - ("tar" ,tar))) + ("perl" ,perl))) (arguments `(#:modules ((guix build utils)) #:builder (begin (use-modules (guix build utils)) - ;; bootstrap - (setenv "PATH" (string-append - (assoc-ref %build-inputs "tar") "/bin" ":" - (assoc-ref %build-inputs "gzip") "/bin")) - (invoke "tar" "xvf" (assoc-ref %build-inputs "source")) - (chdir (string-append (string-capitalize ,name) "-" ,version)) + (copy-recursively (assoc-ref %build-inputs "source") "source") + (chdir "source") (patch-shebang "colormake.pl" (list (string-append (assoc-ref %build-inputs "perl") "/bin"))) @@ -503,7 +678,7 @@ importantly we give you proper follow-symbol and find-references support.") "clmake-short" "colormake.pl") bin) #t)))) - (home-page "http://bre.klaki.net/programs/colormake/") + (home-page "https://bre.klaki.net/programs/colormake/") (synopsis "Wrapper around @command{make} to produce colored output") (description "This package provides a wrapper around @command{make} to produce colored output.") @@ -513,14 +688,15 @@ produce colored output.") (package (name "makefile2graph") (version "1.5.0") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/lindenb/" name - "/archive/v" version ".tar.gz")) - (sha256 - (base32 - "0h1vchkpmm9h6s87p5nf0ksjxcmsxpx8k62a508w428n570wcr4l")) - (file-name (string-append name "-" version ".tar.gz")))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lindenb/makefile2graph") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1gjfk3d8qg3cla7qd2y7r9s03whlfwy83q8k76xfcnqrjjfavdgk")))) (build-system gnu-build-system) (arguments '(#:test-target "test" @@ -600,21 +776,38 @@ Objective@tie{}C, D, Java, Pawn, and Vala). Features: #:make-flags (list (string-append "prefix=" %output) "INSTALL=install" "all") + #:modules ((guix build gnu-build-system) ;; FIXME use %default-modules + (guix build utils) + (ice-9 regex)) #:phases (modify-phases %standard-phases (replace 'configure (lambda _ (chdir "build/gcc") #t)) (add-after 'install 'install-libs (lambda* (#:key outputs #:allow-other-keys) - ;; Libraries are not installed by default + ;; Libraries and includes are not installed by default (let* ((output (assoc-ref outputs "out")) + (incdir (string-append output "/include")) (libdir (string-append output "/lib"))) - (begin - (mkdir-p libdir) - (for-each (lambda (l) - (copy-file - l (string-append libdir "/" (basename l)))) - (find-files "bin" "lib*")))) + (define (make-so-link sofile strip-pattern) + (symlink + (basename sofile) + (regexp-substitute #f + (string-match strip-pattern sofile) + 'pre))) + (mkdir-p incdir) + (copy-file "../../src/astyle.h" + (string-append incdir "/astyle.h")) + (mkdir-p libdir) + (for-each (lambda (l) + (copy-file + l (string-append libdir "/" (basename l)))) + (find-files "bin" "lib*")) + (for-each + (lambda (sofile) + (make-so-link sofile "(\\.[0-9]){3}$") ;; link .so + (make-so-link sofile "(\\.[0-9]){2}$")) ;; link .so.3 + (find-files libdir "lib.*\\.so\\..*"))) #t))))) (home-page "http://astyle.sourceforge.net/") (synopsis "Source code indenter, formatter, and beautifier") @@ -644,9 +837,24 @@ the C, C++, C++/CLI, Objective‑C, C#, and Java programming languages.") ;; overrides this to be in PREFIX/doc. Fix this. (substitute* "doc/Makefile.in" (("^docdir = .*$") "docdir = @docdir@\n")) + #t)) + (add-after 'unpack 'fix-configure + (lambda* (#:key inputs native-inputs #:allow-other-keys) + ;; Replace outdated config.sub and config.guess: + (with-directory-excursion "config" + (for-each (lambda (file) + (install-file + (string-append (assoc-ref + (or native-inputs inputs) "automake") + "/share/automake-" + ,(version-major+minor + (package-version automake)) + "/" file) ".")) + '("config.sub" "config.guess"))) #t))))) (native-inputs - `(("texinfo" ,texinfo))) + `(("texinfo" ,texinfo) + ("automake" ,automake))) ; For up to date 'config.guess' and 'config.sub'. (synopsis "Code reformatter") (description "Indent is a program that makes source code easier to read by