packages feed

project-m36-1.2.3: project-m36.cabal

Cabal-Version: 2.2
Name: project-m36
Version: 1.2.3
License: MIT
--note that this license specification is erroneous and only labeled MIT to appease hackage which does not recognize public domain packages in cabal >2.2- Project:M36 is dedicated to the public domain
Build-Type: Simple
Homepage: https://github.com/agentm/project-m36
Bug-Reports: https://github.com/agentm/project-m36/issues
Author: AgentM
Stability: experimental
Category: Relational Algebra
Maintainer: agentm@themactionfaction.com
Synopsis: Relational Algebra Engine
Description: A relational algebra engine which can be used to persist and query Haskell data types.
Extra-Source-Files: scripts/DateExamples.tutd scripts/multiline.tutd
Extra-Doc-Files: Changelog.markdown README.markdown
tested-with: GHC ==9.4.8 || ==9.6.6 || ==9.8.2 || ==9.10.1

Source-Repository head
    Type: git
    location: https://github.com/agentm/project-m36

Flag profiler
  Description: Enable Haskell-specific profiling support
  Default: False
  Manual: True

--flag to allow stack to use its older, pinned packages
Flag stack
    Description: build with stack and stackage
    Manual: True
    Default: False

Flag haskell-scripting
     Description: enables Haskell scripting which links against GHC as a library
     Manual: True
     Default: True

