packages feed

capnp-0.14.0.0: capnp.cabal

cabal-version:            2.2
name:                     capnp
version:                  0.14.0.0
category:                 Data, Serialization, Network, Rpc
copyright:                2016-2021 haskell-capnp contributors (see CONTRIBUTORS file).
author:                   Ian Denhardt
maintainer:               ian@zenhack.net
license:                  MIT
license-file:             LICENSE.md
homepage:                 https://github.com/zenhack/haskell-capnp
bug-reports:              https://github.com/zenhack/haskell-capnp/issues
synopsis:                 Cap'n Proto for Haskell
description:
  A native Haskell implementation of the Cap'N Proto cerialization format and
  RPC protocol.
  .
  The library implements serialization and level 1 RPC.
  .
  The "Capnp.Tutorial" module is the best place to start reading; the
  reference documentation can seem bewildering without that context.
build-type:               Simple
extra-source-files:
    README.md
  , CHANGELOG.md
  , CONTRIBUTING.md
  , ci/README.md
  , ci/Dockerfile
  , core-schema/README.md
  , core-schema/capnp/schema.capnp
  , core-schema/capnp/stream.capnp
  , core-schema/capnp/rpc-twoparty.capnp
  , core-schema/capnp/persistent.capnp
  , core-schema/capnp/rpc.capnp
  , core-schema/capnp/compat/json.capnp
  , core-schema/capnp/c++.capnp
  , scripts/format.sh
  , scripts/hlint.sh
  , scripts/README.md
  , scripts/regen.sh
  , .stylish-haskell.yaml
  , .gitattributes
  , .gitignore
  , .gitlab-ci.yml

--------------------------------------------------------------------------------

source-repository head
    type:                 git
    branch:               master
    location:             https://github.com/zenhack/haskell-capnp.git

--------------------------------------------------------------------------------

common shared-opts
  build-depends:
        base                              >= 4.11  && < 5
      , bytes                             >= 0.15.4 && <0.18
      , bytestring                        >= 0.10 && <0.12
      , containers                        >= 0.5.9 && <0.7
      , data-default                      ^>= 0.7.1
      , exceptions                        ^>= 0.10.0
      , ghc-prim                          >= 0.6.1 && <0.8
      , mtl                               ^>= 2.2.2
      , primitive                         >= 0.6.3 && <0.8
      , safe-exceptions                   ^>= 0.1.7
      , text                              >= 1.2 && < 2.0
      , transformers                      >= 0.5.2 && <0.7
      , vector                            ^>= 0.12.0
      , monad-stm                         ^>= 0.1
  ghc-options:
    -Wall

    -- This warning is triggered by normal use of NamedFieldPuns, so it's a no-go
    -- for us:
    -Wno-name-shadowing

    -- I(zenhack) find it rather odd that orphan instances are flagged when the
    -- class and the type are in different modules but, the same *package*. We do
    -- this in a number of places in the capnp package, so we disable this
    -- warning. It's not super easy to write a package-level orphan by accident,
    -- so we're not losing much.
    -Wno-orphans
  default-language:     Haskell2010

--------------------------------------------------------------------------------

