1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
4 ;;; This file is part of GNU Guix.
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.
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.
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/>.
19 (define-module (gnu packages haskell)
20 #:use-module (ice-9 regex)
21 #:use-module ((guix licenses) #:select (bsd-3))
22 #:use-module (guix packages)
23 #:use-module (guix download)
24 #:use-module (guix utils)
25 #:use-module (guix build-system gnu)
26 #:use-module (guix build-system haskell)
27 #:use-module (gnu packages perl)
28 #:use-module (gnu packages compression)
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))
38 (define ghc-bootstrap-x86_64-7.8.4
42 "https://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-x86_64-unknown-linux-deb7.tar.xz")
45 "13azsl53xgj20mi1hj9x0xb32vvcvs6cpmvwx6znxhas7blh0bpn"))))
47 (define ghc-bootstrap-i686-7.8.4
51 "https://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-i386-unknown-linux-deb7.tar.xz")
54 "0wj5s435j0zgww70bj1d3f6wvnnpzlxwvwcyh2qv4qjq5z8j64kg"))))
56 ;; 43 tests out of 3965 fail.
58 ;; Most of them do not appear to be serious:
60 ;; - some tests generate files referring to "/bin/sh" and "/bin/ls". I've not
61 ;; figured out how these references are generated.
63 ;; - Some tests allocate more memory than expected (ca. 3% above upper limit)
65 ;; - Some tests try to load unavailable libriries: Control.Concurrent.STM,
66 ;; Data.Vector, Control.Monad.State.
68 ;; - Test posix010 tries to check the existence of a user on the system:
69 ;; getUserEntryForName: does not exist (no such user)
77 (uri (string-append "https://www.haskell.org/ghc/dist/"
78 version "/" name "-" version "-src.tar.xz"))
81 "1i4254akbb4ym437rf469gc0m40bxm31blp6s1z1g15jmnacs6f3"))))
82 (build-system gnu-build-system)
83 (supported-systems '("i686-linux" "x86_64-linux"))
84 (outputs '("out" "doc"))
94 "https://www.haskell.org/ghc/dist/"
95 version "/" name "-" version "-testsuite.tar.xz"))
98 "0q95whf87y4mxjzwzy899g7z7l9pazq4si6iciyhxkcdhqq2ycyh"))))))
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.
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))))
110 `(#:test-target "test"
111 ;; We get a smaller number of test failures by disabling parallel test
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
119 #:modules ((guix build gnu-build-system)
124 #:imported-modules (,@%gnu-build-system-modules
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.
140 ;; (list "BUILD_DOCBOOK_HTML = YES")
142 (let* ((ghc-bootstrap-path
143 (string-append (getcwd) "/" ,name "-" ,version "/ghc-bin"))
144 (ghc-bootstrap-prefix
145 (string-append ghc-bootstrap-path "/usr" )))
147 'unpack-bin 'unpack-testsuite-and-fix-bins
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"))
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 "libraries/process/System/Process/Internals.hs"
160 "libraries/unix/cbits/execvpe.c")
161 (("/bin/sh") (which "sh"))
166 (lambda* (#:key inputs outputs #:allow-other-keys)
167 (mkdir-p ghc-bootstrap-prefix)
168 (with-directory-excursion ghc-bootstrap-path
169 (copy-file (assoc-ref inputs "ghc-binary")
171 (zero? (system* "tar" "xvf" "ghc-bin.tar.xz"))))
173 'install-bin 'configure-bin
174 (lambda* (#:key inputs outputs #:allow-other-keys)
177 "./utils/ghc-pwd/dist-install/build/tmp/ghc-pwd"
178 "./utils/hpc/dist-install/build/tmp/hpc"
179 "./utils/haddock/dist/build/tmp/haddock"
180 "./utils/hsc2hs/dist-install/build/tmp/hsc2hs"
181 "./utils/runghc/dist-install/build/tmp/runghc"
182 "./utils/ghc-cabal/dist-install/build/tmp/ghc-cabal"
183 "./utils/hp2ps/dist/build/tmp/hp2ps"
184 "./utils/ghc-pkg/dist-install/build/tmp/ghc-pkg"
185 "./utils/unlit/dist/build/tmp/unlit"
186 "./ghc/stage2/build/tmp/ghc-stage2"))
187 (gmp (assoc-ref inputs "gmp"))
188 (gmp-lib (string-append gmp "/lib"))
189 (gmp-include (string-append gmp "/include"))
191 (string-append (assoc-ref inputs "ncurses") "/lib"))
192 (ld-so (string-append (assoc-ref inputs "libc")
193 ,(glibc-dynamic-linker)))
195 (string-append ghc-bootstrap-prefix
196 "/lib/ghc-7.8.4/terminfo-0.4.0.0")))
197 (with-directory-excursion
198 (string-append ghc-bootstrap-path "/" ,name "-" ,version)
199 (setenv "CONFIG_SHELL" (which "bash"))
200 (setenv "LD_LIBRARY_PATH" gmp-lib)
201 ;; The binaries have "/lib64/ld-linux-x86-64.so.2" hardcoded.
203 (cut system* "patchelf" "--set-interpreter" ld-so <>)
205 ;; The binaries include a reference to libtinfo.so.5 which
206 ;; is a subset of libncurses.so.5. We create a symlink in a
207 ;; directory included in the bootstrap binaries rpath.
208 (mkdir-p libtinfo-dir)
210 (string-append ncurses-lib "/libncursesw.so."
211 ,(version-major+minor
212 (package-version ncurses)))
213 (string-append libtinfo-dir "/libtinfo.so.5"))
215 (string-append (getenv "PATH") ":"
216 ghc-bootstrap-prefix "/bin"))
218 (string-append (getcwd) "/configure")
219 (string-append "--prefix=" ghc-bootstrap-prefix)
220 (string-append "--with-gmp-libraries=" gmp-lib)
221 (string-append "--with-gmp-includes=" gmp-include)))))
223 'configure 'install-bin
224 (lambda* (#:key inputs outputs #:allow-other-keys)
225 (with-directory-excursion
226 (string-append ghc-bootstrap-path "/" ,name "-" ,version)
227 (zero? (system* "make" "install"))))
228 %standard-phases)))))))
229 (home-page "https://www.haskell.org/ghc")
230 (synopsis "The Glasgow Haskell Compiler")
232 "The Glasgow Haskell Compiler (GHC) is a state-of-the-art compiler and
233 interactive environment for the functional language Haskell.")
236 (define-public ghc-mtl
240 (outputs '("out" "doc"))
245 "http://hackage.haskell.org/package/mtl/mtl-"
250 "1xpn2wjmqbh2cg1yssc6749xpgcqlrrg4iilwqgkcjgvaxlpdbvp"))))
251 (build-system haskell-build-system)
252 (home-page "http://github.com/ekmett/mtl")
254 "Monad classes, using functional dependencies")
256 "Monad classes using functional dependencies, with instances
257 for various monad transformers, inspired by the paper
258 'Functional Programming with Overloading and Higher-Order Polymorphism',
259 by Mark P Jones, in 'Advanced School of Functional Programming', 1995
260 http://web.cecs.pdx.edu/~mpj/pubs/springschool.html.")
263 (define-public ghc-paths
267 (outputs '("out" "doc"))
272 "http://hackage.haskell.org/package/ghc-paths/ghc-paths-"
277 "0ibrr1dxa35xx20cpp8jzgfak1rdmy344dfwq4vlq013c6w8z9mg"))))
278 (build-system haskell-build-system)
279 (home-page "https://github.com/simonmar/ghc-paths")
281 "Knowledge of GHC's installation directories")
283 "Knowledge of GHC's installation directories.")
286 (define-public ghc-zlib
290 (outputs '("out" "doc"))
295 "http://hackage.haskell.org/package/zlib/zlib-"
300 "15hhsk7z3gvm7sz2ic2z1ca5c6rpsln2rr391mdbm1bxlzc1gmkm"))))
301 (build-system haskell-build-system)
302 (inputs `(("zlib" ,zlib)))
303 (home-page "http://hackage.haskell.org/package/zlib")
305 "Compression and decompression in the gzip and zlib formats")
307 "This package provides a pure interface for compressing and decompressing
308 streams of data represented as lazy 'ByteString's. It uses the zlib C library
309 so it has high performance. It supports the 'zlib', 'gzip' and 'raw'
310 compression formats. It provides a convenient high level API suitable for
311 most tasks and for the few cases where more control is needed it provides
312 access to the full zlib feature set.")
315 (define-public ghc-stm
319 (outputs '("out" "doc"))
324 "http://hackage.haskell.org/package/stm/stm-"
329 "0gc8zvdijp3rwmidkpxv76b4i0dc8dw6nbd92rxl4vxl0655iysx"))))
330 (build-system haskell-build-system)
331 (home-page "http://hackage.haskell.org/package/stm")
332 (synopsis "Software Transactional Memory")
334 "A modular composable concurrency abstraction.")
337 (define-public ghc-parallel
339 (name "ghc-parallel")
341 (outputs '("out" "doc"))
346 "http://hackage.haskell.org/package/parallel/parallel-"
351 "0hp6vf4zxsw6vz6lj505xihmnfhgjp39c9q7nyzlgcmps3xx6a5r"))))
352 (build-system haskell-build-system)
353 (home-page "http://hackage.haskell.org/package/parallel")
354 (synopsis "Parallel programming library")
356 "This package provides a library for parallel programming.")
359 (define-public ghc-text
363 (outputs '("out" "doc"))
368 "http://hackage.haskell.org/package/text/text-"
373 "004p1c74crs8wmjafwsmw3mmycspq1j8fpm1lvfpq6acha7bnpc6"))))
374 (build-system haskell-build-system)
376 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
377 (home-page "https://github.com/bos/text")
378 (synopsis "Efficient packed Unicode text type library")
380 "An efficient packed, immutable Unicode text type (both strict and
381 lazy), with a powerful loop fusion optimization framework.
383 The 'Text' type represents Unicode character strings, in a time and
384 space-efficient manner. This package provides text processing
385 capabilities that are optimized for performance critical use, both
386 in terms of large data quantities and high speed.")
389 (define-public ghc-hashable
391 (name "ghc-hashable")
393 (outputs '("out" "doc"))
398 "http://hackage.haskell.org/package/hashable/hashable-"
403 "0h9295pv2sgbaqlwpwbx2bap6nngm0jcdhkqham1wpjwyxqgqrlc"))))
404 (build-system haskell-build-system)
406 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
407 ;; these inputs are necessary to use this library
409 `(("ghc-text" ,ghc-text)))
410 (home-page "http://github.com/tibbe/hashable")
412 "Class for types that can be converted to a hash value")
414 "This package defines a class, 'Hashable', for types that can be
415 converted to a hash value. This class exists for the benefit of hashing-based
416 data structures. The package provides instances for basic types and a way to
417 combine hash values.")
420 (define-public ghc-hunit
424 (outputs '("out" "doc"))
429 "http://hackage.haskell.org/package/HUnit/HUnit-"
434 "0hcs6qh8bqhip1kkjjnw7ccgcsmawdz5yvffjj5y8zd2vcsavx8a"))))
435 (build-system haskell-build-system)
436 (home-page "http://hunit.sourceforge.net/")
437 (synopsis "Unit testing framework for Haskell")
439 "HUnit is a unit testing framework for Haskell, inspired by the
440 JUnit tool for Java.")
443 (define-public ghc-random
447 (outputs '("out" "doc"))
452 "http://hackage.haskell.org/package/random/random-"
456 (base32 "0nis3lbkp8vfx8pkr6v7b7kr5m334bzb0fk9vxqklnp2aw8a865p"))))
457 (build-system haskell-build-system)
458 (home-page "http://hackage.haskell.org/package/random")
459 (synopsis "Random number library")
460 (description "This package provides a basic random number generation
461 library, including the ability to split random number generators.")
464 (define-public ghc-primitive
466 (name "ghc-primitive")
468 (outputs '("out" "doc"))
473 "http://hackage.haskell.org/package/primitive/primitive-"
478 "05gdgj383xdrdkhxh26imlvs8ji0z28ny38ms9snpvv5i8l2lg10"))))
479 (build-system haskell-build-system)
481 "https://github.com/haskell/primitive")
482 (synopsis "Primitive memory-related operations")
484 "This package provides various primitive memory-related operations.")
487 (define-public ghc-tf-random
489 (name "ghc-tf-random")
491 (outputs '("out" "doc"))
496 "http://hackage.haskell.org/package/tf-random/tf-random-"
500 (base32 "0445r2nns6009fmq0xbfpyv7jpzwv0snccjdg7hwj4xk4z0cwc1f"))))
501 (build-system haskell-build-system)
502 ;; these inputs are necessary to use this package
504 `(("ghc-primitive" ,ghc-primitive)
505 ("ghc-random" ,ghc-random)))
506 (home-page "http://hackage.haskell.org/package/tf-random")
507 (synopsis "High-quality splittable pseudorandom number generator")
508 (description "This package contains an implementation of a high-quality
509 splittable pseudorandom number generator. The generator is based on a
510 cryptographic hash function built on top of the ThreeFish block cipher. See
511 the paper \"Splittable Pseudorandom Number Generators Using Cryptographic
512 Hashing\" by Claessen, Pałka for details and the rationale of the design.")
515 (define-public ghc-quickcheck
517 (name "ghc-quickcheck")
519 (outputs '("out" "doc"))
524 "http://hackage.haskell.org/package/QuickCheck/QuickCheck-"
529 "04xs6mq22bcnkpi616qrbm7jlivh9csnhmvjgp1ifq52an1wr4rx"))))
530 (build-system haskell-build-system)
532 `(#:tests? #f ; FIXME: currently missing libraries used for tests.
533 #:configure-flags '("-f base4")))
534 ;; these inputs are necessary to use this package
536 `(("ghc-tf-random" ,ghc-tf-random)))
538 "https://github.com/nick8325/quickcheck")
540 "Automatic testing of Haskell programs")
542 "QuickCheck is a library for random testing of program properties.")
545 (define-public ghc-case-insensitive
547 (name "ghc-case-insensitive")
549 (outputs '("out" "doc"))
554 "http://hackage.haskell.org/package/case-insensitive/case-insensitive-"
559 "07nm40r9yw2p9qsfp3pjbsmyn4dabrxw34p48171zmccdd5hv0v3"))))
560 (build-system haskell-build-system)
562 `(("ghc-hunit" ,ghc-hunit)))
563 ;; these inputs are necessary to use this library
565 `(("ghc-text" ,ghc-text)
566 ("ghc-hashable" ,ghc-hashable)))
568 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
570 "https://github.com/basvandijk/case-insensitive")
571 (synopsis "Case insensitive string comparison")
573 "The module 'Data.CaseInsensitive' provides the 'CI' type constructor
574 which can be parameterised by a string-like type like: 'String', 'ByteString',
575 'Text', etc.. Comparisons of values of the resulting type will be insensitive
579 (define-public ghc-syb
583 (outputs '("out" "doc"))
588 "http://hackage.haskell.org/package/syb/syb-"
593 "11sc9kmfvcn9bfxf227fgmny502z2h9xs3z0m9ak66lk0dw6f406"))))
594 (build-system haskell-build-system)
596 `(("ghc-hunit" ,ghc-hunit)
597 ("ghc-mtl" ,ghc-mtl)))
599 "http://www.cs.uu.nl/wiki/GenericProgramming/SYB")
600 (synopsis "Scrap Your Boilerplate")
602 "This package contains the generics system described in the
603 /Scrap Your Boilerplate/ papers (see
604 <http://www.cs.uu.nl/wiki/GenericProgramming/SYB>).
605 It defines the 'Data' class of types permitting folding and unfolding
606 of constructor applications, instances of this class for primitive
607 types, and a variety of traversals.")
610 (define-public ghc-containers
612 (name "ghc-containers")
614 (outputs '("out" "doc"))
619 "http://hackage.haskell.org/package/containers/containers-"
624 "1kcd55nl0vzi99i8sr8fmc5j25fv7m0a9hd3nihnq1pd64pfciqn"))))
625 (build-system haskell-build-system)
627 `(("ghc-hunit" ,ghc-hunit)
628 ("ghc-quickcheck" ,ghc-quickcheck)))
630 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
631 (home-page "http://hackage.haskell.org/package/containers")
632 (synopsis "Assorted concrete container types")
634 "This package contains efficient general-purpose implementations of
635 various basic immutable container types. The declared cost of each operation
636 is either worst-case or amortized, but remains valid even if structures are
640 (define-public ghc-fgl
644 (outputs '("out" "doc"))
649 "http://hackage.haskell.org/package/fgl/fgl-"
654 "0rcmz0xlyr1wj490ffja29z1jgl51gz19ka609da6bx39bwx7nga"))))
655 (build-system haskell-build-system)
656 (inputs `(("ghc-mtl" ,ghc-mtl)))
657 (home-page "http://web.engr.oregonstate.edu/~erwig/fgl/haskell")
659 "Martin Erwig's Functional Graph Library")
660 (description "The functional graph library, FGL, is a collection of type
661 and function definitions to address graph problems. The basis of the library
662 is an inductive definition of graphs in the style of algebraic data types that
663 encourages inductive, recursive definitions of graph algorithms.")
666 (define-public ghc-unordered-containers
668 (name "ghc-unordered-containers")
670 (outputs '("out" "doc"))
675 "http://hackage.haskell.org/package/unordered-containers/unordered-containers-"
680 "06l1xv7vhpxly75saxdrbc6p2zlgz1az278arfkz4rgawfnphn3f"))))
681 (build-system haskell-build-system)
683 `(("ghc-hunit" ,ghc-hunit)
684 ("ghc-quickcheck" ,ghc-quickcheck)))
685 ;; these inputs are necessary to use this library
686 (propagated-inputs `(("ghc-hashable" ,ghc-hashable)))
688 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
690 "https://github.com/tibbe/unordered-containers")
692 "Efficient hashing-based container types")
694 "Efficient hashing-based container types. The containers have been
695 optimized for performance critical use, both in terms of large data quantities
699 (define-public ghc-split
703 (outputs '("out" "doc"))
708 "http://hackage.haskell.org/package/split/split-"
713 "0xa3j0gwr6k5vizxybnzk5fgb3pppgspi6mysnp2gwjp2dbrxkzr"))))
714 (build-system haskell-build-system)
716 `(("ghc-quickcheck" ,ghc-quickcheck)))
717 (home-page "http://hackage.haskell.org/package/split")
719 "Combinator library for splitting lists")
720 (description "A collection of various methods for splitting lists into
721 parts, akin to the 'split' function found in several mainstream languages.")
724 (define-public ghc-parsec
728 (outputs '("out" "doc"))
733 "http://hackage.haskell.org/package/parsec/parsec-"
737 (base32 "1ja20cmj6v336jy87c6h3jzjp00sdbakwbdwp11iln499k913xvi"))))
738 (build-system haskell-build-system)
740 `(("ghc-hunit" ,ghc-hunit)))
741 ;; these inputs are necessary to use this library
743 `(("ghc-text" ,ghc-text)
744 ("ghc-mtl" ,ghc-mtl)))
746 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
748 "https://github.com/aslatter/parsec")
749 (synopsis "Monadic parser combinators")
750 (description "Parsec is a parser library. It is simple, safe, well
751 documented, has extensive libraries, good error messages, and is fast. It is
752 defined as a monad transformer that can be stacked on arbitrary monads, and it
753 is also parametric in the input stream type.")
756 (define-public ghc-vector
759 (version "0.10.12.2")
760 (outputs '("out" "doc"))
765 "http://hackage.haskell.org/package/vector/vector-"
770 "01hc71k1z9m0g0dv4zsvq5d2dvbgyc5p01hryw5c53792yi2fm25"))))
771 (build-system haskell-build-system)
773 `(("ghc-quickcheck" ,ghc-quickcheck)))
774 ;; these inputs are necessary to use this library
776 `(("ghc-primitive" ,ghc-primitive)))
778 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
779 (home-page "https://github.com/haskell/vector")
780 (synopsis "Efficient Arrays")
781 (description "An efficient implementation of Int-indexed arrays (both
782 mutable and immutable), with a powerful loop optimisation framework.")
785 (define-public ghc-network
789 (outputs '("out" "doc"))
794 "http://hackage.haskell.org/package/network/network-"
799 "12b7saam5ga6l4cplgkad49xa4vkynz2ri9jxidx1cxiqjcl0vc4"))))
800 (build-system haskell-build-system)
802 `(("ghc-hunit" ,ghc-hunit)))
804 `(#:tests? #f ; FIXME: currently missing libraries used for tests.
806 (modify-phases %standard-phases
807 (add-before 'configure 'set-sh
808 (lambda _ (setenv "CONFIG_SHELL" "sh"))))))
809 (home-page "https://github.com/haskell/network")
810 (synopsis "Low-level networking interface")
812 "This package provides a low-level networking interface.")
815 (define-public ghc-network-uri
817 (name "ghc-network-uri")
819 (outputs '("out" "doc"))
824 "http://hackage.haskell.org/package/network-uri/network-uri-"
829 "09ymamb128jgqghpda4nixncr73all8qc6q53976aricm6a27p37"))))
830 (build-system haskell-build-system)
832 `(("ghc-hunit" ,ghc-hunit)
833 ("ghc-network" ,ghc-network)))
835 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
837 `(("ghc-parsec" ,ghc-parsec)))
839 "https://github.com/haskell/network-uri")
840 (synopsis "Labrary for URI manipulation")
841 (description "This package provides an URI manipulation inteface. In
842 'network-2.6' the 'Network.URI' module was split off from the 'network'
843 package into this package.")
846 (define-public ghc-http
849 (version "4000.2.19")
850 (outputs '("out" "doc"))
855 "http://hackage.haskell.org/package/HTTP/HTTP-"
860 "1yzm8gimh8g0wwbixcbxg60v4l3vgi63w9v55ms0x9qnm6vrgysz"))))
861 (build-system haskell-build-system)
863 `(("ghc-hunit" ,ghc-hunit)))
865 `(("ghc-parsec" ,ghc-parsec)
867 ("ghc-network" ,ghc-network)
868 ("ghc-network-uri" ,ghc-network-uri)))
870 `(#:tests? #f)) ; FIXME: currently missing libraries used for tests.
871 (home-page "https://github.com/haskell/HTTP")
872 (synopsis "Library for client-side HTTP")
874 "The HTTP package supports client-side web programming in Haskell. It
875 lets you set up HTTP connections, transmitting requests and processing the
876 responses coming back.")
879 ;;; haskell.scm ends here