Library
    Build-Depends:
                  base >=4.14 && < 5,
                  ghc-paths,
                  mtl,
                  containers,
                  unordered-containers,
                  hashable,
                  haskeline,
                  directory,
                  MonadRandom,
                  random,
                  random-shuffle,
                  prettyprinter,
                  uuid >= 1.3.12,
                  cassava >= 0.4.5.1 && < 0.6,
                  text,
                  bytestring,
                  deepseq,
                  deepseq-generics,
                  vector,
                  parallel,
                  monad-parallel,
                  exceptions,
                  transformers,
                  gnuplot,
                  filepath,
                  zlib,
                  directory,
                  temporary,
                  stm,
                  time,
                  old-locale,
                  rset,
                  attoparsec,
                  either,
                  base64-bytestring,
                  data-interval,
                  extended-reals,
                  aeson >= 1.1,
                  path-pieces,
                  conduit,
                  resourcet,
                  http-api-data,
                  semigroups,
                  QuickCheck,
                  quickcheck-instances,
                  list-t,
                  stm-containers >= 0.2.15,
                  foldl,
                  optparse-applicative,
                  Glob,
                  cryptohash-sha256,
                  text-manipulate >= 0.2.0.1 && < 0.4,
                  winery >= 1.4,
                  curryer-rpc>=0.5.1,
                  network,
                  async,
                  vector-instances,
                  recursion-schemes,
                  streamly == 0.10.1,
                  convertible,
                  fast-builder,
                  scientific,
                  crypton,
                  streamly-core,
                  streamly,
                  network-byte-order,
                  sqlite-simple,
                  data-default,
                  process,
                  system-linux-proc,
                  megaparsec 
    if flag(haskell-scripting)
        Build-Depends: ghc >= 9.0
        CPP-Options: -DPM36_HASKELL_SCRIPTING
    if impl(ghc>= 8) && flag(haskell-scripting)
      build-depends:
        ghc-boot, ghci
    if impl(ghc>= 8.6)
        Build-Depends: deferred-folds
    if impl(ghc >= 9)
        Build-Depends: ghc-bignum
    if !impl(ghc >= 9)
        Build-Depends: integer-gmp
    Exposed-Modules: ProjectM36.Error,
                     ProjectM36.Transaction,
                     ProjectM36.TransactionGraph,
                     ProjectM36.TransactionGraph.Show,
                     ProjectM36.TransactionGraph.Persist,
                     ProjectM36.TransactionGraph.Merge,
                     ProjectM36.TransGraphRelationalExpression,
                     ProjectM36.Base,
                     ProjectM36.Serialise.Base,
                     ProjectM36.Serialise.Error,
                     ProjectM36.Serialise.LoginRoles,
                     ProjectM36.DataFrame,
                     ProjectM36.Attribute,
                     ProjectM36.AttributeNames,
                     ProjectM36.Tuple,
                     ProjectM36.TupleSet,
                     ProjectM36.RelationVariablesMentioned,
                     ProjectM36.Function,
                     ProjectM36.Atom,
                     ProjectM36.AtomFunction,
                     ProjectM36.BTree,
                     ProjectM36.ScriptSession,
                     ProjectM36.Shortcuts,
                     ProjectM36.DatabaseContextFunction,
                     ProjectM36.DatabaseContextFunctionUtils,
                     ProjectM36.Key,
                     ProjectM36.FunctionalDependency,
                     ProjectM36.DatabaseContext,
                     ProjectM36.DatabaseContext.Types,
                     ProjectM36.ValueMarker,
                     ProjectM36.DatabaseContextFunctions.Basic,
                     ProjectM36.TransactionGraph.Types,
                     ProjectM36.DateExamples,
                     ProjectM36.DisconnectedTransaction,
                     ProjectM36.AtomFunctionBody,
                     ProjectM36.RelationalExpression,
                     ProjectM36.Relation.Show.HTML,
                     ProjectM36.StaticOptimizer,
                     ProjectM36.Relation.Show.Term,
                     ProjectM36.WCWidth,
                     ProjectM36.Relation.Show.CSV,
                     ProjectM36.Relation.Show.Gnuplot,
                     ProjectM36.Relation.Parse.CSV,
                     ProjectM36.IsomorphicSchema,
                     ProjectM36.InclusionDependency,
                     ProjectM36.MerkleHash,
                     ProjectM36.Client,
                     ProjectM36.Client.Simple,
                     ProjectM36.Persist,
                     ProjectM36.AtomType,
                     ProjectM36.AttributeExpr,
                     ProjectM36.AtomFunctions.Basic,
                     ProjectM36.AtomFunctions.Primitive,
                     ProjectM36.AtomFunctionError,
                     ProjectM36.DatabaseContext.SelfTest,
                     ProjectM36.AtomFunctions.SelfTest,
                     ProjectM36.Atomable,
                     ProjectM36.Tupleable,
                     ProjectM36.Tupleable.Deriving,
                     ProjectM36.DataConstructorDef,
                     ProjectM36.DataTypes.Basic,
                     ProjectM36.DataTypes.Sorting,
                     ProjectM36.DataTypes.Day,
                     ProjectM36.DataTypes.DateTime,
                     ProjectM36.DataTypes.Either,
                     ProjectM36.DataTypes.Maybe,
                     ProjectM36.DataTypes.List,
                     ProjectM36.DataTypes.NonEmptyList,
                     ProjectM36.DataTypes.Primitive,
                     ProjectM36.DataTypes.Interval,
                     ProjectM36.DataTypes.ByteString,
                     ProjectM36.DataTypes.SQL.Null,
                     ProjectM36.SQLDatabaseContext,                     
                     ProjectM36.DatabaseContext.Basic,
                     ProjectM36.DatabaseContext.Fields,                     
                     ProjectM36.DatabaseContextExpr,                     
                     ProjectM36.MiscUtils,
                     ProjectM36.Notifications,
                     ProjectM36.Relation,
                     ProjectM36.Server,
                     ProjectM36.Server.Config,
                     ProjectM36.Server.EntryPoints,
                     ProjectM36.Server.ParseArgs,
                     ProjectM36.Server.RemoteCallTypes,
                     ProjectM36.Serialise.AtomFunctionError,
                     ProjectM36.Serialise.DataFrame,
                     ProjectM36.Serialise.IsomorphicSchema,
                     ProjectM36.Session,
                     ProjectM36.Sessions,
                     ProjectM36.Transaction.Persist,
                     ProjectM36.Transaction.Types,
                     ProjectM36.IsomorphicSchema.Types,
                     ProjectM36.TypeConstructor,
                     ProjectM36.TypeConstructorDef,
                     ProjectM36.FileLock,
                     ProjectM36.FSType,
                     ProjectM36.Arbitrary,
                     ProjectM36.GraphRefRelationalExpr,
                     ProjectM36.NormalizeExpr,
                     ProjectM36.TransactionInfo,
                     ProjectM36.WithNameExpr, 
                     ProjectM36.Trace,
                     ProjectM36.Streaming.Tuple,
                     ProjectM36.Streaming.RelationalExpression,     
                     ProjectM36.Cache.RelationalExprCache,
                     ProjectM36.Cache.Tuple,
                     ProjectM36.RelExprSize,
                     ProjectM36.HashSecurely,
                     ProjectM36.DDLType,
                     ProjectM36.RegisteredQuery,
                     ProjectM36.SQL.Convert,
                     ProjectM36.SQL.Select,
                     ProjectM36.SQL.Update,
                     ProjectM36.SQL.Insert,
                     ProjectM36.SQL.Delete,
                     ProjectM36.SQL.DBUpdate,
                     ProjectM36.SQL.CreateTable,
                     ProjectM36.SQL.DropTable,
                     ProjectM36.ReferencedTransactionIds,
                     ProjectM36.SystemMemory,
                     ProjectM36.PinnedRelationalExpr,
                     ProjectM36.AccessControlList,
                     ProjectM36.AccessControl,
                     ProjectM36.LoginRoles,
                     ProjectM36.PrettyBytes,
                     ProjectM36.Module
    GHC-Options: -Wall -rdynamic
    if os(windows)
      Build-Depends: Win32 >= 2.12
      Other-Modules: ProjectM36.Win32Handle
    else
      --219-  too many exported symbols under Windows and GHC 8.4
      GHC-Options: -rdynamic -fexternal-interpreter
      C-sources: cbits/DirectoryFsync.c, cbits/darwin_statfs.c
      Build-Depends: unix
    if os(linux)
      Build-Depends: linux-xattr
    CC-Options: -fPIC
    Hs-Source-Dirs: ./src/lib
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings, CPP, LambdaCase
    if !flag(stack)
      Build-Depends: deferred-folds 