-- main runtime library.
library
    import: shared-opts
    hs-source-dirs:
      lib
      -- generated code:
      gen/lib
    exposed-modules:
        Capnp.Address
      , Capnp.Bits
      , Capnp.Canonicalize
      , Capnp.New
      , Capnp.New.Accessors
      , Capnp.New.Basics
      , Capnp.New.Classes
      , Capnp.New.Constraints
      , Capnp.New.Rpc.Common
      , Capnp.New.Rpc.Server
      , Capnp.Convert
      , Capnp.Errors
      , Capnp.Fields
      , Capnp.GenHelpers.New
      , Capnp.GenHelpers.New.Rpc
      , Capnp.IO
      , Capnp.Message
      , Capnp.Mutability
      , Capnp.Pointer
      , Capnp.Untyped
      , Capnp.Repr
      , Capnp.Repr.Methods
      , Capnp.Repr.Parsed
      , Capnp.TraversalLimit
      , Capnp.Rpc
      , Capnp.Rpc.Promise
      , Capnp.Rpc.Untyped
      , Capnp.Rpc.Errors
      , Capnp.Rpc.Transport
      , Capnp.Rpc.Server
      , Capnp.Tutorial

      , Data.Mutable

      , Capnp.Gen
      , Capnp.Gen.Capnp

      -- BEGIN GENERATED SCHEMA MODULES
      , Capnp.Gen.Capnp.Cxx.New
      , Capnp.Gen.Capnp.Compat.Json.New
      , Capnp.Gen.Capnp.Persistent.New
      , Capnp.Gen.Capnp.Rpc.New
      , Capnp.Gen.Capnp.RpcTwoparty.New
      , Capnp.Gen.Capnp.Schema.New
      , Capnp.Gen.Capnp.Stream.New

      , Capnp.Gen.ById.Xbdf87d7bb8304e81.New
      , Capnp.Gen.ById.X8ef99297a43a5e34.New
      , Capnp.Gen.ById.Xb8630836983feed7.New
      , Capnp.Gen.ById.Xb312981b2552a250.New
      , Capnp.Gen.ById.Xa184c7885cdaf2a1.New
      , Capnp.Gen.ById.Xa93fc509624c72d9.New
      , Capnp.Gen.ById.X86c366a91393f3f8.New
      -- END GENERATED SCHEMA MODULES
    other-modules:
        Internal.AppendVec
      , Internal.SnocList
      , Internal.Rc
      , Internal.TCloseQ
      , Internal.BuildPure
    -- other-extensions:
    build-depends:
        hashable                          >= 1.2.7 && <1.4
      , data-default-instances-vector     ^>= 0.0.1
      , stm                               ^>= 2.5.0
      , stm-containers                    >= 1.1.0 && <1.3
      , list-t                            ^>= 1.0.2
      , focus                             ^>= 1.0.1
      , async                             ^>= 2.2.1
      , network-simple                    ^>= 0.4
      , network                           >= 3 && <3.2
      , supervisors                       ^>= 0.2.1
      , lifetimes                         ^>= 0.1
      , pretty-show                       >= 1.9.5 && <1.11
      , template-haskell                  >=2.16.0 && <2.18

--------------------------------------------------------------------------------

-- code generator plugin
executable capnpc-haskell
  import: shared-opts
  hs-source-dirs:       cmd/capnpc-haskell
  main-is: Main.hs
  other-modules:
      IR.Name
      IR.New
    , IR.Common
    , IR.Stage1
    , IR.Flat
    , IR.Haskell
    , Trans.CgrToStage1
    , Trans.Stage1ToFlat
    , Trans.FlatToNew
    , Trans.ToHaskellCommon
    , Trans.NewToHaskell
    , Trans.HaskellToText
    , Check
  build-depends:
      capnp
    , wl-pprint-text ^>= 1.2
    , filepath ^>= 1.4.2
    , directory ^>= 1.3.0
    , bifunctors ^>= 5.5.8

--------------------------------------------------------------------------------

test-suite tests
    import: shared-opts
    type:                 exitcode-stdio-1.0
    main-is:              Main.hs
    hs-source-dirs:
      tests
      gen/tests
      examples/lib
      examples/gen/lib
    ghc-options:
      -threaded
    other-modules:
      -- Utilities
        Util
      , Instances
      , SchemaGeneration

      , Examples.Rpc.CalculatorClient
      , Examples.Rpc.CalculatorServer

      -- Generated code for examples/calculator.capnp
      , Capnp.Gen.Calculator.New
      , Capnp.Gen.ById.X85150b117366d14b.New

      -- Generated code for examples/echo.capnp
      , Capnp.Gen.Echo.New
      , Capnp.Gen.ById.Xd0a87f36fa0182f5.New

      -- generated from tests/data/aircraft.capnp
      , Capnp.Gen.Aircraft.New
      , Capnp.Gen.ById.X832bcc6686a26d56.New

      -- generated from tests/data/generics.capnp
      , Capnp.Gen.Generics.New
      , Capnp.Gen.ById.Xb6421fb8e478d144.New

      -- Actual tests:
      , Module.Capnp.Gen.Capnp.Schema
      , Module.Capnp.Gen.Capnp.Schema.Pure
      , Module.Capnp.Rpc
      , Module.Capnp.Untyped
      , Module.Capnp.Untyped.Pure
      , Module.Capnp.Pointer
      , Module.Capnp.Bits
      , Module.Capnp.Basics
      , Module.Capnp.Canonicalize
      , PointerOOB
      , Regression
      , WalkSchemaCodeGenRequest
      , SchemaQuickCheck
      , CalculatorExample
      , Rpc.Unwrap
    build-depends:
        capnp
      , network
      , network-simple
      , stm
      , async
      , process
      , process-extras
      , QuickCheck
      , quickcheck-io
      , quickcheck-instances
      , hspec
      , directory
      , resourcet
      , heredoc
      , deepseq
      , pretty-show
      , supervisors


benchmark bench
  import: shared-opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs: bench
  build-depends:
      capnp
    , criterion ^>=1.5.9
    , deepseq
    , process-extras