gnu: Add ghc-concurrent-extra.

* gnu/packages/haskell-xyz.scm (ghc-concurrent-extra): New variable.
This commit is contained in:
Robert Vollmert 2019-07-15 10:50:58 +02:00 committed by Timothy Sample
parent 79fcc5e59b
commit efb96749a2
No known key found for this signature in database
GPG Key ID: 2AC6A5EC1C357C59
1 changed files with 53 additions and 0 deletions

View File

@ -18,11 +18,64 @@
(define-module (gnu packages haskell-xyz) (define-module (gnu packages haskell-xyz)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages haskell)
#:use-module (gnu packages haskell-check)
#:use-module (guix build-system haskell) #:use-module (guix build-system haskell)
#:use-module (guix download) #:use-module (guix download)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)) #:use-module (guix packages))
(define-public ghc-concurrent-extra
(package
(name "ghc-concurrent-extra")
(version "0.7.0.12")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"concurrent-extra/concurrent-extra-"
version ".tar.gz"))
(sha256
(base32
"1y8xk460fvnw0idzdiylmm874sjny4q9jxb1js9fjz8lw2wns3h4"))))
(build-system haskell-build-system)
(arguments
;; XXX: The ReadWriteLock 'stressTest' fails.
`(#:tests? #f))
(inputs
`(("ghc-unbounded-delays" ,ghc-unbounded-delays)))
(native-inputs
`(("ghc-async" ,ghc-async)
("ghc-hunit" ,ghc-hunit)
("ghc-random" ,ghc-random)
("ghc-test-framework" ,ghc-test-framework)
("ghc-test-framework-hunit" ,ghc-test-framework-hunit)))
(home-page "https://github.com/basvandijk/concurrent-extra")
(synopsis "Extra concurrency primitives")
(description "This Haskell library offers (among other things) the
following selection of synchronisation primitives:
@itemize
@item @code{Broadcast}: Wake multiple threads by broadcasting a value.
@item @code{Event}: Wake multiple threads by signalling an event.
@item @code{Lock}: Enforce exclusive access to a resource. Also known
as a binary semaphore or mutex. The package additionally provides an
alternative that works in the STM monad.
@item @code{RLock}: A lock which can be acquired multiple times by the
same thread. Also known as a reentrant mutex.
@item @code{ReadWriteLock}: Multiple-reader, single-writer locks. Used
to protect shared resources which may be concurrently read, but only
sequentially written.
@item @code{ReadWriteVar}: Concurrent read, sequential write variables.
@end itemize
Please consult the API documentation of the individual modules for more
detailed information.
This package was inspired by the concurrency libraries of Java and
Python.")
(license license:bsd-3)))
(define-public ghc-language-glsl (define-public ghc-language-glsl
(package (package
(name "ghc-language-glsl") (name "ghc-language-glsl")