Executable tutd
    if flag(haskell-scripting)
        Build-Depends: ghc >= 9.4
    Build-Depends: base >=4.17,
                   ghc-paths,
                   project-m36,
                   containers,
                   unordered-containers,
                   hashable,
                   transformers,
                   semigroups,
                   mtl,
                   uuid,
                   deepseq-generics,
                   MonadRandom,
                   vector,
                   text,
                   time,
                   process,
                   bytestring,
                   stm,
                   deepseq,
                   data-interval,
                   parallel,
                   cassava,
                   gnuplot,
                   directory,
                   filepath,
                   temporary,
                   megaparsec >= 5.2.0 && < 10,
                   haskeline,
                   random,
                   base64-bytestring,
                   optparse-applicative,
                   attoparsec,
                   stm-containers >= 1.0.0,
                   list-t,
                   parser-combinators,
                   curryer-rpc,
                   prettyprinter,
                   cryptohash-sha256,
                   --due to decode signature change
                   base16-bytestring >= 1.0.0.0,
                   http-conduit,
                   modern-uri,
                   http-types,
                   recursion-schemes,
                   data-default 
    Other-Modules: TutorialD.Interpreter,
                   TutorialD.Interpreter.Base,
                   TutorialD.Interpreter.DatabaseContextExpr,
                   TutorialD.Interpreter.RODatabaseContextOperator,
                   TutorialD.Interpreter.TransactionGraphOperator,
                   TutorialD.Interpreter.Import.BasicExamples,
                   TutorialD.Interpreter.InformationOperator,
                   TutorialD.Interpreter.Export.Base,
                   TutorialD.Interpreter.Export.CSV,
                   TutorialD.Interpreter.DatabaseContextIOOperator,
                   TutorialD.Interpreter.Import.Base,
                   TutorialD.Interpreter.Import.CSV,
                   TutorialD.Interpreter.Import.TutorialD,
                   TutorialD.Interpreter.RelationalExpr,
                   TutorialD.Interpreter.Types,
                   TutorialD.Interpreter.TransGraphRelationalOperator,
                   TutorialD.Interpreter.SchemaOperator,
                   TutorialD.Interpreter.LoginRolesOperator,
                   TutorialD.Printer,
                   ProjectM36.Cli,
                   ProjectM36.Interpreter
    main-is: TutorialD/tutd.hs
    CC-Options: -fPIC
    GHC-Options: -Wall -threaded -rtsopts
    if !os(windows)
      GHC-Options: -rdynamic
    if flag(profiler)
      GHC-Prof-Options: -fprof-auto -rtsopts -threaded
    Hs-Source-Dirs: ./src/bin
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings

