git.iko.soy/distributed-process
on master help sign in
Split off distributed-process-simplelocalnet

And prepare for release

commit8736f7d6d263cc6ef7215881aa88e74d2793a852 authorEdsko de Vries <edsko@well-typed.com> dateFri 6 Jul 2012, 20:23 (14 years ago) parent3f4370b
10 files changed+242−121
distributed-process-simplelocalnet/LICENSE+31 distributed-process-simplelocalnet/Setup.hs+2 distributed-process-simplelocalnet/distributed-process-simplelocalnet.cabal+58 distributed-process/src/Control/Distributed/Process/Backend/Local.hs → distributed-process-simplelocalnet/src/Control/Distributed/Process/Backend/SimpleLocalnet.hs+19−19 distributed-process/src/Control/Distributed/Process/Internal/Multicast.hs → distributed-process-simplelocalnet/src/Control/Distributed/Process/Backend/SimpleLocalnet/Internal/Multicast.hs+7−5 distributed-process/tests/TestLocalBackend.hs → distributed-process-simplelocalnet/tests/TestSimpleLocalnet.hs+2−2 distributed-process-simplelocalnet/tests/runTestSimpleLocalnet.hs+11 distributed-process/LICENSE+1−1 distributed-process/distributed-process.cabal+111−83 distributed-process/tests/runTestLocalBackend.hs−11
distributed-process-simplelocalnet/LICENSEnew file+31
@@ -0,0 +1,31 @@
1+Copyright Well-Typed LLP, 2011-2012
2+
3+All rights reserved.
4+
5+Redistribution and use in source and binary forms, with or without
6+modification, are permitted provided that the following conditions are met:
7+
8+ * Redistributions of source code must retain the above copyright
9+ notice, this list of conditions and the following disclaimer.
10+
11+ * Redistributions in binary form must reproduce the above
12+ copyright notice, this list of conditions and the following
13+ disclaimer in the documentation and/or other materials provided
14+ with the distribution.
15+
16+ * Neither the name of the owner nor the names of other
17+ contributors may be used to endorse or promote products derived
18+ from this software without specific prior written permission.
19+
20+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31+
distributed-process-simplelocalnet/Setup.hsnew file+2
@@ -0,0 +1,2 @@
1+import Distribution.Simple
2+main = defaultMain
distributed-process-simplelocalnet/distributed-process-simplelocalnet.cabalnew file+58
@@ -0,0 +1,58 @@
1+Name: distributed-process-simplelocalnet
2+Version: 0.2.0
3+Cabal-Version: >=1.8
4+Build-Type: Simple
5+License: BSD3
6+License-File: LICENSE
7+Copyright: Well-Typed LLP
8+Author: Duncan Coutts, Nicolas Wu, Edsko de Vries
9+Maintainer: edsko@well-typed.com, dcoutts@well-typed.com
10+Stability: experimental
11+Homepage: http://github.com/haskell-distributed/distributed-process
12+Bug-Reports: mailto:edsko@well-typed.com
13+Synopsis: Simple zero-configuration backend for Cloud Haskell
14+Description: Simple backend based on the TCP transport which offers node
15+ discovery based on UDP multicast. This is a zero-configuration
16+ backend designed to get you going with Cloud Haskell quickly
17+ without imposing any structure on your application.
18+Tested-With: GHC==7.2.2 GHC==7.4.1 GHC==7.4.2
19+Category: Control
20+
21+Library
22+ Build-Depends: base >= 4.4 && < 5,
23+ bytestring >= 0.9 && < 0.10,
24+ network >= 2.3 && < 2.4,
25+ network-multicast >= 0.0 && < 0.1,
26+ data-accessor >= 0.2 && < 0.3,
27+ binary >= 0.5 && < 0.6,
28+ containers >= 0.4 && < 0.5,
29+ transformers >= 0.2 && < 0.4,
30+ network-transport >= 0.2 && < 0.3,
31+ network-transport-tcp >= 0.2 && < 0.3,
32+ distributed-process >= 0.2 && < 0.3
33+ Exposed-modules: Control.Distributed.Process.Backend.SimpleLocalnet,
34+ Control.Distributed.Process.Backend.SimpleLocalnet.Internal.Multicast
35+ Extensions: RankNTypes,
36+ DeriveDataTypeable
37+ ghc-options: -Wall
38+ HS-Source-Dirs: src
39+
40+-- Not a proper test, but we want to use cabal to compile it
41+Test-Suite TestSimpleLocalnet
42+ Type: exitcode-stdio-1.0
43+ Main-Is: TestSimpleLocalnet.hs
44+ Build-Depends: base >= 4.4 && < 5,
45+ bytestring >= 0.9 && < 0.10,
46+ network >= 2.3 && < 2.4,
47+ network-multicast >= 0.0 && < 0.1,
48+ data-accessor >= 0.2 && < 0.3,
49+ binary >= 0.5 && < 0.6,
50+ containers >= 0.4 && < 0.5,
51+ transformers >= 0.2 && < 0.4,
52+ network-transport >= 0.2 && < 0.3,
53+ network-transport-tcp >= 0.2 && < 0.3,
54+ distributed-process >= 0.2 && < 0.3
55+ Extensions: RankNTypes,
56+ DeriveDataTypeable
57+ ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -fno-warn-unused-do-bind
58+ HS-Source-Dirs: tests src
distributed-process/src/Control/Distributed/Process/Backend/Local.hs → distributed-process-simplelocalnet/src/Control/Distributed/Process/Backend/SimpleLocalnet.hsrenamed+19−19
@@ -15,7 +15,7 @@
1515-- > import Control.Distributed.Process.Node (initRemoteTable)
1616-- > import Control.Distributed.Process.Backend.Local
1717-- >
18−-- > master :: LocalBackend -> [NodeId] -> Process ()
18+-- > master :: Backend -> [NodeId] -> Process ()
1919-- > master backend slaves = do
2020-- > -- Do something interesting with the slaves
2121-- > liftIO . putStrLn $ "Slaves: " ++ show slaves
@@ -34,9 +34,9 @@
3434-- > backend <- initializeBackend host port initRemoteTable
3535-- > startSlave backend
3636{-# OPTIONS_GHC -fno-warn-orphans #-}
37−module Control.Distributed.Process.Backend.Local
37+module Control.Distributed.Process.Backend.SimpleLocalnet
3838 ( -- * Initialization
39− LocalBackend(..)
39+ Backend(..)
4040 , initializeBackend
4141 -- * Slave nodes
4242 , startSlave
@@ -89,10 +89,10 @@ import qualified Network.Transport.TCP as NT
8989 )
9090import qualified Network.Transport as NT (Transport)
9191import qualified Network.Socket as N (HostName, ServiceName, SockAddr)
92−import Control.Distributed.Process.Internal.Multicast (initMulticast)
92+import Control.Distributed.Process.Backend.SimpleLocalnet.Internal.Multicast (initMulticast)
9393
9494-- | Local backend
95−data LocalBackend = LocalBackend {
95+data Backend = Backend {
9696 -- | Create a new local node
9797 newLocalNode :: IO Node.LocalNode
9898 -- | @findPeers t@ sends out a /who's there?/ request, waits 't' msec,
@@ -103,19 +103,19 @@ data LocalBackend = LocalBackend {
103103 , redirectLogsHere :: Process ()
104104 }
105105
106−data LocalBackendState = LocalBackendState {
106+data BackendState = BackendState {
107107 _localNodes :: [Node.LocalNode]
108108 , _peers :: Set NodeId
109109 , discoveryDaemon :: ThreadId
110110 }
111111
112112-- | Initialize the backend
113−initializeBackend :: N.HostName -> N.ServiceName -> RemoteTable -> IO LocalBackend
113+initializeBackend :: N.HostName -> N.ServiceName -> RemoteTable -> IO Backend
114114initializeBackend host port rtable = do
115115 mTransport <- NT.createTransport host port NT.defaultTCPParameters
116116 (recv, send) <- initMulticast "224.0.0.99" 9999 1024
117117 (_, backendState) <- fixIO $ \ ~(tid, _) -> do
118− backendState <- newMVar LocalBackendState
118+ backendState <- newMVar BackendState
119119 { _localNodes = []
120120 , _peers = Set.empty
121121 , discoveryDaemon = tid
@@ -125,7 +125,7 @@ initializeBackend host port rtable = do
125125 case mTransport of
126126 Left err -> throw err
127127 Right transport ->
128− let backend = LocalBackend {
128+ let backend = Backend {
129129 newLocalNode = apiNewLocalNode transport rtable backendState
130130 , findPeers = apiFindPeers send backendState
131131 , redirectLogsHere = apiRedirectLogsHere backend
@@ -135,7 +135,7 @@ initializeBackend host port rtable = do
135135-- | Create a new local node
136136apiNewLocalNode :: NT.Transport
137137 -> RemoteTable
138− -> MVar LocalBackendState
138+ -> MVar BackendState
139139 -> IO Node.LocalNode
140140apiNewLocalNode transport rtable backendState = do
141141 localNode <- Node.newLocalNode transport rtable
@@ -144,7 +144,7 @@ apiNewLocalNode transport rtable backendState = do
144144
145145-- | Peer discovery
146146apiFindPeers :: (PeerDiscoveryMsg -> IO ())
147− -> MVar LocalBackendState
147+ -> MVar BackendState
148148 -> Int
149149 -> IO [NodeId]
150150apiFindPeers send backendState delay = do
@@ -167,7 +167,7 @@ instance Binary PeerDiscoveryMsg where
167167 _ -> fail "PeerDiscoveryMsg.get: invalid"
168168
169169-- | Respond to peer discovery requests sent by other nodes
170−peerDiscoveryDaemon :: MVar LocalBackendState
170+peerDiscoveryDaemon :: MVar BackendState
171171 -> IO (PeerDiscoveryMsg, N.SockAddr)
172172 -> (PeerDiscoveryMsg -> IO ())
173173 -> IO ()
@@ -187,7 +187,7 @@ peerDiscoveryDaemon backendState recv send = forever go
187187--------------------------------------------------------------------------------
188188
189189-- | Make sure that all log messages are printed by the logger on this node
190−apiRedirectLogsHere :: LocalBackend -> Process ()
190+apiRedirectLogsHere :: Backend -> Process ()
191191apiRedirectLogsHere backend = do
192192 mLogger <- whereis "logger"
193193 forM_ mLogger $ \logger -> do
@@ -219,7 +219,7 @@ instance Binary SlaveControllerMsg where
219219--
220220-- This function does not return. The only way to exit the slave is to CTRL-C
221221-- the process or call terminateSlave from another node.
222−startSlave :: LocalBackend -> IO ()
222+startSlave :: Backend -> IO ()
223223startSlave backend = do
224224 node <- newLocalNode backend
225225 Node.runProcess node slaveController
@@ -241,7 +241,7 @@ terminateSlave :: NodeId -> Process ()
241241terminateSlave nid = nsendRemote nid "slaveController" SlaveTerminate
242242
243243-- | Find slave nodes
244−findSlaves :: LocalBackend -> Process [NodeId]
244+findSlaves :: Backend -> Process [NodeId]
245245findSlaves backend = do
246246 nodes <- liftIO $ findPeers backend 1000000
247247 -- Fire of asynchronous requests for the slave controller
@@ -254,7 +254,7 @@ findSlaves backend = do
254254 ])
255255
256256-- | Terminate all slaves
257−terminateAllSlaves :: LocalBackend -> Process ()
257+terminateAllSlaves :: Backend -> Process ()
258258terminateAllSlaves backend = do
259259 slaves <- findSlaves backend
260260 forM_ slaves terminateSlave
@@ -272,7 +272,7 @@ terminateAllSlaves backend = do
272272-- Terminates when the specified process terminates. If you want to terminate
273273-- the slaves when the master terminates, you should manually call
274274-- 'terminateAllSlaves'.
275−startMaster :: LocalBackend -> ([NodeId] -> Process ()) -> IO ()
275+startMaster :: Backend -> ([NodeId] -> Process ()) -> IO ()
276276startMaster backend proc = do
277277 node <- newLocalNode backend
278278 Node.runProcess node $ do
@@ -284,8 +284,8 @@ startMaster backend proc = do
284284-- Accessors --
285285--------------------------------------------------------------------------------
286286
287−localNodes :: Accessor LocalBackendState [Node.LocalNode]
287+localNodes :: Accessor BackendState [Node.LocalNode]
288288localNodes = accessor _localNodes (\ns st -> st { _localNodes = ns })
289289
290−peers :: Accessor LocalBackendState (Set NodeId)
290+peers :: Accessor BackendState (Set NodeId)
291291peers = accessor _peers (\ps st -> st { _peers = ps })
distributed-process/src/Control/Distributed/Process/Internal/Multicast.hs → distributed-process-simplelocalnet/src/Control/Distributed/Process/Backend/SimpleLocalnet/Internal/Multicast.hsrenamed+7−5
@@ -1,6 +1,6 @@
11-- | Multicast utilities
22{-# OPTIONS_GHC -fno-warn-orphans #-}
3−module Control.Distributed.Process.Internal.Multicast (initMulticast) where
3+module Control.Distributed.Process.Backend.SimpleLocalnet.Internal.Multicast (initMulticast) where
44
55import Data.Function (on)
66import Data.Map (Map)
@@ -35,12 +35,14 @@ import Network.Multicast (multicastSender, multicastReceiver)
3535-- message size; if you do, all subsequent communication will probably fail.
3636--
3737-- Returns a reader and a writer.
38−initMulticast :: HostName -- ^ Multicast IP
38+--
39+-- NOTE: By rights the two functions should be "locally" polymorphic in 'a',
40+-- but this requires impredicative types.
41+initMulticast :: forall a. Binary a
42+ => HostName -- ^ Multicast IP
3943 -> PortNumber -- ^ Port number
4044 -> Int -- ^ Maximum message size
41− -> IO ( forall a. Binary a => IO (a, SockAddr)
42− , forall a. Binary a => a -> IO ()
43− )
45+ -> IO (IO (a, SockAddr), a -> IO ())
4446initMulticast host port bufferSize = do
4547 (sendSock, sendAddr) <- multicastSender host port
4648 readSock <- multicastReceiver host port
distributed-process/tests/TestLocalBackend.hs → distributed-process-simplelocalnet/tests/TestSimpleLocalnet.hsrenamed+2−2
@@ -1,9 +1,9 @@
11import System.Environment (getArgs, getProgName)
22import Control.Distributed.Process (NodeId, Process, liftIO)
33import Control.Distributed.Process.Node (initRemoteTable)
4−import Control.Distributed.Process.Backend.Local
4+import Control.Distributed.Process.Backend.SimpleLocalnet
55
6−master :: LocalBackend -> [NodeId] -> Process ()
6+master :: Backend -> [NodeId] -> Process ()
77master backend slaves = do
88 liftIO . putStrLn $ "Slaves: " ++ show slaves
99 terminateAllSlaves backend
distributed-process-simplelocalnet/tests/runTestSimpleLocalnet.hsnew file+11
@@ -0,0 +1,11 @@
1+#!/bin/bash
2+TestSimpleLocalnet=dist/build/TestSimpleLocalnet/TestSimpleLocalnet
3+$TestSimpleLocalnet slave 127.0.0.1 8080 &
4+sleep 1
5+$TestSimpleLocalnet slave 127.0.0.1 8081 &
6+sleep 1
7+$TestSimpleLocalnet slave 127.0.0.1 8082 &
8+sleep 1
9+$TestSimpleLocalnet slave 127.0.0.1 8083 &
10+sleep 1
11+$TestSimpleLocalnet master 127.0.0.1 8084
distributed-process/LICENSE+1−1
@@ -1,4 +1,4 @@
1−Copyright Well-Typed LLP, 2011
1+Copyright Well-Typed LLP, 2011-2012
22
33All rights reserved.
44
distributed-process/distributed-process.cabal+111−83
@@ -1,102 +1,130 @@
1−Name: distributed-process
2−Version: 0.1.0
3−Description: Distributed processes for message based concurrency.
4−License: BSD3
5−License-file: LICENSE
6−Author: Duncan Coutts, Nicolas Wu, Edsko de Vries
7−Maintainer: duncan@well-typed.com
8−Homepage: http://github.com/haskell-distributed/
9−Build-Type: Simple
10−Cabal-Version: >=1.2
1+Name: distributed-process
2+Version: 0.2.0
3+Cabal-Version: >=1.8
4+Build-Type: Simple
5+License: BSD3
6+License-File: LICENSE
7+Copyright: Well-Typed LLP
8+Author: Duncan Coutts, Nicolas Wu, Edsko de Vries
9+Maintainer: edsko@well-typed.com, dcoutts@well-typed.com
10+Stability: experimental
11+Homepage: http://github.com/haskell-distributed/distributed-process
12+Bug-Reports: mailto:edsko@well-typed.com
13+Synopsis: Cloud Haskell: Erlang-style concurrency in Haskell
14+Description: This is an implementation of Cloud Haskell, as described in
15+ /Towards Haskell in the Cloud/ by Jeff Epstein, Andrew Black,
16+ and Simon Peyton Jones
17+ (<http://research.microsoft.com/en-us/um/people/simonpj/papers/parallel/>),
18+ although some of the details are different. The precise message
19+ passing semantics are based on /A unified semantics for future
20+ Erlang/ by Hans Svensson, Lars-Åke Fredlund and Clara Benac
21+ Earle.
22+
23+ You will probably also want to install a Cloud Haskell backend such
24+ as distributed-process-simplelocalnet.
25+Tested-With: GHC==7.2.2 GHC==7.4.1 GHC==7.4.2
26+Category: Control
1127
1228Library
13− Build-Depends: base >= 3 && < 5,
14− bytestring >= 0.9,
15− containers >= 0.4,
16− mtl >= 2.0,
17− binary,
18− transformers,
19− data-accessor,
20− random,
21− template-haskell,
22− stm,
23− ghc-prim,
24− network,
25− network-multicast,
26− time,
27− old-locale,
28− network-transport >= 0.1
29+ Build-Depends: base >= 4.4 && < 5,
30+ binary >= 0.5 && < 0.6,
31+ network-transport >= 0.2 && < 0.3,
32+ stm >= 2.4 && < 2.5,
33+ transformers >= 0.2 && < 0.4,
34+ mtl >= 2.0 && < 2.2,
35+ data-accessor >= 0.2 && < 0.3,
36+ bytestring >= 0.9 && < 0.10,
37+ containers >= 0.4 && < 0.5,
38+ old-locale >= 1.0 && < 1.1,
39+ time >= 1.2 && < 1.3,
40+ template-haskell >= 2.6 && < 2.7,
41+ random >= 1.0 && < 1.1,
42+ ghc-prim >= 0.2 && < 0.3
2943 Exposed-modules: Control.Distributed.Process,
3044 Control.Distributed.Process.Serializable,
3145 Control.Distributed.Process.Closure,
32− Control.Distributed.Process.Node
33− Control.Distributed.Process.Backend.Local
34− Extensions: ExplicitForAll, ScopedTypeVariables, GeneralizedNewtypeDeriving, FlexibleInstances, UndecidableInstances, MultiParamTypeClasses, DeriveDataTypeable, TemplateHaskell, ExistentialQuantification, RankNTypes, GADTs, ImpredicativeTypes
46+ Control.Distributed.Process.Node,
47+ Control.Distributed.Process.Internal.Primitives,
48+ Control.Distributed.Process.Internal.CQueue,
49+ Control.Distributed.Process.Internal.Dynamic,
50+ Control.Distributed.Process.Internal.Closure,
51+ Control.Distributed.Process.Internal.TypeRep,
52+ Control.Distributed.Process.Internal.MessageT,
53+ Control.Distributed.Process.Internal.Types,
54+ Control.Distributed.Process.Internal.Closure.BuiltIn,
55+ Control.Distributed.Process.Internal.Closure.Combinators,
56+ Control.Distributed.Process.Internal.Closure.TH,
57+ Control.Distributed.Process.Internal.Node
58+ Extensions: RankNTypes,
59+ ScopedTypeVariables,
60+ FlexibleInstances,
61+ UndecidableInstances,
62+ ExistentialQuantification,
63+ GADTs,
64+ GeneralizedNewtypeDeriving,
65+ DeriveDataTypeable,
66+ TemplateHaskell
3567 ghc-options: -Wall
3668 HS-Source-Dirs: src
3769
3870Test-Suite TestCH
3971 Type: exitcode-stdio-1.0
4072 Main-Is: TestCH.hs
41− Build-Depends: base,
42− bytestring,
43− containers,
44− mtl,
45− binary,
46− transformers,
47− data-accessor,
48− random,
49− ansi-terminal,
50− template-haskell,
51− stm,
52− ghc-prim,
53− time,
54− old-locale,
55− network-transport >= 0.1
56− Extensions: ExplicitForAll, ScopedTypeVariables, GeneralizedNewtypeDeriving, FlexibleInstances, UndecidableInstances, MultiParamTypeClasses, DeriveDataTypeable, TemplateHaskell, ExistentialQuantification, RankNTypes, GADTs, ImpredicativeTypes
73+ Build-Depends: base >= 4.4 && < 5,
74+ binary >= 0.5 && < 0.6,
75+ network-transport >= 0.2 && < 0.3,
76+ network-transport-tcp >= 0.2 && < 0.3,
77+ stm >= 2.4 && < 2.5,
78+ transformers >= 0.2 && < 0.4,
79+ mtl >= 2.0 && < 2.2,
80+ data-accessor >= 0.2 && < 0.3,
81+ bytestring >= 0.9 && < 0.10,
82+ containers >= 0.4 && < 0.5,
83+ old-locale >= 1.0 && < 1.1,
84+ time >= 1.2 && < 1.3,
85+ template-haskell >= 2.6 && < 2.7,
86+ random >= 1.0 && < 1.1,
87+ ghc-prim >= 0.2 && < 0.3,
88+ ansi-terminal >= 0.5 && < 0.6
89+ Extensions: RankNTypes,
90+ ScopedTypeVariables,
91+ FlexibleInstances,
92+ UndecidableInstances,
93+ ExistentialQuantification,
94+ GADTs,
95+ GeneralizedNewtypeDeriving,
96+ DeriveDataTypeable,
97+ TemplateHaskell
5798 ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -fno-warn-unused-do-bind
5899 HS-Source-Dirs: tests src
59100
60−-- Separate test suite for tests that involve closures, as this will be replaced
61−-- once we have proper support for 'static'
62101Test-Suite TestClosure
63102 Type: exitcode-stdio-1.0
64103 Main-Is: TestClosure.hs
65− Build-Depends: base,
66− bytestring,
67− containers,
68− mtl,
69− binary,
70− transformers,
71− data-accessor,
72− random,
73− ansi-terminal,
74− template-haskell,
75− stm,
76− time,
77− old-locale,
78− network-transport >= 0.1
79− Extensions: ExplicitForAll, ScopedTypeVariables, GeneralizedNewtypeDeriving, FlexibleInstances, UndecidableInstances, MultiParamTypeClasses, DeriveDataTypeable, TemplateHaskell, ExistentialQuantification, RankNTypes, GADTs, ImpredicativeTypes
80− ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -fno-warn-unused-do-bind
81− HS-Source-Dirs: tests src
82−
83−-- Not a proper test, but we want to use cabal to compile it
84−Test-Suite TestLocalBackend
85− Type: exitcode-stdio-1.0
86− Main-Is: TestLocalBackend.hs
87− Build-Depends: base,
88− bytestring,
89− containers,
90− mtl,
91− binary,
92− transformers,
93− data-accessor,
94− random,
95− ansi-terminal,
96− template-haskell,
97− stm,
98− old-locale,
99− network-transport >= 0.1
100− Extensions: ExplicitForAll, ScopedTypeVariables, GeneralizedNewtypeDeriving, FlexibleInstances, UndecidableInstances, MultiParamTypeClasses, DeriveDataTypeable, TemplateHaskell, ExistentialQuantification, RankNTypes, GADTs, ImpredicativeTypes
104+ Build-Depends: base >= 4.4 && < 5,
105+ binary >= 0.5 && < 0.6,
106+ network-transport >= 0.2 && < 0.3,
107+ network-transport-tcp >= 0.2 && < 0.3,
108+ stm >= 2.4 && < 2.5,
109+ transformers >= 0.2 && < 0.4,
110+ mtl >= 2.0 && < 2.2,
111+ data-accessor >= 0.2 && < 0.3,
112+ bytestring >= 0.9 && < 0.10,
113+ containers >= 0.4 && < 0.5,
114+ old-locale >= 1.0 && < 1.1,
115+ time >= 1.2 && < 1.3,
116+ template-haskell >= 2.6 && < 2.7,
117+ random >= 1.0 && < 1.1,
118+ ghc-prim >= 0.2 && < 0.3,
119+ ansi-terminal >= 0.5 && < 0.6
120+ Extensions: RankNTypes,
121+ ScopedTypeVariables,
122+ FlexibleInstances,
123+ UndecidableInstances,
124+ ExistentialQuantification,
125+ GADTs,
126+ GeneralizedNewtypeDeriving,
127+ DeriveDataTypeable,
128+ TemplateHaskell
101129 ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -fno-warn-unused-do-bind
102130 HS-Source-Dirs: tests src
distributed-process/tests/runTestLocalBackend.hsdeleted−11
@@ -1,11 +0,0 @@
1−#!/bin/bash
2−TestLocalBackend=dist/build/TestLocalBackend/TestLocalBackend
3−$TestLocalBackend slave 127.0.0.1 8080 &
4−sleep 1
5−$TestLocalBackend slave 127.0.0.1 8081 &
6−sleep 1
7−$TestLocalBackend slave 127.0.0.1 8082 &
8−sleep 1
9−$TestLocalBackend slave 127.0.0.1 8083 &
10−sleep 1
11−$TestLocalBackend master 127.0.0.1 8084