build-system/haskell: install config for any package that creates it.
[jackhill/guix/guix.git] / gnu / packages / haskell.scm
CommitLineData
246b3437
FB
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages haskell)
20 #:use-module (ice-9 regex)
3d3613d5 21 #:use-module ((guix licenses) #:select (bsd-3))
246b3437
FB
22 #:use-module (guix packages)
23 #:use-module (guix download)
24 #:use-module (guix utils)
25 #:use-module (guix build-system gnu)
7d5baa30 26 #:use-module (guix build-system haskell)
246b3437 27 #:use-module (gnu packages perl)
3d3613d5 28 #:use-module (gnu packages compression)
246b3437
FB
29 #:use-module (gnu packages elf)
30 #:use-module (gnu packages bootstrap)
31 #:use-module (gnu packages ghostscript)
32 #:use-module (gnu packages libffi)
33 #:use-module (gnu packages libedit)
34 #:use-module (gnu packages multiprecision)
35 #:use-module (gnu packages ncurses)
36 #:use-module (gnu packages python))
37
5868a8bf 38(define ghc-bootstrap-x86_64-7.8.4
246b3437
FB
39 (origin
40 (method url-fetch)
5868a8bf
FB
41 (uri
42 "https://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-x86_64-unknown-linux-deb7.tar.xz")
246b3437
FB
43 (sha256
44 (base32
5868a8bf
FB
45 "13azsl53xgj20mi1hj9x0xb32vvcvs6cpmvwx6znxhas7blh0bpn"))))
46
47(define ghc-bootstrap-i686-7.8.4
48 (origin
49 (method url-fetch)
50 (uri
51 "https://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-i386-unknown-linux-deb7.tar.xz")
52 (sha256
53 (base32
54 "0wj5s435j0zgww70bj1d3f6wvnnpzlxwvwcyh2qv4qjq5z8j64kg"))))
246b3437
FB
55
56;; 43 tests out of 3965 fail.
57;;
58;; Most of them do not appear to be serious:
59;;
60;; - some tests generate files referring to "/bin/sh" and "/bin/ls". I've not
61;; figured out how these references are generated.
62;;
63;; - Some tests allocate more memory than expected (ca. 3% above upper limit)
64;;
65;; - Some tests try to load unavailable libriries: Control.Concurrent.STM,
66;; Data.Vector, Control.Monad.State.
67;;
68;; - Test posix010 tries to check the existence of a user on the system:
69;; getUserEntryForName: does not exist (no such user)
70(define-public ghc
71 (package
72 (name "ghc")
73 (version "7.8.4")
74 (source
75 (origin
76 (method url-fetch)
77 (uri (string-append "https://www.haskell.org/ghc/dist/"
78 version "/" name "-" version "-src.tar.xz"))
79 (sha256
80 (base32
81 "1i4254akbb4ym437rf469gc0m40bxm31blp6s1z1g15jmnacs6f3"))))
82 (build-system gnu-build-system)
83 (supported-systems '("i686-linux" "x86_64-linux"))
84 (outputs '("out" "doc"))
85 (inputs
86 `(("gmp" ,gmp)
87 ("ncurses" ,ncurses)
88 ("libffi" ,libffi)
89 ("libedit" ,libedit)
90 ("ghc-testsuite"
91 ,(origin
92 (method url-fetch)
93 (uri (string-append
94 "https://www.haskell.org/ghc/dist/"
95 version "/" name "-" version "-testsuite.tar.xz"))
96 (sha256
97 (base32
98 "0q95whf87y4mxjzwzy899g7z7l9pazq4si6iciyhxkcdhqq2ycyh"))))))
99 (native-inputs
100 `(("perl" ,perl)
101 ("python" ,python-2) ; for tests (fails with python-3)
102 ("ghostscript" ,ghostscript) ; for tests
103 ("patchelf" ,patchelf)
104 ;; GHC is built with GHC. Therefore we need bootstrap binaries.
5868a8bf
FB
105 ("ghc-binary"
106 ,(if (string-match "x86_64" (or (%current-target-system) (%current-system)))
107 ghc-bootstrap-x86_64-7.8.4
108 ghc-bootstrap-i686-7.8.4))))
246b3437
FB
109 (arguments
110 `(#:test-target "test"
111 ;; We get a smaller number of test failures by disabling parallel test
112 ;; execution.
113 #:parallel-tests? #f
fb799cb7
LC
114
115 ;; The DSOs use $ORIGIN to refer to each other, but (guix build
116 ;; gremlin) doesn't support it yet, so skip this phase.
117 #:validate-runpath? #f
118
246b3437
FB
119 #:modules ((guix build gnu-build-system)
120 (guix build utils)
121 (guix build rpath)
122 (srfi srfi-26)
123 (srfi srfi-1))
caaf1933 124 #:imported-modules (,@%gnu-build-system-modules
246b3437
FB
125 (guix build rpath))
126 #:configure-flags
127 (list
128 (string-append "--with-gmp-libraries="
129 (assoc-ref %build-inputs "gmp") "/lib")
130 (string-append "--with-gmp-includes="
131 (assoc-ref %build-inputs "gmp") "/include")
132 "--with-system-libffi"
133 (string-append "--with-ffi-libraries="
134 (assoc-ref %build-inputs "libffi") "/lib")
135 (string-append "--with-ffi-includes="
136 (assoc-ref %build-inputs "libffi") "/include"))
137 ;; FIXME: The user-guide needs dblatex, docbook-xsl and docbook-utils.
138 ;; Currently we do not have the last one.
139 ;; #:make-flags
140 ;; (list "BUILD_DOCBOOK_HTML = YES")
141 #:phases
142 (let* ((ghc-bootstrap-path
143 (string-append (getcwd) "/" ,name "-" ,version "/ghc-bin"))
144 (ghc-bootstrap-prefix
145 (string-append ghc-bootstrap-path "/usr" )))
146 (alist-cons-after
147 'unpack-bin 'unpack-and-fix-testsuite
148 (lambda* (#:key inputs outputs #:allow-other-keys)
149 (with-directory-excursion ".."
150 (copy-file (assoc-ref inputs "ghc-testsuite")
151 "ghc-testsuite.tar.xz")
152 (system* "tar" "xvf" "ghc-testsuite.tar.xz"))
246b3437
FB
153 (substitute*
154 (list "testsuite/timeout/Makefile"
155 "testsuite/timeout/timeout.py"
156 "testsuite/timeout/timeout.hs"
157 "testsuite/tests/rename/prog006/Setup.lhs"
158 "testsuite/tests/programs/life_space_leak/life.test")
159 (("/bin/sh") (which "sh"))
160 (("/bin/rm") "rm"))
161 #t)
162 (alist-cons-after
163 'unpack 'unpack-bin
164 (lambda* (#:key inputs outputs #:allow-other-keys)
165 (mkdir-p ghc-bootstrap-prefix)
166 (with-directory-excursion ghc-bootstrap-path
167 (copy-file (assoc-ref inputs "ghc-binary")
168 "ghc-bin.tar.xz")
169 (zero? (system* "tar" "xvf" "ghc-bin.tar.xz"))))
170 (alist-cons-before
171 'install-bin 'configure-bin
172 (lambda* (#:key inputs outputs #:allow-other-keys)
173 (let* ((binaries
174 (list
175 "./utils/ghc-pwd/dist-install/build/tmp/ghc-pwd"
176 "./utils/hpc/dist-install/build/tmp/hpc"
177 "./utils/haddock/dist/build/tmp/haddock"
178 "./utils/hsc2hs/dist-install/build/tmp/hsc2hs"
179 "./utils/runghc/dist-install/build/tmp/runghc"
180 "./utils/ghc-cabal/dist-install/build/tmp/ghc-cabal"
181 "./utils/hp2ps/dist/build/tmp/hp2ps"
182 "./utils/ghc-pkg/dist-install/build/tmp/ghc-pkg"
183 "./utils/unlit/dist/build/tmp/unlit"
184 "./ghc/stage2/build/tmp/ghc-stage2"))
185 (gmp (assoc-ref inputs "gmp"))
186 (gmp-lib (string-append gmp "/lib"))
187 (gmp-include (string-append gmp "/include"))
188 (ncurses-lib
189 (string-append (assoc-ref inputs "ncurses") "/lib"))
190 (ld-so (string-append (assoc-ref inputs "libc")
191 ,(glibc-dynamic-linker)))
192 (libtinfo-dir
193 (string-append ghc-bootstrap-prefix
194 "/lib/ghc-7.8.4/terminfo-0.4.0.0")))
195 (with-directory-excursion
196 (string-append ghc-bootstrap-path "/" ,name "-" ,version)
197 (setenv "CONFIG_SHELL" (which "bash"))
198 (setenv "LD_LIBRARY_PATH" gmp-lib)
199 ;; The binaries have "/lib64/ld-linux-x86-64.so.2" hardcoded.
200 (for-each
201 (cut system* "patchelf" "--set-interpreter" ld-so <>)
202 binaries)
203 ;; The binaries include a reference to libtinfo.so.5 which
204 ;; is a subset of libncurses.so.5. We create a symlink in a
205 ;; directory included in the bootstrap binaries rpath.
206 (mkdir-p libtinfo-dir)
207 (symlink
208 (string-append ncurses-lib "/libncursesw.so."
209 ,(version-major+minor
210 (package-version ncurses)))
211 (string-append libtinfo-dir "/libtinfo.so.5"))
212 (setenv "PATH"
213 (string-append (getenv "PATH") ":"
214 ghc-bootstrap-prefix "/bin"))
215 (system*
216 (string-append (getcwd) "/configure")
217 (string-append "--prefix=" ghc-bootstrap-prefix)
218 (string-append "--with-gmp-libraries=" gmp-lib)
219 (string-append "--with-gmp-includes=" gmp-include)))))
220 (alist-cons-before
221 'configure 'install-bin
222 (lambda* (#:key inputs outputs #:allow-other-keys)
223 (with-directory-excursion
224 (string-append ghc-bootstrap-path "/" ,name "-" ,version)
225 (zero? (system* "make" "install"))))
226 %standard-phases)))))))
227 (home-page "https://www.haskell.org/ghc")
228 (synopsis "The Glasgow Haskell Compiler")
229 (description
230 "The Glasgow Haskell Compiler (GHC) is a state-of-the-art compiler and
231interactive environment for the functional language Haskell.")
232 (license bsd-3)))
233
7d5baa30
FB
234(define-public ghc-mtl
235 (package
236 (name "ghc-mtl")
237 (version "2.1.3.1")
238 (outputs '("out" "doc"))
239 (source
240 (origin
241 (method url-fetch)
242 (uri (string-append
243 "http://hackage.haskell.org/package/mtl/mtl-"
244 version
245 ".tar.gz"))
246 (sha256
247 (base32
248 "1xpn2wjmqbh2cg1yssc6749xpgcqlrrg4iilwqgkcjgvaxlpdbvp"))))
249 (build-system haskell-build-system)
250 (home-page "http://github.com/ekmett/mtl")
251 (synopsis
252 "Monad classes, using functional dependencies")
253 (description
254 "Monad classes using functional dependencies, with instances
255for various monad transformers, inspired by the paper
256'Functional Programming with Overloading and Higher-Order Polymorphism',
257by Mark P Jones, in 'Advanced School of Functional Programming', 1995
258http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.")
259 (license bsd-3)))
260
0939da6e
FB
261(define-public ghc-paths
262 (package
263 (name "ghc-paths")
264 (version "0.1.0.9")
265 (outputs '("out" "doc"))
266 (source
267 (origin
268 (method url-fetch)
269 (uri (string-append
270 "http://hackage.haskell.org/package/ghc-paths/ghc-paths-"
271 version
272 ".tar.gz"))
273 (sha256
274 (base32
275 "0ibrr1dxa35xx20cpp8jzgfak1rdmy344dfwq4vlq013c6w8z9mg"))))
276 (build-system haskell-build-system)
277 (home-page "https://github.com/simonmar/ghc-paths")
278 (synopsis
279 "Knowledge of GHC's installation directories")
280 (description
281 "Knowledge of GHC's installation directories.")
282 (license bsd-3)))
283
3d3613d5
FB
284(define-public ghc-zlib
285 (package
286 (name "ghc-zlib")
287 (version "0.5.4.2")
288 (outputs '("out" "doc"))
289 (source
290 (origin
291 (method url-fetch)
292 (uri (string-append
293 "http://hackage.haskell.org/package/zlib/zlib-"
294 version
295 ".tar.gz"))
296 (sha256
297 (base32
298 "15hhsk7z3gvm7sz2ic2z1ca5c6rpsln2rr391mdbm1bxlzc1gmkm"))))
299 (build-system haskell-build-system)
300 (inputs `(("zlib" ,zlib)))
301 (home-page "http://hackage.haskell.org/package/zlib")
302 (synopsis
303 "Compression and decompression in the gzip and zlib formats")
304 (description
305 "This package provides a pure interface for compressing and decompressing
306streams of data represented as lazy 'ByteString's. It uses the zlib C library
307so it has high performance. It supports the 'zlib', 'gzip' and 'raw'
308compression formats. It provides a convenient high level API suitable for
309most tasks and for the few cases where more control is needed it provides
310access to the full zlib feature set.")
311 (license bsd-3)))
312
a39f3936
FB
313(define-public ghc-stm
314 (package
315 (name "ghc-stm")
316 (version "2.4.4")
317 (outputs '("out" "doc"))
318 (source
319 (origin
320 (method url-fetch)
321 (uri (string-append
322 "http://hackage.haskell.org/package/stm/stm-"
323 version
324 ".tar.gz"))
325 (sha256
326 (base32
327 "0gc8zvdijp3rwmidkpxv76b4i0dc8dw6nbd92rxl4vxl0655iysx"))))
328 (build-system haskell-build-system)
329 (home-page "http://hackage.haskell.org/package/stm")
330 (synopsis "Software Transactional Memory")
331 (description
332 "A modular composable concurrency abstraction.")
333 (license bsd-3)))
334
e916e211
FB
335(define-public ghc-parallel
336 (package
337 (name "ghc-parallel")
338 (version "3.2.0.6")
339 (outputs '("out" "doc"))
340 (source
341 (origin
342 (method url-fetch)
343 (uri (string-append
344 "http://hackage.haskell.org/package/parallel/parallel-"
345 version
346 ".tar.gz"))
347 (sha256
348 (base32
349 "0hp6vf4zxsw6vz6lj505xihmnfhgjp39c9q7nyzlgcmps3xx6a5r"))))
350 (build-system haskell-build-system)
351 (home-page "http://hackage.haskell.org/package/parallel")
352 (synopsis "Parallel programming library")
353 (description
354 "This package provides a library for parallel programming.")
355 (license bsd-3)))
356
deb36de0
FB
357(define-public ghc-text
358 (package
359 (name "ghc-text")
360 (version "1.2.0.4")
361 (outputs '("out" "doc"))
362 (source
363 (origin
364 (method url-fetch)
365 (uri (string-append
366 "http://hackage.haskell.org/package/text/text-"
367 version
368 ".tar.gz"))
369 (sha256
370 (base32
371 "004p1c74crs8wmjafwsmw3mmycspq1j8fpm1lvfpq6acha7bnpc6"))))
372 (build-system haskell-build-system)
373 (arguments
374 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
375 (home-page "https://github.com/bos/text")
1eefe4a8 376 (synopsis "Efficient packed Unicode text type library")
deb36de0
FB
377 (description
378 "An efficient packed, immutable Unicode text type (both strict and
379lazy), with a powerful loop fusion optimization framework.
380
381The 'Text' type represents Unicode character strings, in a time and
1eefe4a8 382space-efficient manner. This package provides text processing
deb36de0
FB
383capabilities that are optimized for performance critical use, both
384in terms of large data quantities and high speed.")
385 (license bsd-3)))
386
775be802
FB
387(define-public ghc-hashable
388 (package
389 (name "ghc-hashable")
390 (version "1.2.3.2")
391 (outputs '("out" "doc"))
392 (source
393 (origin
394 (method url-fetch)
395 (uri (string-append
396 "http://hackage.haskell.org/package/hashable/hashable-"
397 version
398 ".tar.gz"))
399 (sha256
400 (base32
401 "0h9295pv2sgbaqlwpwbx2bap6nngm0jcdhkqham1wpjwyxqgqrlc"))))
402 (build-system haskell-build-system)
403 (arguments
404 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
405 ;; these inputs are necessary to use this library
406 (propagated-inputs
407 `(("ghc-text" ,ghc-text)))
408 (home-page "http://github.com/tibbe/hashable")
409 (synopsis
410 "Class for types that can be converted to a hash value")
411 (description
412 "This package defines a class, 'Hashable', for types that can be
413converted to a hash value. This class exists for the benefit of hashing-based
414data structures. The package provides instances for basic types and a way to
415combine hash values.")
416 (license bsd-3)))
417
c3b90c0e
FB
418(define-public ghc-hunit
419 (package
420 (name "ghc-hunit")
421 (version "1.2.5.2")
422 (outputs '("out" "doc"))
423 (source
424 (origin
425 (method url-fetch)
426 (uri (string-append
427 "http://hackage.haskell.org/package/HUnit/HUnit-"
428 version
429 ".tar.gz"))
430 (sha256
431 (base32
432 "0hcs6qh8bqhip1kkjjnw7ccgcsmawdz5yvffjj5y8zd2vcsavx8a"))))
433 (build-system haskell-build-system)
434 (home-page "http://hunit.sourceforge.net/")
435 (synopsis "Unit testing framework for Haskell")
436 (description
437 "HUnit is a unit testing framework for Haskell, inspired by the
438JUnit tool for Java.")
439 (license bsd-3)))
440
df596b94
FB
441(define-public ghc-random
442 (package
443 (name "ghc-random")
444 (version "1.1")
445 (outputs '("out" "doc"))
446 (source
447 (origin
448 (method url-fetch)
449 (uri (string-append
450 "http://hackage.haskell.org/package/random/random-"
451 version
452 ".tar.gz"))
453 (sha256
454 (base32 "0nis3lbkp8vfx8pkr6v7b7kr5m334bzb0fk9vxqklnp2aw8a865p"))))
455 (build-system haskell-build-system)
456 (home-page "http://hackage.haskell.org/package/random")
457 (synopsis "Random number library")
458 (description "This package provides a basic random number generation
459library, including the ability to split random number generators.")
460 (license bsd-3)))
4af803a7
FB
461
462(define-public ghc-primitive
463 (package
464 (name "ghc-primitive")
465 (version "0.5.4.0")
466 (outputs '("out" "doc"))
467 (source
468 (origin
469 (method url-fetch)
470 (uri (string-append
471 "http://hackage.haskell.org/package/primitive/primitive-"
472 version
473 ".tar.gz"))
474 (sha256
475 (base32
476 "05gdgj383xdrdkhxh26imlvs8ji0z28ny38ms9snpvv5i8l2lg10"))))
477 (build-system haskell-build-system)
478 (home-page
479 "https://github.com/haskell/primitive")
480 (synopsis "Primitive memory-related operations")
481 (description
482 "This package provides various primitive memory-related operations.")
483 (license bsd-3)))
484
c272160a
FB
485(define-public ghc-tf-random
486 (package
487 (name "ghc-tf-random")
488 (version "0.5")
489 (outputs '("out" "doc"))
490 (source
491 (origin
492 (method url-fetch)
493 (uri (string-append
494 "http://hackage.haskell.org/package/tf-random/tf-random-"
495 version
496 ".tar.gz"))
497 (sha256
498 (base32 "0445r2nns6009fmq0xbfpyv7jpzwv0snccjdg7hwj4xk4z0cwc1f"))))
499 (build-system haskell-build-system)
500 ;; these inputs are necessary to use this package
501 (propagated-inputs
502 `(("ghc-primitive" ,ghc-primitive)
503 ("ghc-random" ,ghc-random)))
504 (home-page "http://hackage.haskell.org/package/tf-random")
505 (synopsis "High-quality splittable pseudorandom number generator")
506 (description "This package contains an implementation of a high-quality
507splittable pseudorandom number generator. The generator is based on a
508cryptographic hash function built on top of the ThreeFish block cipher. See
509the paper \"Splittable Pseudorandom Number Generators Using Cryptographic
510Hashing\" by Claessen, Pałka for details and the rationale of the design.")
511 (license bsd-3)))
512
dc0ae39a
FB
513(define-public ghc-quickcheck
514 (package
515 (name "ghc-quickcheck")
516 (version "2.8")
517 (outputs '("out" "doc"))
518 (source
519 (origin
520 (method url-fetch)
521 (uri (string-append
522 "http://hackage.haskell.org/package/QuickCheck/QuickCheck-"
523 version
524 ".tar.gz"))
525 (sha256
526 (base32
527 "04xs6mq22bcnkpi616qrbm7jlivh9csnhmvjgp1ifq52an1wr4rx"))))
528 (build-system haskell-build-system)
529 (arguments
530 `(#:tests? #f ; FIXME: currently missing libraries used for tests.
531 #:configure-flags '("-f base4")))
532 ;; these inputs are necessary to use this package
533 (propagated-inputs
534 `(("ghc-tf-random" ,ghc-tf-random)))
535 (home-page
536 "https://github.com/nick8325/quickcheck")
537 (synopsis
538 "Automatic testing of Haskell programs")
539 (description
540 "QuickCheck is a library for random testing of program properties.")
541 (license bsd-3)))
542
7a1e8c74
FB
543(define-public ghc-case-insensitive
544 (package
545 (name "ghc-case-insensitive")
546 (version "1.2.0.4")
547 (outputs '("out" "doc"))
548 (source
549 (origin
550 (method url-fetch)
551 (uri (string-append
552 "http://hackage.haskell.org/package/case-insensitive/case-insensitive-"
553 version
554 ".tar.gz"))
555 (sha256
556 (base32
557 "07nm40r9yw2p9qsfp3pjbsmyn4dabrxw34p48171zmccdd5hv0v3"))))
558 (build-system haskell-build-system)
559 (inputs
560 `(("ghc-hunit" ,ghc-hunit)))
561 ;; these inputs are necessary to use this library
562 (propagated-inputs
563 `(("ghc-text" ,ghc-text)
564 ("ghc-hashable" ,ghc-hashable)))
565 (arguments
566 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
567 (home-page
568 "https://github.com/basvandijk/case-insensitive")
569 (synopsis "Case insensitive string comparison")
570 (description
571 "The module 'Data.CaseInsensitive' provides the 'CI' type constructor
572which can be parameterised by a string-like type like: 'String', 'ByteString',
573'Text', etc.. Comparisons of values of the resulting type will be insensitive
574to cases.")
575 (license bsd-3)))
576
eaa3088e
FB
577(define-public ghc-syb
578 (package
579 (name "ghc-syb")
580 (version "0.4.4")
581 (outputs '("out" "doc"))
582 (source
583 (origin
584 (method url-fetch)
585 (uri (string-append
586 "http://hackage.haskell.org/package/syb/syb-"
587 version
588 ".tar.gz"))
589 (sha256
590 (base32
591 "11sc9kmfvcn9bfxf227fgmny502z2h9xs3z0m9ak66lk0dw6f406"))))
592 (build-system haskell-build-system)
593 (inputs
594 `(("ghc-hunit" ,ghc-hunit)
595 ("ghc-mtl" ,ghc-mtl)))
596 (home-page
597 "http://www.cs.uu.nl/wiki/GenericProgramming/SYB")
598 (synopsis "Scrap Your Boilerplate")
599 (description
600 "This package contains the generics system described in the
601/Scrap Your Boilerplate/ papers (see
602<http://www.cs.uu.nl/wiki/GenericProgramming/SYB>).
603It defines the 'Data' class of types permitting folding and unfolding
604of constructor applications, instances of this class for primitive
605types, and a variety of traversals.")
606 (license bsd-3)))
607
61c02099
FB
608(define-public ghc-containers
609 (package
610 (name "ghc-containers")
611 (version "0.5.6.3")
612 (outputs '("out" "doc"))
613 (source
614 (origin
615 (method url-fetch)
616 (uri (string-append
617 "http://hackage.haskell.org/package/containers/containers-"
618 version
619 ".tar.gz"))
620 (sha256
621 (base32
622 "1kcd55nl0vzi99i8sr8fmc5j25fv7m0a9hd3nihnq1pd64pfciqn"))))
623 (build-system haskell-build-system)
624 (inputs
625 `(("ghc-hunit" ,ghc-hunit)
626 ("ghc-quickcheck" ,ghc-quickcheck)))
627 (arguments
628 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
629 (home-page "http://hackage.haskell.org/package/containers")
630 (synopsis "Assorted concrete container types")
631 (description
632 "This package contains efficient general-purpose implementations of
633various basic immutable container types. The declared cost of each operation
634is either worst-case or amortized, but remains valid even if structures are
635shared.")
636 (license bsd-3)))
637
c5043f4a
FB
638(define-public ghc-fgl
639 (package
640 (name "ghc-fgl")
641 (version "5.5.1.0")
642 (outputs '("out" "doc"))
643 (source
644 (origin
645 (method url-fetch)
646 (uri (string-append
647 "http://hackage.haskell.org/package/fgl/fgl-"
648 version
649 ".tar.gz"))
650 (sha256
651 (base32
652 "0rcmz0xlyr1wj490ffja29z1jgl51gz19ka609da6bx39bwx7nga"))))
653 (build-system haskell-build-system)
654 (inputs `(("ghc-mtl" ,ghc-mtl)))
655 (home-page "http://web.engr.oregonstate.edu/~erwig/fgl/haskell")
656 (synopsis
657 "Martin Erwig's Functional Graph Library")
658 (description "The functional graph library, FGL, is a collection of type
659and function definitions to address graph problems. The basis of the library
660is an inductive definition of graphs in the style of algebraic data types that
661encourages inductive, recursive definitions of graph algorithms.")
662 (license bsd-3)))
663
01a687da
FB
664(define-public ghc-unordered-containers
665 (package
666 (name "ghc-unordered-containers")
667 (version "0.2.5.1")
668 (outputs '("out" "doc"))
669 (source
670 (origin
671 (method url-fetch)
672 (uri (string-append
673 "http://hackage.haskell.org/package/unordered-containers/unordered-containers-"
674 version
675 ".tar.gz"))
676 (sha256
677 (base32
678 "06l1xv7vhpxly75saxdrbc6p2zlgz1az278arfkz4rgawfnphn3f"))))
679 (build-system haskell-build-system)
680 (inputs
681 `(("ghc-hunit" ,ghc-hunit)
682 ("ghc-quickcheck" ,ghc-quickcheck)))
683 ;; these inputs are necessary to use this library
684 (propagated-inputs `(("ghc-hashable" ,ghc-hashable)))
685 (arguments
686 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
687 (home-page
688 "https://github.com/tibbe/unordered-containers")
689 (synopsis
690 "Efficient hashing-based container types")
691 (description
692 "Efficient hashing-based container types. The containers have been
693optimized for performance critical use, both in terms of large data quantities
694and high speed.")
695 (license bsd-3)))
696
d692228e
FB
697(define-public ghc-split
698 (package
699 (name "ghc-split")
700 (version "0.2.2")
701 (outputs '("out" "doc"))
702 (source
703 (origin
704 (method url-fetch)
705 (uri (string-append
706 "http://hackage.haskell.org/package/split/split-"
707 version
708 ".tar.gz"))
709 (sha256
710 (base32
711 "0xa3j0gwr6k5vizxybnzk5fgb3pppgspi6mysnp2gwjp2dbrxkzr"))))
712 (build-system haskell-build-system)
713 (inputs
714 `(("ghc-quickcheck" ,ghc-quickcheck)))
715 (home-page "http://hackage.haskell.org/package/split")
716 (synopsis
717 "Combinator library for splitting lists")
718 (description "A collection of various methods for splitting lists into
719parts, akin to the 'split' function found in several mainstream languages.")
720 (license bsd-3)))
721
fa468e87
FB
722(define-public ghc-parsec
723 (package
724 (name "ghc-parsec")
725 (version "3.1.9")
726 (outputs '("out" "doc"))
727 (source
728 (origin
729 (method url-fetch)
730 (uri (string-append
731 "http://hackage.haskell.org/package/parsec/parsec-"
732 version
733 ".tar.gz"))
734 (sha256
735 (base32 "1ja20cmj6v336jy87c6h3jzjp00sdbakwbdwp11iln499k913xvi"))))
736 (build-system haskell-build-system)
737 (inputs
738 `(("ghc-hunit" ,ghc-hunit)))
739 ;; these inputs are necessary to use this library
740 (propagated-inputs
741 `(("ghc-text" ,ghc-text)
742 ("ghc-mtl" ,ghc-mtl)))
743 (arguments
744 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
745 (home-page
746 "https://github.com/aslatter/parsec")
747 (synopsis "Monadic parser combinators")
748 (description "Parsec is a parser library. It is simple, safe, well
749documented, has extensive libraries, good error messages, and is fast. It is
750defined as a monad transformer that can be stacked on arbitrary monads, and it
751is also parametric in the input stream type.")
752 (license bsd-3)))
753
f50fc138
FB
754(define-public ghc-vector
755 (package
756 (name "ghc-vector")
757 (version "0.10.12.2")
758 (outputs '("out" "doc"))
759 (source
760 (origin
761 (method url-fetch)
762 (uri (string-append
763 "http://hackage.haskell.org/package/vector/vector-"
764 version
765 ".tar.gz"))
766 (sha256
767 (base32
768 "01hc71k1z9m0g0dv4zsvq5d2dvbgyc5p01hryw5c53792yi2fm25"))))
769 (build-system haskell-build-system)
770 (inputs
771 `(("ghc-quickcheck" ,ghc-quickcheck)))
772 ;; these inputs are necessary to use this library
773 (propagated-inputs
774 `(("ghc-primitive" ,ghc-primitive)))
775 (arguments
776 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
777 (home-page "https://github.com/haskell/vector")
778 (synopsis "Efficient Arrays")
779 (description "An efficient implementation of Int-indexed arrays (both
780mutable and immutable), with a powerful loop optimisation framework.")
781 (license bsd-3)))
782
abfed253
FB
783(define-public ghc-network
784 (package
785 (name "ghc-network")
786 (version "2.6.0.2")
787 (outputs '("out" "doc"))
788 (source
789 (origin
790 (method url-fetch)
791 (uri (string-append
792 "http://hackage.haskell.org/package/network/network-"
793 version
794 ".tar.gz"))
795 (sha256
796 (base32
797 "12b7saam5ga6l4cplgkad49xa4vkynz2ri9jxidx1cxiqjcl0vc4"))))
798 (build-system haskell-build-system)
799 (inputs
800 `(("ghc-hunit" ,ghc-hunit)))
801 (arguments
802 `(#:tests? #f ; FIXME: currently missing libraries used for tests.
803 #:phases
804 (modify-phases %standard-phases
3a4de6b2 805 (add-before 'configure 'set-sh
abfed253
FB
806 (lambda _ (setenv "CONFIG_SHELL" "sh"))))))
807 (home-page "https://github.com/haskell/network")
808 (synopsis "Low-level networking interface")
809 (description
810 "This package provides a low-level networking interface.")
811 (license bsd-3)))
812
9ce031c5
FB
813(define-public ghc-network-uri
814 (package
815 (name "ghc-network-uri")
816 (version "2.6.0.1")
817 (outputs '("out" "doc"))
818 (source
819 (origin
820 (method url-fetch)
821 (uri (string-append
822 "http://hackage.haskell.org/package/network-uri/network-uri-"
823 version
824 ".tar.gz"))
825 (sha256
826 (base32
827 "09ymamb128jgqghpda4nixncr73all8qc6q53976aricm6a27p37"))))
828 (build-system haskell-build-system)
829 (inputs
830 `(("ghc-hunit" ,ghc-hunit)
831 ("ghc-network" ,ghc-network)))
832 (arguments
833 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
834 (propagated-inputs
835 `(("ghc-parsec" ,ghc-parsec)))
836 (home-page
837 "https://github.com/haskell/network-uri")
838 (synopsis "Labrary for URI manipulation")
839 (description "This package provides an URI manipulation inteface. In
840'network-2.6' the 'Network.URI' module was split off from the 'network'
841package into this package.")
842 (license bsd-3)))
843
a231ef7e
FB
844(define-public ghc-http
845 (package
846 (name "ghc-http")
847 (version "4000.2.19")
848 (outputs '("out" "doc"))
849 (source
850 (origin
851 (method url-fetch)
852 (uri (string-append
853 "http://hackage.haskell.org/package/HTTP/HTTP-"
854 version
855 ".tar.gz"))
856 (sha256
857 (base32
858 "1yzm8gimh8g0wwbixcbxg60v4l3vgi63w9v55ms0x9qnm6vrgysz"))))
859 (build-system haskell-build-system)
860 (inputs
861 `(("ghc-hunit" ,ghc-hunit)))
862 (propagated-inputs
863 `(("ghc-parsec" ,ghc-parsec)
864 ("ghc-mtl" ,ghc-mtl)
865 ("ghc-network" ,ghc-network)
866 ("ghc-network-uri" ,ghc-network-uri)))
867 (arguments
868 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
869 (home-page "https://github.com/haskell/HTTP")
870 (synopsis "Library for client-side HTTP")
871 (description
1eefe4a8 872 "The HTTP package supports client-side web programming in Haskell. It
a231ef7e
FB
873lets you set up HTTP connections, transmitting requests and processing the
874responses coming back.")
875 (license bsd-3)))
876
246b3437 877;;; haskell.scm ends here