Executable sqlegacy
    if flag(haskell-scripting)
        Build-Depends: ghc >= 9.4
    Build-Depends: base,
                   ghc-paths,
                   project-m36,
                   containers,
                   unordered-containers,
                   hashable,
                   transformers,
                   semigroups,
                   mtl,
                   uuid,
                   deepseq-generics,
                   MonadRandom, MonadRandom,
                   vector,
                   text,
                   time,
                   bytestring,
                   stm,
                   deepseq,
                   data-interval,
                   parallel,
                   cassava,
                   gnuplot,
                   directory,
                   filepath,
                   temporary,
                   megaparsec >= 5.2.0 && < 10,
                   haskeline,
                   random, MonadRandom,
                   base64-bytestring,
                   optparse-applicative,
                   attoparsec,
                   stm-containers >= 1.0.0,
                   list-t,
                   parser-combinators,
                   curryer-rpc,
                   prettyprinter,
                   cryptohash-sha256,
                   --due to decode signature change
                   base16-bytestring >= 1.0.0.0,
                   http-conduit,
                   modern-uri,
                   http-types,
                   recursion-schemes,
    Other-Modules: SQL.Interpreter.Base,
                   SQL.Interpreter.Select,
                   ProjectM36.Cli,
                   ProjectM36.Interpreter,
                   SQL.Interpreter,
                   SQL.Interpreter.TransactionGraphOperator,
                   SQL.Interpreter.ImportBasicExample,
                   SQL.Interpreter.Update,
                   SQL.Interpreter.Insert,
                   SQL.Interpreter.Delete,                   
                   SQL.Interpreter.DBUpdate,
                   SQL.Interpreter.CreateTable,
                   SQL.Interpreter.DropTable,
                   SQL.Interpreter.Info,
                   TutorialD.Printer,
                   TutorialD.Interpreter.Base
                   
    Main-Is: ./SQL/Interpreter/sqlegacy.hs
    if os(windows)
      GHC-Options: -Wall -threaded -rtsopts
    else
      GHC-Options: -Wall -threaded -rtsopts -rdynamic
    if flag(profiler)
      GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall
    Hs-Source-Dirs: ./src/bin      
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings

Executable project-m36-server
    if flag(haskell-scripting)
        Build-Depends: ghc >= 9.4
    Build-Depends: base,
                   ghc-paths,
                   transformers,
                   project-m36,
                   temporary,
                   data-interval,
                   deepseq,
                   uuid,
                   stm,
                   filepath,
                   directory,
                   parallel,
                   bytestring,
                   optparse-applicative,
                   time,
                   text,
                   deepseq-generics,
                   mtl,
                   containers,
                   hashable,
                   unordered-containers,
                   vector,
                   http-api-data,
                   stm-containers,
                   list-t,
                   base64-bytestring,
                   scientific
    Main-Is: ./src/bin/ProjectM36/Server/project-m36-server.hs
    if os(windows)
      GHC-Options: -Wall -threaded -rtsopts -with-rtsopts=-N
    else
      GHC-Options: -Wall -threaded -rtsopts -rdynamic -with-rtsopts=-N
    if flag(profiler)
      GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings

Executable bigrel
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, time, bytestring, uuid, stm, deepseq, deepseq-generics, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, optparse-applicative, stm-containers, list-t, ghc, ghc-paths, transformers, project-m36, random, MonadRandom, semigroups, parser-combinators, curryer-rpc
    Other-Modules: TutorialD.Interpreter.Base,
                   TutorialD.Interpreter.DatabaseContextExpr,
                   TutorialD.Interpreter.RelationalExpr,
                   TutorialD.Interpreter.Types,
                   ProjectM36.Interpreter,
                   ProjectM36.Cli
    main-is: benchmark/bigrel.hs
    GHC-Options: -Wall -threaded -rtsopts -with-rtsopts=-N
    HS-Source-Dirs: ./src/bin
    if flag(profiler)
      GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall
      if impl(ghc <9.4)
        GHC-Prof-Options: -eventlog

Common commontest
    Default-Language: Haskell2010
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, websockets, optparse-applicative, network, aeson, project-m36, random, MonadRandom, semigroups, parser-combinators, winery, curryer-rpc, prettyprinter, base64-bytestring, modern-uri, http-types, http-conduit, base16-bytestring, cryptohash-sha256, scientific, streamly
    Default-Extensions: OverloadedStrings
    GHC-Options: -Wall -threaded -with-rtsopts=-N
    Hs-Source-Dirs: test, src/bin
    Other-Modules: ProjectM36.Interpreter, ProjectM36.Cli

