Vervis/vervis.cabal
Pere Lev e6319aa686
Actor system typed methods + upgrade to LTS-22 + remove darcs dep
- I upgraded the actor system (Control.Concurrent.Actor) to support
  typed per-actor methods with type-level names, parameter lists and
  return values
- For extensible sum types, I decided to use the 'vary' package, while
  extensible product still uses 'HList' (other options are to get both
  from 'extensible' (Sum, Prod) or from 'vinyl' (Rec, CoRed))
- Since 'vary' is new, it uses GHC2021 and thus requires GHC 9
- So I decided to make the leap into upgrading to an LTS with GHC 9
- Vervis was at LTS 18, at first I tried 19 and 20 but there were
  dependency version problems, in particular I couldn't solve them for
  the 'darcs' package even when I switched to latest LTS which is 22
- So I decided it's time to do the long-waiting task of switching to
  calling-darcs-process instead of using darcs as a library

All of this together creates a huge commit, but 3 big things are now
solved :)
2024-08-21 20:17:52 +03:00

560 lines
21 KiB
Text

cabal-version: 2.2
name: vervis
version: 0.1
synopsis: Federated project hosting platform
description:
Vervis a decentralized software project hosting web application, which
federates using ActivityPub and ForgeFed.
.
Most of the source code is in the public domain using the CC0 public domain
dedication, but the application as a whole has GPL dependencies, and is
released under the AGPL 3 license.
homepage: https://vervis.peers.community/repos/rjQ3E
bug-reports: pere@towards.vision
license: AGPL-3.0-or-later
license-file: COPYING.AGPL3
author: Pere Lev
maintainer: pere@towards.vision
copyright: ♡ Copying is an act of love. Please copy, reuse and share.
category: Development, Distribution, Git, Web
build-type: Simple
extra-source-files: API.md
AUTHORS.md
CHANGELOG.md
COPYING
FEDERATION.md
INSTALL.md
README.md
source-repository head
type: git
location: https://vervis.peers.community/repos/rjQ3E
flag dev
description: Turn on development settings, like auto-reload templates.
default: False
flag library-only
description: Build for use with "yesod devel"
default: False
library
exposed-modules:
Vervis.Application
Vervis.Hook
other-modules:
Network.Git.Transport.HTTP.Fetch.RefDiscovery
Network.Git.Transport.HTTP.Fetch.UploadRequest
Network.Git.Get
Network.Git.Put
Network.Git.Types
Data.Binary.Get.Local
Data.Binary.Put.Local
Control.Applicative.Local
--Control.Concurrent.ActorOld
Control.Concurrent.Actor
Control.Concurrent.Local
Control.Concurrent.ResultShare
Control.Concurrent.Return
Control.Monad.Trans.Except.Local
Crypto.ActorKey
Crypto.PubKey.Encoding
Crypto.PublicVerifKey
--Darcs.Local.Repository
Data.Slab
Data.Slab.Backend
Data.Slab.Simple
Data.Aeson.Encode.Pretty.ToEncoding
Data.Aeson.Local
Data.Attoparsec.ByteString.Local
Data.Binary.Local
-- Data.Bitraversable.Local
Data.ByteString.Char8.Local
Data.ByteString.Local
Data.CaseInsensitive.Local
Data.Char.Local
--Data.DList.Local
Data.Either.Local
Data.EventTime.Local
Data.Functor.Local
Data.Graph.DirectedAcyclic.View.Tree
Data.Graph.Inductive.Query.Cycle
Data.Graph.Inductive.Query.Layer
Data.Graph.Inductive.Query.Path
Data.Graph.Inductive.Query.TransRed
Data.HashMap.Lazy.Local
--Data.Hourglass.Local
Data.Int.Local
Data.KeyFile
Data.List.Local
Data.List.NonEmpty.Local
Data.Maybe.Local
Data.MediaType
Data.ObjId
Data.Paginate.Local
Data.Patch.Local
Data.Text.UTF8.Local
Data.Text.Lazy.UTF8.Local
Data.Time.Clock.Local
Data.Tree.Local
Data.Tuple.Local
Data.VersionControl
Database.Esqueleto.Local
Database.Persist.Box
Database.Persist.Box.Internal
Database.Persist.Box.Via
Database.Persist.Class.Local
Database.Persist.JSON
Database.Persist.Sql.Local
Database.Persist.Sqlite.Local
Database.Persist.Local
--Database.Persist.Local.Class.PersistEntityHierarchy
Database.Persist.Local.RecursionDoc
Development.Darcs
Development.Git
Development.PatchMediaType
Development.PatchMediaType.JSON
Development.PatchMediaType.Persist
--Diagrams.IntransitiveDAG
Formatting.CaseInsensitive
Language.Haskell.TH.Quote.Local
Network.FedURI
Network.HTTP.Client.Conduit.ActivityPub
Network.HTTP.Digest
Network.SSH.Local
System.Process.Typed.Local
Text.Blaze.Local
Text.Display
Text.Email.Local
Text.FilePath.Local
Text.Jasmine.Local
Web.ActivityAccess
Web.ActivityPub
Web.ActivityPub.Internal
Web.Actor
Web.Actor.Deliver
Web.Actor.Persist
-- Web.Capability
Web.Text
Web.Hashids.Local
Web.PathPieces.Local
Yesod.ActivityPub
Yesod.Actor
Yesod.Auth.Unverified
Yesod.Auth.Unverified.Creds
Yesod.Auth.Unverified.Internal
Yesod.FedURI
Yesod.Form.Local
Yesod.Hashids
Yesod.MonadSite
Yesod.Paginate.Local
Yesod.Persist.Local
Yesod.RenderSource
Yesod.SessionEntity
Vervis.Access
Vervis.ActivityPub
Vervis.Actor
Vervis.Actor2
Vervis.Actor.Common
Vervis.Actor.Deck
Vervis.Actor.Factory
Vervis.Actor.Group
Vervis.Actor.Loom
Vervis.Actor.Person
Vervis.Actor.Person.Client
Vervis.Actor.Project
Vervis.Actor.Repo
Vervis.API
Vervis.Avatar
Vervis.BinaryBody
Vervis.Changes
Vervis.ChangeFeed
--Vervis.Class.Actor
Vervis.Client
Vervis.Cloth
--Vervis.Colour
--Vervis.Content
Vervis.Darcs
Vervis.Data.Actor
Vervis.Data.Collab
Vervis.Data.Discussion
Vervis.Data.Follow
Vervis.Data.Ticket
--Vervis.Federation
Vervis.Federation.Auth
Vervis.Federation.Discussion
Vervis.Federation.Offer
--Vervis.Federation.Push
Vervis.Federation.Ticket
Vervis.FedURI
Vervis.Fetch
Vervis.Field.Key
Vervis.Field.Person
--Vervis.Field.Project
--Vervis.Field.Repo
--Vervis.Field.Role
--Vervis.Field.Sharer
--Vervis.Field.Ticket
-- Vervis.Field.Workflow
Vervis.Form.Discussion
--Vervis.Form.Group
Vervis.Form.Key
Vervis.Form.Repo
--Vervis.Form.Role
Vervis.Form.Ticket
Vervis.Form.Tracker
-- Vervis.Form.Workflow
Vervis.Formatting
Vervis.Foundation
Vervis.Git
Vervis.GraphProxy
Vervis.Handler.Client
Vervis.Handler.Cloth
Vervis.Handler.Common
Vervis.Handler.Deck
Vervis.Handler.Factory
-- Vervis.Handler.Git
Vervis.Handler.Group
--Vervis.Handler.Inbox
Vervis.Handler.Key
Vervis.Handler.Loom
Vervis.Handler.Person
Vervis.Handler.Repo
--Vervis.Handler.Role
Vervis.Handler.Project
--Vervis.Handler.Sharer
Vervis.Handler.Ticket
-- Vervis.Handler.Wiki
-- Vervis.Handler.Workflow
Vervis.KeyFile
Vervis.Migration
Vervis.Migration.Entities
Vervis.Migration.Model2016
Vervis.Migration.Model2018
Vervis.Migration.Model2019
Vervis.Migration.Model2020
Vervis.Migration.Model2022
Vervis.Migration.Model2023
Vervis.Migration.Model2024
Vervis.Migration.TH
Vervis.Model
Vervis.Model.Entity
Vervis.Model.Group
Vervis.Model.Ident
Vervis.Model.Role
Vervis.Model.Ticket
Vervis.Model.TH
Vervis.Model.Workflow
Vervis.Paginate
Vervis.Palette
Vervis.Path
Vervis.Persist.Actor
Vervis.Persist.Collab
Vervis.Persist.Discussion
Vervis.Persist.Follow
Vervis.Persist.Ticket
Vervis.Readme
Vervis.Recipient
Vervis.RemoteActorStore
Vervis.RemoteActorStore.Types
--Vervis.Repo
Vervis.Secure
Vervis.Serve.Collab
Vervis.Settings
Vervis.Settings.StaticFiles
Vervis.Settings.TH
Vervis.SourceTree
Vervis.Ssh
Vervis.Style
Vervis.Ticket
Vervis.TicketFilter
Vervis.Time
Vervis.Web.Actor
Vervis.Web.Collab
Vervis.Web.Darcs
--Vervis.Web.Delivery
Vervis.Web.Discussion
Vervis.Web.Git
Vervis.Web.Repo
Vervis.Widget
Vervis.Widget.Discussion
Vervis.Widget.Person
Vervis.Widget.Repo
--Vervis.Widget.Role
Vervis.Widget.Ticket
Vervis.Widget.Tracker
-- Vervis.Widget.Workflow
-- Vervis.Wiki
--Vervis.WorkItem
default-extensions: TemplateHaskell
QuasiQuotes
OverloadedStrings
MultiParamTypeClasses
TypeFamilies
GADTs
GeneralizedNewtypeDeriving
FlexibleContexts
FlexibleInstances
EmptyDataDecls
NoMonomorphismRestriction
DeriveDataTypeable
ViewPatterns
TupleSections
RecordWildCards
LambdaCase
DerivingStrategies
StandaloneDeriving
DataKinds
build-depends: aeson
-- For activity JSOn display in /inbox test page
, aeson-pretty
-- For rethrowing in Control.Concurrent.Actor
, annotated-exception
-- for encoding and decoding of crypto public keys
, asn1-encoding
, asn1-types
-- for parsing commands sent over SSH and Darcs patch
-- metadata
, attoparsec
-- For LocalActorBy and LocalStageBy
, barbies
, base
-- for hex display of Darcs patch hashes
, base16-bytestring
, base58-bytestring
, base64-bytestring
-- for Data.Binary.Local
, binary
, blaze-html
-- for Data.EventTime.Local
, blaze-markup
, byteable
, bytestring
-- for Darcs.Local.PatchInfo.Parser
, bytestring-lexing
, case-insensitive
-- For slab/box/citron serialization
, cereal
, conduit
-- For httpAPEither
, conduit-extra
, containers
, cryptonite
, data-default
, data-default-class
, data-default-instances-bytestring
, data-ordlist
--, diff-parse
, directory
-- for Data.Git.Local
, directory-tree
, dlist
, dvara
, email-validate
, email-validate-json
, esqueleto
, exceptions
, fast-logger
-- for building a message tree using DFS in
-- Vervis.Discussion, possibly also used by some git
-- graph related code?
, fgl
, file-embed
, filepath
, formatting
, hashable
, hashids
-- for source file highlighting
, highlighter2
, http-client-signature
, html-entities
, http-signature
, gitrev
-- currently discarding all JS so no need for minifier
--, hjsmin
--, hourglass
, yesod-http-signature
, http-client
, http-client-tls
, http-conduit
, http-types
, libravatar
, memory
, mime-mail
, monad-control
, monad-logger
-- for Database.Persist.Local
, mtl
, network
, network-uri
, optics-core
, pandoc
, pandoc-types
-- for PathPiece instance for CI, Web.PathPieces.Local
, path-pieces
--, patience
, pem
, persistent
, persistent-email-address
, persistent-migration
, persistent-postgresql
, persistent-sqlite
, process
-- for generating hashids salt
, random
-- for Database.Persist.Local
, resourcet
, retry
, safe
, semialign
, shakespeare
-- for json debug highlighting in Yesod.RenderSource
, skylighting
, smtp-mail
, ssh
-- for holding actor key in a TVar
, stm
, template-haskell
, temporary
, text
, these
, time
, time-interval
, time-interval-aeson
, time-units
, tls
, transformers
-- probably should be replaced with lenses once I learn
, tuple
, typed-process
, first-class-families
, HList
-- For making git hooks executable, i.e. set file mode
, unix
-- For httpAPEither
, unliftio-core
, unliftio
, unordered-containers
, vary
, vector
, wai
, wai-extra
, wai-logger
, warp
-- for encoding and decoding of crypto public keys
, x509
-- for parsing darcs apply's changes XML from env var in
-- the vervis post-apply hook program
, xml
, xss-sanitize
, yaml
, yesod
, yesod-auth
, yesod-auth-account
, yesod-core
, yesod-form
, yesod-mail-send
, yesod-newsfeed
, yesod-static
, yesod-persistent
-- for reading gzipped darcs inventory via utils in
-- Data.Attoparsec.ByteString.Local
, zlib
hs-source-dirs: src
default-language: GHC2021
if flag(dev) || flag(library-only)
cpp-options: -DDEVELOPMENT
ghc-options: -Wall -fwarn-tabs -O0
-Werror=incomplete-patterns
-Werror=missing-fields
-Werror=overlapping-patterns
else
ghc-options: -Wall -fwarn-tabs -O2
executable vervis
main-is: main.hs
build-depends: base, vervis
hs-source-dirs: app
default-language: GHC2021
ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
if flag(library-only)
buildable: False
executable vervis-post-receive
main-is: main.hs
build-depends: base, vervis
hs-source-dirs: hook-git
default-language: GHC2021
ghc-options: -Wall
executable vervis-post-apply
main-is: main.hs
build-depends: base, vervis
hs-source-dirs: hook-darcs
default-language: GHC2021
ghc-options: -Wall
test-suite test
main-is: Spec.hs
default-extensions: TemplateHaskell
QuasiQuotes
OverloadedStrings
CPP
MultiParamTypeClasses
TypeFamilies
GADTs
GeneralizedNewtypeDeriving
FlexibleContexts
FlexibleInstances
EmptyDataDecls
NoMonomorphismRestriction
DeriveDataTypeable
ViewPatterns
TupleSections
build-depends: base
, vervis
, yesod-test
, yesod-core
, yesod
, persistent
, persistent-postgresql
, resourcet
, monad-logger
, shakespeare
, transformers
, hspec >= 2.0.0
, aeson
hs-source-dirs: test
default-language: GHC2021
ghc-options: -Wall
type: exitcode-stdio-1.0
-- test-suite test-graph
-- main-is: Test.hs
-- build-depends: base
-- , fgl
-- , fgl-arbitrary
-- , hspec
-- , vervis
-- hs-source-dirs: test
-- default-language: GHC2021
-- ghc-options: -Wall
-- type: exitcode-stdio-1.0