File ghc-courier.spec of Package ghc-courier
#
# spec file for package ghc-courier
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%global pkg_name courier
%bcond_with tests
Name: ghc-%{pkg_name}
Version: 0.1.1.5
Release: 0
Summary: A message-passing library for simplifying network applications
License: MIT
Group: Development/Libraries/Haskell
URL: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
BuildRequires: chrpath
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-async-devel
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-cereal-devel
BuildRequires: ghc-containers-devel
BuildRequires: ghc-hslogger-devel
BuildRequires: ghc-network-devel
BuildRequires: ghc-rpm-macros
BuildRequires: ghc-stm-devel
BuildRequires: ghc-text-devel
BuildRequires: ghc-uuid-devel
%if %{with tests}
BuildRequires: ghc-HUnit-devel
BuildRequires: ghc-directory-devel
BuildRequires: ghc-test-framework-devel
BuildRequires: ghc-test-framework-hunit-devel
%endif
%description
Inspired by Erlang's simple message-passing facilities, courier provides
roughly similar capabilities. Applications simply create one or more endpoints,
bind each to a transport using a given name, then can freely send / receive
messages to other endpoints just by referencing the name each endpoint bound to
its transport.
A primary driver of this package's design is separation of concerns: many
algorithms (especially for distributed applications) depend upon a
message-passing foundation, but the algorithms are sufficiently complex that
the details of how those messages are transmitted among nodes are best hidden
away and solved separately from the distributed algorithm itself. With this in
mind, this package aims to provide a variety of transports as well as support
for common communication idioms (e.g., in order message delivery, selective out
of order message delivery, synchronous RPC, etc.).
Applications may process messages in the order received at an endpoint, or use
selective message reception to process the first message arriving at an
endpoint that also matches a provided selection function. Through selective
message reception, applications may approximate the style of an Erlang
application, and enjoy better composability of message reception with multiple
independent dispatch routines or message pumps.
%package devel
Summary: Haskell %{pkg_name} library development files
Group: Development/Libraries/Haskell
Requires: %{name} = %{version}-%{release}
Requires: ghc-compiler = %{ghc_version}
Requires(post): ghc-compiler = %{ghc_version}
Requires(postun): ghc-compiler = %{ghc_version}
%description devel
This package provides the Haskell %{pkg_name} library development files.
%prep
%setup -q -n %{pkg_name}-%{version}
%build
%ghc_lib_build
%install
%ghc_lib_install
%ghc_fix_rpath %{pkg_name}-%{version}
%check
%cabal_test
%post devel
%ghc_pkg_recache
%postun devel
%ghc_pkg_recache
%files -f %{name}.files
%doc LICENSE
%{_bindir}/echo-client
%{_bindir}/echo-server
%files devel -f %{name}-devel.files
%doc changes.md examples
%changelog