Benchmark basic-benchmark
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, criterion, project-m36, text, vector, containers, temporary, directory, filepath
    Main-Is: benchmark/Basic.hs
    Type: exitcode-stdio-1.0
    GHC-Options: -Wall -threaded -rtsopts -Wunused-packages
    HS-Source-Dirs: ./src/bin
    if flag(profiler)
      GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall

Benchmark btree-benchmark
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, criterion, project-m36, text, vector, transformers, containers, temporary, directory, filepath, deepseq, byteunits
    Main-Is: benchmark/BTree.hs
    Type: exitcode-stdio-1.0
    GHC-Options: -Wall -threaded -rtsopts -Wunused-packages
    HS-Source-Dirs: ./src/bin
    if flag(profiler)
      GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall

--benchmark inserts, updates, deletes for a basic use-case to shake out any space leaks
Benchmark update-exprs
  Default-Language: Haskell2010
  Default-Extensions: OverloadedStrings
  Build-Depends: base, criterion, project-m36, text, winery, random
  Main-Is: benchmark/Server.hs
  Type: exitcode-stdio-1.0
  GHC-Options: -Wall -threaded -rtsopts
  HS-Source-Dirs: ./src/bin
  if flag(profiler)
    GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall -fexternal-interpreter

Test-Suite test-sql
    import: commontest
    type: exitcode-stdio-1.0
    main-is: SQL/InterpreterTest.hs
    Other-Modules: SQL.Interpreter.Select, SQL.Interpreter.Base, TutorialD.Interpreter.Base, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.RODatabaseContextOperator, ProjectM36.Interpreter, SQL.Interpreter.CreateTable
                   TutorialD.Printer,
                   ProjectM36.Cli,
                   SQL.Interpreter.DBUpdate,
                   SQL.Interpreter.Delete,
                   SQL.Interpreter.DropTable,
                   SQL.Interpreter.Insert,
                   SQL.Interpreter.Update

    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, time, bytestring, uuid, stm, deepseq, deepseq-generics, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, stm-containers, list-t, project-m36, random, MonadRandom, semigroups, parser-combinators, prettyprinter, scientific, recursion-schemes
    
Test-Suite test-tutoriald
    import: commontest
    type: exitcode-stdio-1.0
    main-is: TutorialD/InterpreterTest.hs
    Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.SchemaOperator, TutorialD.Printer, ProjectM36.Interpreter, ProjectM36.Cli, TutorialD.Interpreter.LoginRolesOperator
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, time, bytestring, uuid, stm, deepseq, deepseq-generics, parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, stm-containers, list-t, project-m36, random, MonadRandom, semigroups, parser-combinators, prettyprinter, scientific

Test-Suite test-tutoriald-atomfunctionscript
    import: commontest
    type: exitcode-stdio-1.0
    Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Interpreter.SchemaOperator, TutorialD.Printer, ProjectM36.Interpreter, TutorialD.Interpreter.LoginRolesOperator
    main-is: TutorialD/Interpreter/AtomFunctionScript.hs

Test-Suite test-tutoriald-databasecontextfunctionscript
    import: commontest
    type: exitcode-stdio-1.0
    if flag(haskell-scripting)
        CPP-Options: -DPM36_HASKELL_SCRIPTING
    Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Interpreter.SchemaOperator, TutorialD.Printer, ProjectM36.Interpreter, TutorialD.Interpreter.LoginRolesOperator
    main-is: TutorialD/Interpreter/DatabaseContextFunctionScript.hs

Test-Suite test-relation
    import: commontest
    type: exitcode-stdio-1.0
    main-is: Relation/Basic.hs

Test-Suite test-static-optimizer
    import: commontest
    type: exitcode-stdio-1.0
    main-is: Relation/StaticOptimizer.hs

Test-Suite test-transactiongraph-persist
    import: commontest
    type: exitcode-stdio-1.0
    main-is: TransactionGraph/Persist.hs
    Other-Modules: TutorialD.Interpreter.Base, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Printer

Test-Suite test-relation-import-csv
    import: commontest
    type: exitcode-stdio-1.0
    main-is: Relation/Import/CSV.hs

Test-Suite test-tutoriald-import-tutoriald
    import: commontest
    type: exitcode-stdio-1.0
    build-depends: warp, wai
    main-is: TutorialD/Interpreter/Import/ImportTest.hs
    Other-Modules: TutorialD.Interpreter.Base, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Printer

