grapesy-1.0.0: grapesy.cabal
cabal-version: 3.0
name: grapesy
version: 1.0.0
synopsis: Native Haskell implementation of the gRPC framework
description: This is a fully compliant and feature complete native Haskell
implementation of gRPC, Google's RPC framework.
license: BSD-3-Clause
license-file: LICENSE
author: Edsko de Vries
maintainer: edsko@well-typed.com
category: Network
build-type: Simple
extra-doc-files: CHANGELOG.md
data-dir: data
data-files: route_guide_db.json
grpc-demo.pem
grpc-demo.key
interop.pem
interop.key
interop-ca.pem
tested-with: GHC==8.10.7
, GHC==9.2.8
, GHC==9.4.8
, GHC==9.6.6
, GHC==9.8.2
, GHC==9.10.1
source-repository head
type: git
location: https://github.com/well-typed/grapesy
common lang
ghc-options:
-Wall
-Wredundant-constraints
-Wno-unticked-promoted-constructors
-Wprepositive-qualified-module
-Widentities
-Wmissing-export-lists
build-depends:
base >= 4.14 && < 4.22
default-language:
Haskell2010
default-extensions:
BangPatterns
ConstraintKinds
DataKinds
DeriveAnyClass
DeriveFunctor
DeriveGeneric
DeriveTraversable
DerivingStrategies
DerivingVia
DisambiguateRecordFields
FlexibleContexts
FlexibleInstances
GADTs
GeneralizedNewtypeDeriving
ImportQualifiedPost
InstanceSigs
LambdaCase
MultiParamTypeClasses
MultiWayIf
NamedFieldPuns
NumericUnderscores
PolyKinds
RankNTypes
ScopedTypeVariables
StandaloneDeriving
TupleSections
TypeApplications
TypeFamilies
TypeOperators
UndecidableInstances
if impl(ghc >= 9.0)
ghc-options:
-- This was introduced in 8.10, but it does not work reliably until 9.0.
-- In 8.10 you might get spurious warnings when using re-exported modules
-- (e.g. in proto-lens-runtime).
-Wunused-packages
common common-executable-flags
ghc-options:
-threaded
-rtsopts
library
import: lang
autogen-modules: Paths_grapesy
hs-source-dirs: src, proto
exposed-modules:
Network.GRPC.Client
Network.GRPC.Client.Binary
Network.GRPC.Client.StreamType.CanCallRPC
Network.GRPC.Client.StreamType.Conduit
Network.GRPC.Client.StreamType.IO
Network.GRPC.Client.StreamType.IO.Binary
Network.GRPC.Common
Network.GRPC.Common.Binary
Network.GRPC.Common.Compression
Network.GRPC.Common.Headers
Network.GRPC.Common.HTTP2Settings
Network.GRPC.Common.JSON
Network.GRPC.Common.NextElem
Network.GRPC.Common.Protobuf
Network.GRPC.Common.Protobuf.Any
Network.GRPC.Common.StreamElem
Network.GRPC.Common.StreamType
Network.GRPC.Server
Network.GRPC.Server.Binary
Network.GRPC.Server.Protobuf
Network.GRPC.Server.Run
Network.GRPC.Server.StreamType
Network.GRPC.Server.StreamType.Binary
other-modules:
Network.GRPC.Client.Call
Network.GRPC.Client.Connection
Network.GRPC.Client.Meta
Network.GRPC.Client.Session
Network.GRPC.Client.StreamType
Network.GRPC.Server.Call
Network.GRPC.Server.Context
Network.GRPC.Server.Handler
Network.GRPC.Server.HandlerMap
Network.GRPC.Server.RequestHandler
Network.GRPC.Server.RequestHandler.API
Network.GRPC.Server.Session
Network.GRPC.Util.AccumulatedByteString
Network.GRPC.Util.GHC
Network.GRPC.Util.HTTP2
Network.GRPC.Util.HTTP2.Stream
Network.GRPC.Util.RedundantConstraint
Network.GRPC.Util.Session
Network.GRPC.Util.Session.API
Network.GRPC.Util.Session.Channel
Network.GRPC.Util.Session.Client
Network.GRPC.Util.Session.Server
Network.GRPC.Util.Thread
Network.GRPC.Util.TLS
Paths_grapesy
build-depends:
, aeson >= 1.5 && < 2.3
, async >= 2.2 && < 2.3
, binary >= 0.8 && < 0.9
, bytestring >= 0.10.12 && < 0.13
, conduit >= 1.3 && < 1.4
, containers >= 0.6 && < 0.8
, crypton-x509 >= 1.7 && < 1.8
, crypton-x509-store >= 1.6 && < 1.7
, crypton-x509-system >= 1.6 && < 1.7
, data-default >= 0.7 && < 0.9
, deepseq >= 1.4 && < 1.6
, exceptions >= 0.10 && < 0.11
, grpc-spec >= 1.0 && < 1.1
, http-types >= 0.12 && < 0.13
, http2-tls >= 0.4.5 && < 0.5
, lens >= 5.0 && < 5.4
, mtl >= 2.2 && < 2.4
, network >= 3.2.4 && < 3.3
, network-run >= 0.4.3 && < 0.5
, proto-lens >= 0.7 && < 0.8
, proto-lens-protobuf-types >= 0.7 && < 0.8
, random >= 1.2 && < 1.4
, recv >= 0.1 && < 0.2
, stm >= 2.5 && < 2.6
, text >= 1.2 && < 2.2
, time-manager >= 0.2.2 && < 0.3
, tls >= 1.7 && < 2.2
, unbounded-delays >= 0.1.1 && < 0.2
, unordered-containers >= 0.2 && < 0.3
, utf8-string >= 1.0 && < 1.1
-- We pin very specific versions of http2.
--
-- New versions should be tested against the full grapesy test suite
-- (regular tests and stress tests).
, http2 == 5.3.9
test-suite test-record-dot
import: lang, common-executable-flags
type: exitcode-stdio-1.0
hs-source-dirs: test-record-dot, proto
main-is: Main.hs
build-depends: grapesy
other-modules:
Test.OverloadedRecordDot
Test.OverloadedRecordUpdate
Proto.Spec
build-depends:
-- Inherited dependencies
, bytestring
, containers
, text
build-depends:
-- Additional dependencies
, proto-lens-runtime >= 0.7 && < 0.8
, tasty >= 1.4 && < 1.6
, tasty-hunit >= 0.10 && < 0.11
, vector >= 0.13 && < 0.14
, record-hasfield >= 1.0 && < 1.1
if impl(ghc < 9.2)
buildable: False
test-suite test-grapesy
import: lang, common-executable-flags
type: exitcode-stdio-1.0
hs-source-dirs: test-grapesy, proto
main-is: Main.hs
autogen-modules: Paths_grapesy
build-depends: grapesy
other-modules:
Test.Driver.ClientServer
Test.Driver.Dialogue
Test.Driver.Dialogue.Definition
Test.Driver.Dialogue.Execution
Test.Driver.Dialogue.Generation
Test.Driver.Dialogue.TestClock
Test.Prop.Dialogue
Test.Regression.Issue102
Test.Regression.Issue238
Test.Sanity.Any
Test.Sanity.BrokenDeployments
Test.Sanity.Compression
Test.Sanity.Disconnect
Test.Sanity.EndOfStream
Test.Sanity.Interop
Test.Sanity.Reclamation
Test.Sanity.StreamingType.CustomFormat
Test.Sanity.StreamingType.NonStreaming
Test.Util
Test.Util.Exception
Test.Util.RawTestServer
Paths_grapesy
Proto.API.Helloworld
Proto.API.Interop
Proto.API.Ping
Proto.API.RouteGuide
Proto.API.TestAny
Proto.API.Trivial
Proto.Empty
Proto.Helloworld
Proto.Messages
Proto.Ping
Proto.RouteGuide
Proto.Test
Proto.TestAny
build-depends:
-- Inherited dependencies
, async
, bytestring
, containers
, deepseq
, exceptions
, http-types
, http2
, mtl
, network
, proto-lens-protobuf-types
, stm
, text
, tls
, utf8-string
build-depends:
-- Additional dependencies
, proto-lens-runtime >= 0.7 && < 0.8
, QuickCheck >= 2.14 && < 2.16
, serialise >= 0.2 && < 0.3
, tasty >= 1.4 && < 1.6
, tasty-hunit >= 0.10 && < 0.11
, tasty-quickcheck >= 0.10 && < 0.12
, temporary >= 1.3 && < 1.4
, unix >= 2.7 && < 2.9
test-suite test-stress
import: lang, common-executable-flags
type: exitcode-stdio-1.0
hs-source-dirs: test-stress, proto
main-is: Main.hs
autogen-modules: Paths_grapesy
build-depends: grapesy
default-extensions: RecordWildCards
other-modules:
Test.Stress.Client
Test.Stress.Cmdline
Test.Stress.Common
Test.Stress.Driver
Test.Stress.Driver.Summary
Test.Stress.Server
Proto.API.Trivial
Paths_grapesy
build-depends:
-- Inherited dependencies
, async
, bytestring
, exceptions
, http2
, network
, text
, tls
build-depends:
-- Additional dependencies
, Chart >= 1.9 && < 1.10
, Chart-diagrams >= 1.9 && < 1.10
, directory >= 1.3 && < 1.4
, filepath >= 1.4.2.1 && < 1.6
, ghc-events >= 0.17 && < 0.21
, optparse-applicative >= 0.16 && < 0.19
, pretty-show >= 1.10 && < 1.11
, process >= 1.6.12 && < 1.7
, random >= 1.2 && < 1.4
, temporary >= 1.3 && < 1.4
if !flag(build-stress-test)
buildable:
False
test-suite grapesy-interop
import: lang, common-executable-flags
type: exitcode-stdio-1.0
hs-source-dirs: interop, proto
main-is: Main.hs
autogen-modules: Paths_grapesy
build-depends: grapesy
default-extensions: OverloadedLabels
other-modules:
Interop.Client
Interop.Client.Common
Interop.Client.Connect
Interop.Client.Ping
Interop.Client.TestCase.CancelAfterBegin
Interop.Client.TestCase.CancelAfterFirstResponse
Interop.Client.TestCase.ClientCompressedStreaming
Interop.Client.TestCase.ClientCompressedUnary
Interop.Client.TestCase.ClientStreaming
Interop.Client.TestCase.CustomMetadata
Interop.Client.TestCase.EmptyStream
Interop.Client.TestCase.EmptyUnary
Interop.Client.TestCase.LargeUnary
Interop.Client.TestCase.PingPong
Interop.Client.TestCase.ServerCompressedStreaming
Interop.Client.TestCase.ServerCompressedUnary
Interop.Client.TestCase.ServerStreaming
Interop.Client.TestCase.SpecialStatusMessage
Interop.Client.TestCase.StatusCodeAndMessage
Interop.Client.TestCase.TimeoutOnSleepingServer
Interop.Client.TestCase.UnimplementedMethod
Interop.Client.TestCase.UnimplementedService
Interop.Cmdline
Interop.SelfTest
Interop.Server
Interop.Server.Common
Interop.Server.PingService.Ping
Interop.Server.TestService.EmptyCall
Interop.Server.TestService.FullDuplexCall
Interop.Server.TestService.StreamingInputCall
Interop.Server.TestService.StreamingOutputCall
Interop.Server.TestService.UnaryCall
Interop.Util.ANSI
Interop.Util.Exceptions
Interop.Util.Messages
Paths_grapesy
Proto.API.Interop
Proto.API.Ping
Proto.Empty
Proto.Messages
Proto.Ping
Proto.Test
build-depends:
-- Inherited dependencies
, bytestring
, exceptions
, grpc-spec
, mtl
, network
, text
build-depends:
-- Additional dependencies
, ansi-terminal >= 1.1 && < 1.2
, optparse-applicative >= 0.16 && < 0.19
, proto-lens-runtime >= 0.7 && < 0.8
benchmark grapesy-kvstore
import: lang, common-executable-flags
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs: kvstore, proto
autogen-modules: Paths_grapesy
build-depends: grapesy
default-extensions: OverloadedLabels
other-modules:
KVStore.API
KVStore.API.JSON
KVStore.API.Protobuf
KVStore.Client
KVStore.Cmdline
KVStore.Server
KVStore.Util.Profiling
KVStore.Util.RandomAccessSet
KVStore.Util.RandomGen
KVStore.Util.Store
Proto.Kvstore
Paths_grapesy
build-depends:
-- Inherited dependencies
, aeson
, bytestring
, containers
, deepseq
, text
, unordered-containers
build-depends:
-- Additional dependencies
, base16-bytestring >= 1.0 && < 1.1
, base64-bytestring >= 1.2 && < 1.3
, hashable >= 1.3 && < 1.6
, optparse-applicative >= 0.16 && < 0.19
, proto-lens-runtime >= 0.7 && < 0.8
, splitmix >= 0.1 && < 0.2
if flag(strace)
cpp-options: -DSTRACE
build-depends: unix >= 2.7 && < 2.9
Flag build-stress-test
description: Build the stress test
default: False
manual: True
Flag strace
description: Write events to /dev/null in @grapesy-kvstore@ so that they show up in strace
default: False
manual: True