summaryrefslogtreecommitdiff
path: root/erebos.cabal
blob: 3734f1f0c4af4ffc40c884eb697489f8619cec96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
Cabal-Version:       2.2

Name:                erebos
Version:             0.1.0
Synopsis:            Decentralized messaging and synchronization
Description:
    Library and simple CLI interface implementing the Erebos identity
    management, decentralized messaging and synchronization protocol, along
    with local storage.
    .
    Erebos identity is based on locally stored cryptographic keys, all
    communication is end-to-end encrypted. Multiple devices can be attached to
    the same identity, after which they function interchangeably, without any
    one being in any way "primary"; messages and other state data are then
    synchronized automatically whenever the devices are able to connect with
    one another.
    .
    See README for usage of the CLI tool.
License:             BSD-3-Clause
License-File:        LICENSE
Homepage:            http://erebosprotocol.net
Author:              Roman Smrž <roman.smrz@seznam.cz>
Maintainer:          roman.smrz@seznam.cz
Category:            Network
Stability:           experimental
Build-type:          Simple
Extra-Doc-Files:
    README.md
    CHANGELOG.md
Extra-Source-Files:
    src/Erebos/ICE/pjproject.h

source-repository head
    type:       git
    location:   git://erebosprotocol.net/erebos

common common
    ghc-options:         -Wall

    build-depends:
        base >=4.13 && <4.17,

    default-extensions:
        DefaultSignatures
        ExistentialQuantification
        FlexibleContexts
        FlexibleInstances
        FunctionalDependencies
        GeneralizedNewtypeDeriving
        ImportQualifiedPost
        LambdaCase
        MultiWayIf
        RankNTypes
        RecordWildCards
        ScopedTypeVariables
        StandaloneDeriving
        TypeOperators
        TupleSections
        TypeApplications
        TypeFamilies
        TypeFamilyDependencies

    other-extensions:
        ForeignFunctionInterface
        OverloadedStrings
        RecursiveDo
        TemplateHaskell
        UndecidableInstances

library
    import: common
    default-language:    Haskell2010

    hs-source-dirs:      src
    exposed-modules:
        Erebos.Attach
        Erebos.Channel
        Erebos.Contact
        Erebos.Discovery
        Erebos.ICE
        Erebos.Identity
        Erebos.Message
        Erebos.Network
        Erebos.Network.Protocol
        Erebos.Pairing
        Erebos.PubKey
        Erebos.Service
        Erebos.Set
        Erebos.State
        Erebos.Storage
        Erebos.Storage.Key
        Erebos.Storage.Merge
        Erebos.Sync

        -- Used by test tool:
        Erebos.Storage.Internal
    other-modules:
        Erebos.Flow
        Erebos.Storage.List
        Erebos.Util

    c-sources:
        src/Erebos/ICE/pjproject.c
        src/Erebos/Network/ifaddrs.c
    include-dirs:
        src/Erebos/ICE
        src
    includes:
        src/Erebos/ICE/pjproject.h
    build-tool-depends:  c2hs:c2hs
    pkgconfig-depends:   libpjproject >= 2.9

    build-depends:
        async >=2.2 && <2.3,
        binary >=0.8 && <0.11,
        bytestring >=0.10 && <0.13,
        cereal >= 0.5 && <0.6,
        clock >=0.8 && < 0.9,
        containers >= 0.6 && <0.8,
        cryptonite >=0.25 && <0.31,
        deepseq >= 1.4 && <1.6,
        directory >= 1.3 && <1.4,
        filepath >=1.4 && <1.6,
        hashable >=1.3 && <1.5,
        hashtables >=1.2 && <1.4,
        hinotify >=0.4 && <0.5,
        iproute >=1.7 && <1.8,
        memory >=0.14 && <0.19,
        mime >= 0.4 && < 0.5,
        mtl >=2.2 && <2.4,
        network >= 3.1 && <3.2,
        stm >=2.5 && <2.6,
        tagged >= 0.8 && <0.9,
        text >= 1.2 && <2.2,
        time >= 1.8 && <1.14,
        unix >=2.7 && <2.9,
        uuid >=1.3 && <1.4,
        zlib >=0.6 && <0.8

executable erebos
    import: common
    default-language:    Haskell2010
    hs-source-dirs:      main
    ghc-options:         -threaded

    main-is:             Main.hs
    other-modules:
        Paths_erebos
        Test
        Version
        Version.Git

    build-depends:
        bytestring,
        cryptonite,
        directory,
        erebos,
        haskeline >=0.7 && <0.9,
        mtl,
        network,
        process >=1.6 && <1.7,
        template-haskell >=2.18 && <2.22,
        text,
        time,
        transformers >= 0.5 && <0.7,