Test-Suite test-tutoriald-import-module
    import: commontest
    type: exitcode-stdio-1.0
    main-is: TutorialD/Interpreter/Module.hs
    if flag(haskell-scripting)
        CPP-Options: -DPM36_HASKELL_SCRIPTING
    Other-Modules: TutorialD.Interpreter.Base, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Printer,         TutorialD.Interpreter,
        TutorialD.Interpreter.DatabaseContextIOOperator,
        TutorialD.Interpreter.Export.Base,
        TutorialD.Interpreter.Export.CSV,
        TutorialD.Interpreter.Import.CSV,
        TutorialD.Interpreter.InformationOperator,
        TutorialD.Interpreter.LoginRolesOperator,
        TutorialD.Interpreter.RODatabaseContextOperator,
        TutorialD.Interpreter.SchemaOperator,
        TutorialD.Interpreter.TestBase,
        TutorialD.Interpreter.TransGraphRelationalOperator,
        TutorialD.Interpreter.TransactionGraphOperator

Test-Suite test-relation-export-csv
    import: commontest
    type: exitcode-stdio-1.0
    main-is: Relation/Export/CSV.hs

Test-Suite test-transactiongraph-merge
    import: commontest
    type: exitcode-stdio-1.0
    main-is: TransactionGraph/Merge.hs


Test-Suite test-prettyprinter
    import: commontest
    type: exitcode-stdio-1.0
    main-is: TutorialD/PrinterTest.hs
    Other-Modules: TutorialD.Printer, TutorialD.Interpreter.Base, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types

benchmark bench
    import: commontest
    build-depends: criterion
    type: exitcode-stdio-1.0
    main-is: benchmark/Relation.hs

benchmark ondiskclient
    import: commontest
    type: exitcode-stdio-1.0
    main-is: benchmark/OnDiskClient.hs
    GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall
    GHC-Options: -rtsopts -Wall -threaded -finfo-table-map -fdistinct-constructor-tables
    if impl(ghc <9.4)
      GHC-Options: -eventlog
    Other-Modules: ProjectM36.Cli,
        TutorialD.Interpreter,
        TutorialD.Interpreter.Base,
        TutorialD.Interpreter.DatabaseContextExpr,
        TutorialD.Interpreter.DatabaseContextIOOperator,
        TutorialD.Interpreter.Export.Base,
        TutorialD.Interpreter.Export.CSV,
        TutorialD.Interpreter.Import.Base,
        TutorialD.Interpreter.Import.BasicExamples,
        TutorialD.Interpreter.Import.CSV,
        TutorialD.Interpreter.Import.TutorialD,
        TutorialD.Interpreter.InformationOperator,
        TutorialD.Interpreter.RODatabaseContextOperator,
        TutorialD.Interpreter.RelationalExpr,
        TutorialD.Interpreter.SchemaOperator,
        TutorialD.Interpreter.TransGraphRelationalOperator,
        TutorialD.Interpreter.TransactionGraphOperator,
        TutorialD.Interpreter.Types,
        TutorialD.Interpreter.LoginRolesOperator,
        TutorialD.Printer

Test-Suite test-server
    import: commontest
    type: exitcode-stdio-1.0
    main-is: Server/Main.hs

Executable Example-SimpleClient
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, ghc, ghc-paths, project-m36, random, MonadRandom, curryer-rpc
    Main-Is: examples/SimpleClient.hs
    GHC-Options: -Wall -threaded

Executable Example-OutOfTheTarpit
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, aeson, path-pieces, either, conduit, http-api-data, template-haskell, ghc, ghc-paths, project-m36, winery, random
    Main-Is: examples/out_of_the_tarpit.hs
    GHC-Options: -Wall -threaded

Executable Example-Blog
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, aeson, path-pieces, either, conduit, http-api-data, template-haskell, ghc, ghc-paths, project-m36, scotty >= 0.30, blaze-html, http-types, winery, random
    Main-Is: examples/blog.hs
    GHC-Options: -Wall -threaded

Executable Example-Hair
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, aeson, path-pieces, either, conduit, http-api-data, template-haskell, ghc, ghc-paths, project-m36, winery, random
    Main-Is: examples/hair.hs
    GHC-Options: -Wall -threaded

Executable Example-Plantfarm
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends:  aeson, barbies, base, containers, deepseq, hashable, project-m36, random, scotty >= 0.22, text, winery, exceptions
    Main-Is: examples/Plantfarm.hs
    GHC-Options: -Wall -threaded

