Commit | Line | Data |
---|---|---|
23153c90 | 1 | ;;; GNU Guix --- Functional package management for GNU |
99e64a6e LC |
2 | ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org> |
3 | ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> | |
76e14638 | 4 | ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> |
23153c90 LC |
5 | ;;; |
6 | ;;; This file is part of GNU Guix. | |
7 | ;;; | |
8 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
9 | ;;; under the terms of the GNU General Public License as published by | |
10 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
11 | ;;; your option) any later version. | |
12 | ;;; | |
13 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
14 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | ;;; GNU General Public License for more details. | |
17 | ;;; | |
18 | ;;; You should have received a copy of the GNU General Public License | |
19 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
20 | ||
21 | (define-module (gnu packages code) | |
22 | #:use-module (guix packages) | |
23 | #:use-module (guix download) | |
d13586bf | 24 | #:use-module ((guix licenses) #:prefix license:) |
23153c90 | 25 | #:use-module (guix build-system gnu) |
76e14638 RW |
26 | #:use-module (guix build-system cmake) |
27 | #:use-module (gnu packages base) | |
d13586bf | 28 | #:use-module (gnu packages compression) |
e1ac691d | 29 | #:use-module (gnu packages databases) |
99e64a6e | 30 | #:use-module (gnu packages emacs) |
76e14638 | 31 | #:use-module (gnu packages gcc) |
d13586bf TČ |
32 | #:use-module (gnu packages pcre) |
33 | #:use-module (gnu packages pkg-config) | |
99e64a6e LC |
34 | #:use-module (gnu packages perl) |
35 | #:use-module (gnu packages texinfo) | |
36 | #:use-module (gnu packages autogen) | |
37 | #:use-module (gnu packages ncurses) | |
38 | #:use-module (gnu packages autotools)) | |
23153c90 LC |
39 | |
40 | ;;; Tools to deal with source code: metrics, cross-references, etc. | |
41 | ||
99e64a6e LC |
42 | (define-public cflow |
43 | (package | |
44 | (name "cflow") | |
45 | (version "1.4") | |
46 | (source (origin | |
47 | (method url-fetch) | |
48 | (uri (string-append "mirror://gnu/cflow/cflow-" | |
49 | version ".tar.bz2")) | |
50 | (sha256 | |
51 | (base32 | |
52 | "1jkbq97ajcf834z68hbn3xfhiz921zhn39gklml1racf0kb3jzh3")))) | |
53 | (build-system gnu-build-system) | |
54 | ||
55 | ;; Needed to have cflow-mode.el installed. | |
2d32d153 | 56 | (native-inputs `(("emacs" ,emacs-no-x))) |
99e64a6e LC |
57 | |
58 | (home-page "http://www.gnu.org/software/cflow/") | |
59 | (synopsis "Create a graph of control flow within a program") | |
60 | (description | |
61 | "GNU cflow analyzes C source files and produces a graph charting the | |
62 | control flow of the program. It can output the graph in several styles and | |
e881752c | 63 | in either the POSIX format or in an extended GNU format. cflow also includes |
99e64a6e | 64 | a major mode for Emacs for examining the flowcharts that it produces.") |
d13586bf | 65 | (license license:gpl3+))) |
99e64a6e LC |
66 | |
67 | (define-public complexity | |
68 | (package | |
69 | (name "complexity") | |
4375dcf3 | 70 | (version "1.3") |
99e64a6e LC |
71 | (source (origin |
72 | (method url-fetch) | |
73 | (uri (string-append "mirror://gnu/complexity/complexity-" | |
74 | version ".tar.gz")) | |
75 | (sha256 | |
76 | (base32 | |
4375dcf3 | 77 | "19bc64sxpqd5rqylqaa7dijz2x7qp2b0dg3ah3fb3qbcvd8b4wgy")))) |
99e64a6e LC |
78 | (build-system gnu-build-system) |
79 | (native-inputs | |
80 | `(("texinfo" ,texinfo) | |
81 | ("autogen" ,autogen))) | |
82 | (home-page "http://www.gnu.org/software/complexity/") | |
83 | (synopsis "Analyze complexity of C functions") | |
84 | (description | |
85 | "GNU complexity provides tools for finding procedures that are | |
86 | convoluted, overly long or otherwise difficult to understand. This | |
87 | may help in learning or reviewing unfamiliar code or perhaps | |
88 | highlighting your own code that seemed comprehensible when you wrote it.") | |
d13586bf | 89 | (license license:gpl3+))) |
99e64a6e LC |
90 | |
91 | (define-public global ; a global variable | |
92 | (package | |
93 | (name "global") | |
c4c020b7 | 94 | (version "6.5.1") |
99e64a6e LC |
95 | (source (origin |
96 | (method url-fetch) | |
97 | (uri (string-append "mirror://gnu/global/global-" | |
98 | version ".tar.gz")) | |
99 | (sha256 | |
100 | (base32 | |
c4c020b7 | 101 | "1y34nbazsw2p6r2jhv27z15qvm9mhy5xjchpz8pwps00shkm578f")))) |
99e64a6e LC |
102 | (build-system gnu-build-system) |
103 | (inputs `(("ncurses" ,ncurses) | |
e1ac691d LC |
104 | ("libltdl" ,libltdl) |
105 | ("sqlite" ,sqlite))) | |
99e64a6e LC |
106 | (arguments |
107 | `(#:configure-flags | |
108 | (list (string-append "--with-ncurses=" | |
e1ac691d LC |
109 | (assoc-ref %build-inputs "ncurses")) |
110 | (string-append "--with-sqlite3=" | |
111 | (assoc-ref %build-inputs "sqlite"))) | |
99e64a6e LC |
112 | |
113 | #:phases (alist-cons-after | |
114 | 'install 'post-install | |
115 | (lambda* (#:key outputs #:allow-other-keys) | |
116 | ;; Install the Emacs Lisp file in the right place. | |
117 | (let* ((out (assoc-ref outputs "out")) | |
118 | (data (string-append out "/share/gtags")) | |
119 | (lisp (string-append out "/share/emacs/site-lisp"))) | |
96c46210 LC |
120 | (install-file (string-append data "/gtags.el") |
121 | lisp) | |
99e64a6e LC |
122 | (delete-file (string-append data "/gtags.el")) |
123 | #t)) | |
124 | %standard-phases))) | |
125 | (home-page "http://www.gnu.org/software/global/") | |
126 | (synopsis "Cross-environment source code tag system") | |
127 | (description | |
128 | "GLOBAL is a source code tagging system that functions in the same way | |
129 | across a wide array of environments, such as different text editors, shells | |
130 | and web browsers. The resulting tags are useful for quickly moving around in | |
131 | a large, deeply nested project.") | |
d13586bf | 132 | (license license:gpl3+))) |
99e64a6e | 133 | |
23153c90 LC |
134 | (define-public sloccount |
135 | (package | |
136 | (name "sloccount") | |
137 | (version "2.26") | |
138 | (source (origin | |
139 | (method url-fetch) | |
140 | (uri (string-append "http://www.dwheeler.com/sloccount/sloccount-" | |
141 | version ".tar.gz")) | |
142 | (sha256 | |
143 | (base32 | |
144 | "0ayiwfjdh1946asah861ah9269s5xkc8p5fv1wnxs9znyaxs4zzs")))) | |
145 | (build-system gnu-build-system) | |
146 | (arguments | |
147 | '(#:phases (modify-phases %standard-phases | |
f8503e2b LC |
148 | (delete 'configure) |
149 | (add-before 'build 'make-dotl-files-older | |
23153c90 LC |
150 | (lambda _ |
151 | ;; Make the '.l' files as old as the '.c' | |
152 | ;; files to avoid triggering the rule that | |
153 | ;; requires Flex. | |
154 | (define ref | |
155 | (stat "README")) | |
156 | ||
157 | (for-each (lambda (file) | |
158 | (set-file-time file ref)) | |
159 | (find-files "." "\\.[chl]$")) | |
160 | #t)) | |
f8503e2b | 161 | (add-before 'install 'make-target-directories |
23153c90 LC |
162 | (lambda* (#:key outputs #:allow-other-keys) |
163 | (let ((out (assoc-ref outputs "out"))) | |
164 | (mkdir-p (string-append out "/bin")) | |
165 | (mkdir-p (string-append out | |
166 | "/share/man/man1")) | |
167 | (mkdir-p (string-append out | |
168 | "/share/doc"))))) | |
f8503e2b | 169 | (replace 'check |
23153c90 LC |
170 | (lambda _ |
171 | (setenv "HOME" (getcwd)) | |
172 | (setenv "PATH" | |
173 | (string-append (getcwd) ":" | |
174 | (getenv "PATH"))) | |
175 | (zero? (system* "make" "test"))))) | |
176 | ||
177 | #:make-flags (list (string-append "PREFIX=" | |
178 | (assoc-ref %outputs "out"))))) | |
179 | (inputs `(("perl" ,perl))) | |
180 | (home-page "http://www.dwheeler.com/sloccount/") | |
181 | (synopsis "Count physical source lines of code (SLOC)") | |
182 | (description | |
183 | "SLOCCount is a set of the programs for counting source lines of | |
184 | code (SLOC) in large software systems. It can automatically identify and | |
185 | measure a wide range of programming languages. It automatically estimates the | |
186 | effort, time, and money it would take to develop the software, using the | |
187 | COCOMO model or user-provided parameters.") | |
d13586bf TČ |
188 | (license license:gpl2+))) |
189 | ||
190 | (define-public the-silver-searcher | |
191 | (package | |
192 | (name "the-silver-searcher") | |
193 | (version "0.29.1") | |
194 | (source (origin | |
195 | (method url-fetch) | |
196 | (uri (string-append | |
197 | "https://github.com/ggreer/the_silver_searcher/archive/" | |
198 | version ".tar.gz")) | |
199 | (sha256 | |
200 | (base32 | |
201 | "0ah7vcqprl9hhafi68bvzaiywy7dfm28zf7kpw3xrlqzfn0vg7kp")) | |
202 | (file-name (string-append name "-" version ".tar.gz")))) | |
203 | (build-system gnu-build-system) | |
204 | (native-inputs | |
205 | `(("autoconf" ,autoconf) | |
206 | ("automake" ,automake) | |
207 | ("libtool" ,libtool) | |
208 | ("pkg-config" ,pkg-config))) | |
209 | (inputs | |
210 | `(("pcre" ,pcre) | |
211 | ("xz" ,xz) | |
212 | ("zlib" ,zlib))) | |
213 | (arguments | |
214 | `(#:phases | |
215 | ;; There is no configure yet, so let's create it, but let configure and | |
216 | ;; make do the work in later phases. | |
217 | (alist-cons-before 'configure 'autoconf | |
218 | (lambda _ | |
219 | (substitute* "build.sh" | |
220 | (("./configure") "true") | |
221 | (("make -j4") "true")) | |
222 | (zero? (system* "sh" "build.sh"))) | |
223 | %standard-phases))) | |
224 | (home-page "http://geoff.greer.fm/ag/") | |
225 | (synopsis "Fast code searching tool") | |
226 | (description | |
227 | "The silver searcher, or 'ag', is tool for quickly searching through | |
228 | files, but compared to grep is much faster and respects files like .gitignore, | |
229 | .hgignore, etc.") | |
230 | (license license:asl2.0))) | |
76e14638 RW |
231 | |
232 | (define-public withershins | |
233 | (package | |
234 | (name "withershins") | |
235 | (version "0.1") | |
236 | (source (origin | |
237 | (method url-fetch) | |
238 | (uri (string-append | |
239 | "https://github.com/cameronwhite/withershins/archive/v" | |
240 | version ".tar.gz")) | |
241 | (file-name (string-append name "-" version ".tar.gz")) | |
242 | (sha256 | |
243 | (base32 | |
244 | "08z3lyvswx7sad10637vfpwglbcbgzzcpfihw0x8lzr74f3b70bh")))) | |
245 | (build-system cmake-build-system) | |
246 | (arguments | |
247 | `(#:out-of-source? #f | |
76e14638 RW |
248 | #:phases |
249 | (modify-phases %standard-phases | |
250 | (add-after | |
251 | 'unpack 'find-libiberty | |
252 | (lambda _ | |
25734108 | 253 | (let ((libiberty (assoc-ref %build-inputs "libiberty"))) |
76e14638 | 254 | (substitute* "cmake/FindIberty.cmake" |
25734108 RW |
255 | (("/usr/include") (string-append libiberty "/include")) |
256 | (("libiberty.a iberty") | |
257 | (string-append "NAMES libiberty.a iberty\nPATHS \"" | |
258 | libiberty "/lib" "\""))) | |
76e14638 RW |
259 | #t))) |
260 | (replace | |
261 | 'install | |
262 | (lambda* (#:key outputs #:allow-other-keys) | |
263 | (let ((out (assoc-ref outputs "out"))) | |
264 | (mkdir-p (string-append out "/lib")) | |
265 | (mkdir (string-append out "/include")) | |
266 | (copy-file "src/withershins.hpp" | |
267 | (string-append out "/include/withershins.hpp")) | |
268 | (copy-file "src/libwithershins.a" | |
269 | (string-append out "/lib/libwithershins.a"))) | |
270 | #t))))) | |
271 | (home-page "https://github.com/cameronwhite/withershins") | |
272 | (inputs | |
25734108 | 273 | `(("libiberty" ,libiberty) |
76e14638 RW |
274 | ("binutils" ,binutils) ;for libbfd |
275 | ("zlib" ,zlib))) | |
276 | (synopsis "C++11 library for generating stack traces") | |
277 | (description | |
278 | "Withershins is a simple cross-platform C++11 library for generating | |
279 | stack traces.") | |
280 | ;; Sources are released under Expat license, but since BFD is licensed | |
281 | ;; under the GPLv3+ the combined work is GPLv3+ as well. | |
282 | (license license:gpl3+))) |