Executable Example-CustomTupleable
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, aeson, path-pieces, either, conduit, http-api-data, template-haskell, ghc, ghc-paths, project-m36, winery
    Main-Is: examples/CustomTupleable.hs
    GHC-Options: -Wall -threaded

Executable Example-Hospital
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, transformers, stm-containers, list-t, aeson, path-pieces, either, conduit, http-api-data, template-haskell, ghc, ghc-paths, project-m36, winery, random
    Main-Is: examples/Hospital.hs
    GHC-Options: -Wall -threaded
               

Executable Example-DerivingCustomTupleable
    Default-Language: Haskell2010
    Build-Depends: base, text, deepseq, project-m36, winery
    Main-Is: examples/DerivingCustomTupleable.hs
    GHC-Options: -Wall -threaded

Executable Example-Zoo
    Default-Language: Haskell2010
    Build-Depends: base, text, deepseq, project-m36, winery, random, time
    Main-Is: examples/zoo.hs
    GHC-Options: -Wall -threaded
         

Test-Suite test-scripts
    import: commontest
    type: exitcode-stdio-1.0
    main-is: scripts.hs
    Other-Modules: TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Printer, TutorialD.Interpreter.LoginRolesOperator

Executable project-m36-websocket-server
    Default-Language: Haskell2010
    Build-Depends: base, aeson, path-pieces, either, conduit, http-api-data, template-haskell, websockets, optparse-applicative, project-m36, containers, bytestring, text, vector, uuid, megaparsec, haskeline, mtl, directory, base64-bytestring, random, MonadRandom, time, semigroups, attoparsec, parser-combinators, prettyprinter, network, modern-uri, http-conduit, base16-bytestring, http-types, cryptohash-sha256, wai, wai-websockets, warp, warp-tls, scientific, curryer-rpc
    Main-Is: ProjectM36/Server/WebSocket/websocket-server.hs
    Other-Modules:  ProjectM36.Cli, ProjectM36.Client.Json, ProjectM36.Server.RemoteCallTypes.Json, ProjectM36.Server.WebSocket, TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.SchemaOperator, TutorialD.Printer, ProjectM36.Interpreter, TutorialD.Interpreter.LoginRolesOperator
    GHC-Options: -Wall -threaded
    Hs-Source-Dirs: ./src/bin
    Default-Extensions: OverloadedStrings

Test-Suite test-websocket-server
    import: commontest
    type: exitcode-stdio-1.0
    main-is: Server/WebSocket.hs
    Other-Modules: TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.TransactionGraphOperator, ProjectM36.Client.Json, ProjectM36.Server.RemoteCallTypes.Json, ProjectM36.Server.WebSocket, TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.Types, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.SchemaOperator, TutorialD.Printer, ProjectM36.Interpreter, ProjectM36.Cli, TutorialD.Interpreter.LoginRolesOperator

Test-Suite test-isomorphic-schemas
    import: commontest
    type: exitcode-stdio-1.0
    main-is: IsomorphicSchema.hs

Test-Suite test-atomable
    import: commontest
    type: exitcode-stdio-1.0
    main-is: Relation/Atomable.hs
    Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.SchemaOperator, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Printer, ProjectM36.Cli, TutorialD.Interpreter.LoginRolesOperator

Test-Suite test-multiprocess-access
    import: commontest
    type: exitcode-stdio-1.0
    main-is: MultiProcessDatabaseAccess.hs

Test-Suite test-transactiongraph-automerge
    import: commontest
    type: exitcode-stdio-1.0
    main-is: TransactionGraph/Automerge.hs
    Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr, TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.SchemaOperator, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Printer, ProjectM36.Cli, TutorialD.Interpreter.LoginRolesOperator

Test-Suite test-tupleable
    import: commontest
    type: exitcode-stdio-1.0
    main-is: Relation/Tupleable.hs

Test-Suite test-client-simple
    import: commontest
    Main-Is: Client/Simple.hs
    type: exitcode-stdio-1.0

-- test for file handle leaks
Executable handles
    Default-Language: Haskell2010
    Default-Extensions: OverloadedStrings
    Build-Depends: base, HUnit, Cabal, containers, hashable, unordered-containers, mtl, vector, time, bytestring, uuid, stm, deepseq, deepseq-generics,parallel, cassava, attoparsec, gnuplot, directory, temporary, haskeline, megaparsec, text, base64-bytestring, data-interval, filepath, optparse-applicative, stm-containers, list-t, ghc, ghc-paths, transformers, project-m36, random, MonadRandom, semigroups, parser-combinators, prettyprinter, modern-uri, http-types, http-conduit, base16-bytestring, cryptohash-sha256, curryer-rpc
    main-is: benchmark/Handles.hs
    Other-Modules: TutorialD.Interpreter,
      TutorialD.Interpreter.Base,
      TutorialD.Interpreter.DatabaseContextExpr,
      TutorialD.Interpreter.DatabaseContextIOOperator,
      TutorialD.Interpreter.Export.Base,
      TutorialD.Interpreter.Export.CSV,
      TutorialD.Interpreter.Import.Base,
      TutorialD.Interpreter.Import.BasicExamples,
      TutorialD.Interpreter.Import.CSV,
      TutorialD.Interpreter.Import.TutorialD,
      TutorialD.Interpreter.InformationOperator,
      TutorialD.Interpreter.RODatabaseContextOperator,
      TutorialD.Interpreter.RelationalExpr,
      TutorialD.Interpreter.SchemaOperator,
      TutorialD.Interpreter.TransGraphRelationalOperator,
      TutorialD.Interpreter.TransactionGraphOperator,
      TutorialD.Interpreter.Types,
      TutorialD.Printer,
      ProjectM36.Interpreter,
      ProjectM36.Cli,
      TutorialD.Interpreter.LoginRolesOperator
    GHC-Options: -Wall -threaded -rtsopts
    HS-Source-Dirs: ./src/bin
    if flag(profiler)
      GHC-Prof-Options: -fprof-auto -rtsopts -threaded -Wall

Test-Suite test-dataframe
    import: commontest
    type: exitcode-stdio-1.0
    Main-Is: DataFrame.hs
    Other-Modules: TutorialD.Interpreter, TutorialD.Interpreter.Base, TutorialD.Interpreter.DatabaseContextExpr,  TutorialD.Interpreter.DatabaseContextIOOperator, TutorialD.Interpreter.Export.Base, TutorialD.Interpreter.Export.CSV, TutorialD.Interpreter.Import.Base, TutorialD.Interpreter.Import.BasicExamples, TutorialD.Interpreter.Import.CSV, TutorialD.Interpreter.Import.TutorialD, TutorialD.Interpreter.InformationOperator, TutorialD.Interpreter.RODatabaseContextOperator, TutorialD.Interpreter.RelationalExpr, TutorialD.Interpreter.SchemaOperator, TutorialD.Interpreter.TestBase, TutorialD.Interpreter.TransGraphRelationalOperator, TutorialD.Interpreter.TransactionGraphOperator, TutorialD.Interpreter.Types, TutorialD.Printer, ProjectM36.Interpreter, TutorialD.Interpreter.LoginRolesOperator

Test-Suite test-cache
   import: commontest
   type: exitcode-stdio-1.0
   Main-Is: Cache.hs

Test-Suite test-accesscontrollist
    import: commontest
    type: exitcode-stdio-1.0
    Main-Is: AccessControlList.hs

Test-Suite test-loginroles
    import: commontest
    type: exitcode-stdio-1.0    
    Main-Is: LoginRoles.hs

Test-Suite test-accesscontrol
    import: commontest
    type: exitcode-stdio-1.0    
    Main-Is: AccessControl.hs
    Other-Modules:
        TutorialD.Interpreter
        TutorialD.Interpreter.Base
        TutorialD.Interpreter.DatabaseContextExpr
        TutorialD.Interpreter.DatabaseContextIOOperator
        TutorialD.Interpreter.Export.Base
        TutorialD.Interpreter.Export.CSV
        TutorialD.Interpreter.Import.Base
        TutorialD.Interpreter.Import.BasicExamples
        TutorialD.Interpreter.Import.CSV
        TutorialD.Interpreter.Import.TutorialD
        TutorialD.Interpreter.InformationOperator
        TutorialD.Interpreter.LoginRolesOperator
        TutorialD.Interpreter.RODatabaseContextOperator
        TutorialD.Interpreter.RelationalExpr
        TutorialD.Interpreter.SchemaOperator
        TutorialD.Interpreter.TestBase
        TutorialD.Interpreter.TransGraphRelationalOperator
        TutorialD.Interpreter.TransactionGraphOperator
        TutorialD.Interpreter.Types
        TutorialD.Printer