diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 984fe0b..bbaf3ae 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,39 +1,48 @@ name: "Build" on: [push, pull_request] jobs: - build: - runs-on: ${{matrix.os}} + generate-matrix: + name: "Generate matrix from cabal" + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + runs-on: ubuntu-latest + steps: + - name: Extract the tested GHC versions + id: set-matrix + uses: kleidukos/get-tested@v0.1.6.0 + with: + cabal-file: souffle-haskell.cabal + ubuntu: true + version: 0.1.6.0 + test: + name: ${{ matrix.ghc }} on ${{ matrix.os }} + needs: generate-matrix + runs-on: ${{ matrix.os }} strategy: - matrix: - os: [ubuntu-latest] + matrix: ${{ fromJSON(needs.generate-matrix.outputs.matrix) }} steps: - - name: Checkout - uses: actions/checkout@v3 - - # Workaround for 'No space left on device' error - - name: free disk space - run: | - sudo docker rmi $(docker image ls -aq) >/dev/null 2>&1 || true - sudo swapoff -a - sudo rm -f /swapfile - sudo apt clean - df -h - - # In this step, this action saves a list of existing images, the cache is created without them in the post run. - # It also restores the cache if it exists. - - uses: jpribyl/action-docker-layer-caching@v0.1.1 - continue-on-error: true # Ignore the failure of a step and avoid terminating the job. - - - name: Build and test + - name: Checkout base repo + uses: actions/checkout@v4 + - name: Set up Haskell + id: setup-haskell + uses: haskell-actions/setup@v2 + with: + ghc-version: ${{ matrix.ghc }} + cabal-version: 'latest' + - name: Install Souffle run: | - set -eo pipefail - export TIMESTAMP=$(date +%s) - docker build -f Dockerfile . -t souffle-haskell:$TIMESTAMP | tee souffle-haskell-lang-${{matrix.os}}.log - docker run --rm souffle-haskell:$TIMESTAMP bash -c "make tests" | tee -a souffle-haskell-lang-${{matrix.os}}.log - - - name: Upload logs - if: ${{ always() }} - uses: actions/upload-artifact@v2 + wget https://github.com/souffle-lang/souffle/releases/download/2.3/x86_64-ubuntu-2004-souffle-2.3-Linux.deb + sudo apt install mcpp libffi7 + sudo dpkg -i ./x86_64-ubuntu-2004-souffle-2.3-Linux.deb + - name: Cache + uses: actions/cache@v4.0.0 with: - name: souffle-haskell-lang-${{matrix.os}}.log - path: souffle-haskell-lang-${{matrix.os}}.log + path: ${{ steps.setup-haskell.outputs.cabal-store }} + key: ${{ runner.os }}-ghc-${{ matrix.ghc }}-cabal-${{ hashFiles('**/plan.json') }} + restore-keys: ${{ runner.os }}-ghc-${{ matrix.ghc }}- + - name: Build + run: cabal build + - name: Test + run: | + cabal install hspec-discover + cabal test diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..984fe0b --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,39 @@ +name: "Build" +on: [push, pull_request] +jobs: + build: + runs-on: ${{matrix.os}} + strategy: + matrix: + os: [ubuntu-latest] + steps: + - name: Checkout + uses: actions/checkout@v3 + + # Workaround for 'No space left on device' error + - name: free disk space + run: | + sudo docker rmi $(docker image ls -aq) >/dev/null 2>&1 || true + sudo swapoff -a + sudo rm -f /swapfile + sudo apt clean + df -h + + # In this step, this action saves a list of existing images, the cache is created without them in the post run. + # It also restores the cache if it exists. + - uses: jpribyl/action-docker-layer-caching@v0.1.1 + continue-on-error: true # Ignore the failure of a step and avoid terminating the job. + + - name: Build and test + run: | + set -eo pipefail + export TIMESTAMP=$(date +%s) + docker build -f Dockerfile . -t souffle-haskell:$TIMESTAMP | tee souffle-haskell-lang-${{matrix.os}}.log + docker run --rm souffle-haskell:$TIMESTAMP bash -c "make tests" | tee -a souffle-haskell-lang-${{matrix.os}}.log + + - name: Upload logs + if: ${{ always() }} + uses: actions/upload-artifact@v2 + with: + name: souffle-haskell-lang-${{matrix.os}}.log + path: souffle-haskell-lang-${{matrix.os}}.log diff --git a/Makefile b/Makefile index 49da490..4e10210 100644 --- a/Makefile +++ b/Makefile @@ -1,28 +1,35 @@ - # NOTE: these all assume cabal v3 build: configure @cabal build -configure: - @hpack --force && cabal configure --enable-tests +configure: ## Configure the project + @cabal configure --enable-tests --enable-benchmarks -clean: +clean: ## Clean up the build artifacts @cabal clean -lint: - @hlint . +lint: ## Run the code linter (HLint) + @find tests lib benchmark -name "*.hs" | xargs -P $(PROCS) -I {} hlint --refactor-options="-i" --refactor {} + +style: ## Run the code styler (and cabal-fmt) + @cabal-fmt -i *.cabal -hoogle: +hoogle: ## Start a hoogle server on port 8080 hoogle server --local -p 8080 -tests: configure +tests: configure ## Run tests DATALOG_DIR=tests/fixtures/ cabal run souffle-haskell-test -docs: +docs: ## Generate the documentation @cabal haddock -bench: +bench: ## Run the benchmarks @cabal run souffle-haskell-benchmarks -- --output /tmp/benchmarks.html -.PHONY: hoogle lint clean configure build tests docs bench +help: ## Display this help message + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.* ?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +.PHONY: all $(MAKECMDGOALS) + +.DEFAULT_GOAL := help diff --git a/lib/Language/Souffle/Compiled.hs b/lib/Language/Souffle/Compiled.hs index a781a2e..fc29bec 100644 --- a/lib/Language/Souffle/Compiled.hs +++ b/lib/Language/Souffle/Compiled.hs @@ -59,6 +59,7 @@ import Language.Souffle.Class import qualified Language.Souffle.Internal as Internal import Language.Souffle.Marshal import Control.Concurrent +import Control.Monad (when) type ByteCount :: Type diff --git a/lib/Language/Souffle/Interpreted.hs b/lib/Language/Souffle/Interpreted.hs index 75a9db8..bae427c 100644 --- a/lib/Language/Souffle/Interpreted.hs +++ b/lib/Language/Souffle/Interpreted.hs @@ -35,7 +35,7 @@ import Data.Kind (Type, Constraint) import Control.DeepSeq (deepseq) import Control.Exception (ErrorCall(..), throwIO, bracket) -import Control.Monad.State.Strict +import Control.Monad.State.Strict (State, MonadState (state), modify, evalState, execState) import Data.IORef import Data.Foldable (traverse_) import qualified Data.List as List hiding (init) @@ -46,8 +46,6 @@ import qualified Data.Array as A import qualified Data.Text as T import qualified Data.Vector as V import Data.Word -import Language.Souffle.Class -import Language.Souffle.Marshal import System.Directory import System.Environment import System.Exit @@ -57,6 +55,11 @@ import System.IO.Temp import System.Process import Text.Printf +import Language.Souffle.Class +import Language.Souffle.Marshal +import Control.Monad.IO.Class (MonadIO (..)) +import Control.Monad (forM, (<$!>), forM_) + -- | A monad for executing Souffle-related actions in. type SouffleM :: Type -> Type diff --git a/souffle-haskell.cabal b/souffle-haskell.cabal index ed8a7e3..ecd71b0 100644 --- a/souffle-haskell.cabal +++ b/souffle-haskell.cabal @@ -1,346 +1,372 @@ -cabal-version: 2.2 +cabal-version: 2.2 -- This file has been generated from package.yaml by hpack version 0.35.2. -- -- see: https://github.com/sol/hpack -name: souffle-haskell -version: 4.0.0 -synopsis: Souffle Datalog bindings for Haskell -description: Souffle Datalog bindings for Haskell. -category: Logic Programming, Foreign Binding, Bindings -homepage: https://github.com/luc-tielen/souffle-haskell#README.md -bug-reports: https://github.com/luc-tielen/souffle-haskell/issues -author: Luc Tielen -maintainer: luc.tielen@gmail.com -copyright: 2022 Luc Tielen -license: MIT -license-file: LICENSE -build-type: Simple +name: souffle-haskell +version: 4.0.0 +synopsis: Souffle Datalog bindings for Haskell +description: Souffle Datalog bindings for Haskell. +category: Logic Programming, Foreign Binding, Bindings +homepage: https://github.com/luc-tielen/souffle-haskell#README.md +bug-reports: https://github.com/luc-tielen/souffle-haskell/issues +author: Luc Tielen +maintainer: luc.tielen@gmail.com +copyright: 2022 Luc Tielen +license: MIT +license-file: LICENSE +build-type: Simple extra-source-files: - cbits/souffle.h - cbits/souffle/CompiledSouffle.h - cbits/souffle/datastructure/Brie.h - cbits/souffle/datastructure/BTree.h - cbits/souffle/datastructure/BTreeDelete.h - cbits/souffle/datastructure/BTreeUtil.h - cbits/souffle/datastructure/ConcurrentFlyweight.h - cbits/souffle/datastructure/ConcurrentInsertOnlyHashMap.h - cbits/souffle/datastructure/EquivalenceRelation.h - cbits/souffle/datastructure/LambdaBTree.h - cbits/souffle/datastructure/PiggyList.h - cbits/souffle/datastructure/RecordTableImpl.h - cbits/souffle/datastructure/SymbolTableImpl.h - cbits/souffle/datastructure/Table.h - cbits/souffle/datastructure/UnionFind.h - cbits/souffle/io/gzfstream.h - cbits/souffle/io/IOSystem.h - cbits/souffle/io/ReadStream.h - cbits/souffle/io/ReadStreamCSV.h - cbits/souffle/io/ReadStreamJSON.h - cbits/souffle/io/ReadStreamSQLite.h - cbits/souffle/io/SerialisationStream.h - cbits/souffle/io/WriteStream.h - cbits/souffle/io/WriteStreamCSV.h - cbits/souffle/io/WriteStreamJSON.h - cbits/souffle/io/WriteStreamSQLite.h - cbits/souffle/RamTypes.h - cbits/souffle/RecordTable.h - cbits/souffle/SignalHandler.h - cbits/souffle/SouffleInterface.h - cbits/souffle/SymbolTable.h - cbits/souffle/utility/CacheUtil.h - cbits/souffle/utility/ContainerUtil.h - cbits/souffle/utility/DynamicCasting.h - cbits/souffle/utility/EvaluatorUtil.h - cbits/souffle/utility/FileUtil.h - cbits/souffle/utility/General.h - cbits/souffle/utility/Iteration.h - cbits/souffle/utility/json11.h - cbits/souffle/utility/MiscUtil.h - cbits/souffle/utility/ParallelUtil.h - cbits/souffle/utility/span.h - cbits/souffle/utility/StreamUtil.h - cbits/souffle/utility/StringUtil.h - cbits/souffle/utility/tinyformat.h - cbits/souffle/utility/Types.h - cbits/souffle.cpp - cbits/souffle/LICENSE + cbits/souffle/CompiledSouffle.h + cbits/souffle/datastructure/Brie.h + cbits/souffle/datastructure/BTree.h + cbits/souffle/datastructure/BTreeDelete.h + cbits/souffle/datastructure/BTreeUtil.h + cbits/souffle/datastructure/ConcurrentFlyweight.h + cbits/souffle/datastructure/ConcurrentInsertOnlyHashMap.h + cbits/souffle/datastructure/EquivalenceRelation.h + cbits/souffle/datastructure/LambdaBTree.h + cbits/souffle/datastructure/PiggyList.h + cbits/souffle/datastructure/RecordTableImpl.h + cbits/souffle/datastructure/SymbolTableImpl.h + cbits/souffle/datastructure/Table.h + cbits/souffle/datastructure/UnionFind.h + cbits/souffle/io/gzfstream.h + cbits/souffle/io/IOSystem.h + cbits/souffle/io/ReadStream.h + cbits/souffle/io/ReadStreamCSV.h + cbits/souffle/io/ReadStreamJSON.h + cbits/souffle/io/ReadStreamSQLite.h + cbits/souffle/io/SerialisationStream.h + cbits/souffle/io/WriteStream.h + cbits/souffle/io/WriteStreamCSV.h + cbits/souffle/io/WriteStreamJSON.h + cbits/souffle/io/WriteStreamSQLite.h + cbits/souffle/LICENSE + cbits/souffle/RamTypes.h + cbits/souffle/RecordTable.h + cbits/souffle/SignalHandler.h + cbits/souffle/SouffleInterface.h + cbits/souffle/SymbolTable.h + cbits/souffle/utility/CacheUtil.h + cbits/souffle/utility/ContainerUtil.h + cbits/souffle/utility/DynamicCasting.h + cbits/souffle/utility/EvaluatorUtil.h + cbits/souffle/utility/FileUtil.h + cbits/souffle/utility/General.h + cbits/souffle/utility/Iteration.h + cbits/souffle/utility/json11.h + cbits/souffle/utility/MiscUtil.h + cbits/souffle/utility/ParallelUtil.h + cbits/souffle/utility/span.h + cbits/souffle/utility/StreamUtil.h + cbits/souffle/utility/StringUtil.h + cbits/souffle/utility/tinyformat.h + cbits/souffle/utility/Types.h + cbits/souffle.cpp + cbits/souffle.h + extra-doc-files: - README.md - CHANGELOG.md - LICENSE + CHANGELOG.md + LICENSE + README.md + +tested-with: GHC ==9.2.8 || ==9.4.8 || ==9.6.4 source-repository head - type: git + type: git location: https://github.com/luc-tielen/souffle-haskell library exposed-modules: - Language.Souffle.Analysis - Language.Souffle.Class - Language.Souffle.Compiled - Language.Souffle.Internal - Language.Souffle.Internal.Bindings - Language.Souffle.Interpreted - Language.Souffle.Marshal - other-modules: - Paths_souffle_haskell - autogen-modules: - Paths_souffle_haskell - hs-source-dirs: - lib + Language.Souffle.Analysis + Language.Souffle.Class + Language.Souffle.Compiled + Language.Souffle.Internal + Language.Souffle.Internal.Bindings + Language.Souffle.Interpreted + Language.Souffle.Marshal + + other-modules: Paths_souffle_haskell + autogen-modules: Paths_souffle_haskell + hs-source-dirs: lib default-extensions: - DerivingStrategies - FlexibleContexts - LambdaCase - OverloadedStrings - ScopedTypeVariables - StandaloneKindSignatures - ghc-options: -Wall -Weverything -Wno-safe -Wno-unsafe -Wno-implicit-prelude -Wno-missed-specializations -Wno-all-missed-specializations -Wno-missing-import-lists -Wno-type-defaults -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode -Wno-operator-whitespace -optP-Wno-nonportable-include-path -fhide-source-paths -fno-show-valid-hole-fits -fno-sort-valid-hole-fits - cxx-options: -std=c++17 -Wall - include-dirs: - cbits - cbits/souffle + DerivingStrategies + FlexibleContexts + LambdaCase + OverloadedStrings + ScopedTypeVariables + StandaloneKindSignatures + + ghc-options: + -Wall -Weverything -Wno-safe -Wno-unsafe -Wno-implicit-prelude + -Wno-missed-specializations -Wno-all-missed-specializations + -Wno-missing-import-lists -Wno-type-defaults + -Wno-missing-local-signatures -Wno-monomorphism-restriction + -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode + -Wno-operator-whitespace -optP-Wno-nonportable-include-path + -fhide-source-paths -fno-show-valid-hole-fits + -fno-sort-valid-hole-fits + + cxx-options: -std=c++17 -Wall + include-dirs: cbits cbits/souffle install-includes: - souffle/CompiledSouffle.h - souffle/RamTypes.h - souffle/RecordTable.h - souffle/utility/span.h - souffle/SignalHandler.h - souffle/SouffleInterface.h - souffle/SymbolTable.h - souffle/utility/MiscUtil.h - souffle/utility/General.h - souffle/utility/Iteration.h - souffle/utility/Types.h - souffle/utility/tinyformat.h - souffle/datastructure/BTreeDelete.h - souffle/datastructure/BTreeUtil.h - souffle/utility/CacheUtil.h - souffle/utility/ContainerUtil.h - souffle/utility/DynamicCasting.h - souffle/utility/ParallelUtil.h - souffle/datastructure/Brie.h - souffle/utility/StreamUtil.h - souffle/datastructure/EquivalenceRelation.h - souffle/datastructure/LambdaBTree.h - souffle/datastructure/BTree.h - souffle/datastructure/PiggyList.h - souffle/datastructure/UnionFind.h - souffle/datastructure/RecordTableImpl.h - souffle/datastructure/ConcurrentFlyweight.h - souffle/datastructure/ConcurrentInsertOnlyHashMap.h - souffle/datastructure/SymbolTableImpl.h - souffle/datastructure/Table.h - souffle/io/IOSystem.h - souffle/io/ReadStream.h - souffle/io/SerialisationStream.h - souffle/utility/StringUtil.h - souffle/utility/json11.h - souffle/io/ReadStreamCSV.h - souffle/utility/FileUtil.h - souffle/io/gzfstream.h - souffle/io/ReadStreamJSON.h - souffle/io/WriteStream.h - souffle/io/WriteStreamCSV.h - souffle/io/WriteStreamJSON.h - souffle/io/ReadStreamSQLite.h - souffle/io/WriteStreamSQLite.h - souffle/utility/EvaluatorUtil.h - souffle/utility/EvaluatorUtil.h - cxx-sources: - cbits/souffle.cpp + souffle/CompiledSouffle.h + souffle/datastructure/Brie.h + souffle/datastructure/BTree.h + souffle/datastructure/BTreeDelete.h + souffle/datastructure/BTreeUtil.h + souffle/datastructure/ConcurrentFlyweight.h + souffle/datastructure/ConcurrentInsertOnlyHashMap.h + souffle/datastructure/EquivalenceRelation.h + souffle/datastructure/LambdaBTree.h + souffle/datastructure/PiggyList.h + souffle/datastructure/RecordTableImpl.h + souffle/datastructure/SymbolTableImpl.h + souffle/datastructure/Table.h + souffle/datastructure/UnionFind.h + souffle/io/gzfstream.h + souffle/io/IOSystem.h + souffle/io/ReadStream.h + souffle/io/ReadStreamCSV.h + souffle/io/ReadStreamJSON.h + souffle/io/ReadStreamSQLite.h + souffle/io/SerialisationStream.h + souffle/io/WriteStream.h + souffle/io/WriteStreamCSV.h + souffle/io/WriteStreamJSON.h + souffle/io/WriteStreamSQLite.h + souffle/RamTypes.h + souffle/RecordTable.h + souffle/SignalHandler.h + souffle/SouffleInterface.h + souffle/SymbolTable.h + souffle/utility/CacheUtil.h + souffle/utility/ContainerUtil.h + souffle/utility/DynamicCasting.h + souffle/utility/EvaluatorUtil.h + souffle/utility/FileUtil.h + souffle/utility/General.h + souffle/utility/Iteration.h + souffle/utility/json11.h + souffle/utility/MiscUtil.h + souffle/utility/ParallelUtil.h + souffle/utility/span.h + souffle/utility/StreamUtil.h + souffle/utility/StringUtil.h + souffle/utility/tinyformat.h + souffle/utility/Types.h + + cxx-sources: cbits/souffle.cpp build-depends: - array <=1.0 - , base >=4.12 && <5 - , bytestring >=0.10.10 && <1 - , deepseq >=1.4.4 && <2 - , directory >=1.3.3 && <2 - , filepath >=1.4.2 && <2 - , mtl >=2.0 && <3 - , process >=1.6 && <2 - , profunctors >=5.6.2 && <6 - , temporary >=1.3 && <2 - , text >=2.0.2 && <3 - , vector <=1.0 - default-language: Haskell2010 + , array <1.0.0 + , base >=4.12 && <5 + , bytestring >=0.10.10 && <1 + , deepseq >=1.4.4 && <2 + , directory >=1.3.3 && <2 + , filepath >=1.4.2 && <2 + , mtl >=2.0 && <3 + , process >=1.6 && <2 + , profunctors >=5.6.2 && <6 + , temporary >=1.3 && <2 + , text >=2.0.2 && <3 + , vector <1.0.0 + + default-language: Haskell2010 + if os(linux) - extra-libraries: - stdc++ + extra-libraries: stdc++ test-suite souffle-haskell-test - type: exitcode-stdio-1.0 - main-is: test.hs + type: exitcode-stdio-1.0 + main-is: test.hs other-modules: - Test.Language.Souffle.AnalysisSpec - Test.Language.Souffle.CompiledSpec - Test.Language.Souffle.DerivingViaSpec - Test.Language.Souffle.InterpretedSpec - Test.Language.Souffle.MarshalSpec - Paths_souffle_haskell - autogen-modules: - Paths_souffle_haskell - hs-source-dirs: - tests + Paths_souffle_haskell + Test.Language.Souffle.AnalysisSpec + Test.Language.Souffle.CompiledSpec + Test.Language.Souffle.DerivingViaSpec + Test.Language.Souffle.InterpretedSpec + Test.Language.Souffle.MarshalSpec + + autogen-modules: Paths_souffle_haskell + hs-source-dirs: tests default-extensions: - DerivingStrategies - FlexibleContexts - LambdaCase - OverloadedStrings - ScopedTypeVariables - StandaloneKindSignatures - ghc-options: -Wall -Weverything -Wno-safe -Wno-unsafe -Wno-implicit-prelude -Wno-missed-specializations -Wno-all-missed-specializations -Wno-missing-import-lists -Wno-type-defaults -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode -Wno-operator-whitespace -optP-Wno-nonportable-include-path -fhide-source-paths -fno-show-valid-hole-fits -fno-sort-valid-hole-fits -Wno-missing-kind-signatures -Wno-operator-whitespace - cxx-options: -std=c++17 -D__EMBEDDED_SOUFFLE__ - include-dirs: - cbits - cbits/souffle + DerivingStrategies + FlexibleContexts + LambdaCase + OverloadedStrings + ScopedTypeVariables + StandaloneKindSignatures + + ghc-options: + -Wall -Weverything -Wno-safe -Wno-unsafe -Wno-implicit-prelude + -Wno-missed-specializations -Wno-all-missed-specializations + -Wno-missing-import-lists -Wno-type-defaults + -Wno-missing-local-signatures -Wno-monomorphism-restriction + -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode + -Wno-operator-whitespace -optP-Wno-nonportable-include-path + -fhide-source-paths -fno-show-valid-hole-fits + -fno-sort-valid-hole-fits -Wno-missing-kind-signatures + -Wno-operator-whitespace + + cxx-options: -std=c++17 -D__EMBEDDED_SOUFFLE__ + include-dirs: cbits cbits/souffle install-includes: - souffle/CompiledSouffle.h - souffle/RamTypes.h - souffle/RecordTable.h - souffle/utility/span.h - souffle/SignalHandler.h - souffle/SouffleInterface.h - souffle/SymbolTable.h - souffle/utility/MiscUtil.h - souffle/utility/General.h - souffle/utility/Iteration.h - souffle/utility/Types.h - souffle/utility/tinyformat.h - souffle/datastructure/BTreeDelete.h - souffle/datastructure/BTreeUtil.h - souffle/utility/CacheUtil.h - souffle/utility/ContainerUtil.h - souffle/utility/DynamicCasting.h - souffle/utility/ParallelUtil.h - souffle/datastructure/Brie.h - souffle/utility/StreamUtil.h - souffle/datastructure/EquivalenceRelation.h - souffle/datastructure/LambdaBTree.h - souffle/datastructure/BTree.h - souffle/datastructure/PiggyList.h - souffle/datastructure/UnionFind.h - souffle/datastructure/RecordTableImpl.h - souffle/datastructure/ConcurrentFlyweight.h - souffle/datastructure/ConcurrentInsertOnlyHashMap.h - souffle/datastructure/SymbolTableImpl.h - souffle/datastructure/Table.h - souffle/io/IOSystem.h - souffle/io/ReadStream.h - souffle/io/SerialisationStream.h - souffle/utility/StringUtil.h - souffle/utility/json11.h - souffle/io/ReadStreamCSV.h - souffle/utility/FileUtil.h - souffle/io/gzfstream.h - souffle/io/ReadStreamJSON.h - souffle/io/WriteStream.h - souffle/io/WriteStreamCSV.h - souffle/io/WriteStreamJSON.h - souffle/io/ReadStreamSQLite.h - souffle/io/WriteStreamSQLite.h - souffle/utility/EvaluatorUtil.h - souffle/utility/EvaluatorUtil.h + souffle/CompiledSouffle.h + souffle/datastructure/Brie.h + souffle/datastructure/BTree.h + souffle/datastructure/BTreeDelete.h + souffle/datastructure/BTreeUtil.h + souffle/datastructure/ConcurrentFlyweight.h + souffle/datastructure/ConcurrentInsertOnlyHashMap.h + souffle/datastructure/EquivalenceRelation.h + souffle/datastructure/LambdaBTree.h + souffle/datastructure/PiggyList.h + souffle/datastructure/RecordTableImpl.h + souffle/datastructure/SymbolTableImpl.h + souffle/datastructure/Table.h + souffle/datastructure/UnionFind.h + souffle/io/gzfstream.h + souffle/io/IOSystem.h + souffle/io/ReadStream.h + souffle/io/ReadStreamCSV.h + souffle/io/ReadStreamJSON.h + souffle/io/ReadStreamSQLite.h + souffle/io/SerialisationStream.h + souffle/io/WriteStream.h + souffle/io/WriteStreamCSV.h + souffle/io/WriteStreamJSON.h + souffle/io/WriteStreamSQLite.h + souffle/RamTypes.h + souffle/RecordTable.h + souffle/SignalHandler.h + souffle/SouffleInterface.h + souffle/SymbolTable.h + souffle/utility/CacheUtil.h + souffle/utility/ContainerUtil.h + souffle/utility/DynamicCasting.h + souffle/utility/EvaluatorUtil.h + souffle/utility/FileUtil.h + souffle/utility/General.h + souffle/utility/Iteration.h + souffle/utility/json11.h + souffle/utility/MiscUtil.h + souffle/utility/ParallelUtil.h + souffle/utility/span.h + souffle/utility/StreamUtil.h + souffle/utility/StringUtil.h + souffle/utility/tinyformat.h + souffle/utility/Types.h + cxx-sources: - tests/fixtures/edge_cases.cpp - tests/fixtures/path.cpp - tests/fixtures/round_trip.cpp + tests/fixtures/edge_cases.cpp + tests/fixtures/path.cpp + tests/fixtures/round_trip.cpp + build-depends: - array <=1.0 - , base >=4.12 && <5 - , directory >=1.3.3 && <2 - , hedgehog ==1.* - , hspec >=2.6.1 && <3.0.0 - , hspec-hedgehog ==0.* - , profunctors >=5.6.2 && <6 + , array <1.0.0 + , base >=4.12 && <5 + , directory >=1.3.3 && <2 + , hedgehog >=1 && <2 + , hspec >=2.6.1 && <3.0.0 + , hspec-hedgehog <1 + , profunctors >=5.6.2 && <6 , souffle-haskell - , temporary >=1.3 && <2 - , text >=2.0.2 && <3 - , vector <=1.0 - default-language: Haskell2010 - if os(darwin) - extra-libraries: - c++ + , temporary >=1.3 && <2 + , text >=2.0.2 && <3 + , vector <1.0.0 + + default-language: Haskell2010 + + if os(osx) + extra-libraries: c++ benchmark souffle-haskell-benchmarks - type: exitcode-stdio-1.0 - main-is: bench.hs - other-modules: - Paths_souffle_haskell - autogen-modules: - Paths_souffle_haskell - hs-source-dirs: - benchmarks + type: exitcode-stdio-1.0 + main-is: bench.hs + other-modules: Paths_souffle_haskell + autogen-modules: Paths_souffle_haskell + hs-source-dirs: benchmarks default-extensions: - DerivingStrategies - FlexibleContexts - LambdaCase - OverloadedStrings - ScopedTypeVariables - StandaloneKindSignatures - ghc-options: -Wall -Weverything -Wno-safe -Wno-unsafe -Wno-implicit-prelude -Wno-missed-specializations -Wno-all-missed-specializations -Wno-missing-import-lists -Wno-type-defaults -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode -Wno-operator-whitespace -optP-Wno-nonportable-include-path -fhide-source-paths -fno-show-valid-hole-fits -fno-sort-valid-hole-fits +RTS -N1 -RTS - cxx-options: -std=c++17 -D__EMBEDDED_SOUFFLE__ -std=c++17 -march=native - include-dirs: - cbits - cbits/souffle + DerivingStrategies + FlexibleContexts + LambdaCase + OverloadedStrings + ScopedTypeVariables + StandaloneKindSignatures + + ghc-options: + -Wall -Weverything -Wno-safe -Wno-unsafe -Wno-implicit-prelude + -Wno-missed-specializations -Wno-all-missed-specializations + -Wno-missing-import-lists -Wno-type-defaults + -Wno-missing-local-signatures -Wno-monomorphism-restriction + -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode + -Wno-operator-whitespace -optP-Wno-nonportable-include-path + -fhide-source-paths -fno-show-valid-hole-fits + -fno-sort-valid-hole-fits +RTS -N1 -RTS + + cxx-options: + -std=c++17 -D__EMBEDDED_SOUFFLE__ -std=c++17 -march=native + + include-dirs: cbits cbits/souffle install-includes: - souffle/CompiledSouffle.h - souffle/RamTypes.h - souffle/RecordTable.h - souffle/utility/span.h - souffle/SignalHandler.h - souffle/SouffleInterface.h - souffle/SymbolTable.h - souffle/utility/MiscUtil.h - souffle/utility/General.h - souffle/utility/Iteration.h - souffle/utility/Types.h - souffle/utility/tinyformat.h - souffle/datastructure/BTreeDelete.h - souffle/datastructure/BTreeUtil.h - souffle/utility/CacheUtil.h - souffle/utility/ContainerUtil.h - souffle/utility/DynamicCasting.h - souffle/utility/ParallelUtil.h - souffle/datastructure/Brie.h - souffle/utility/StreamUtil.h - souffle/datastructure/EquivalenceRelation.h - souffle/datastructure/LambdaBTree.h - souffle/datastructure/BTree.h - souffle/datastructure/PiggyList.h - souffle/datastructure/UnionFind.h - souffle/datastructure/RecordTableImpl.h - souffle/datastructure/ConcurrentFlyweight.h - souffle/datastructure/ConcurrentInsertOnlyHashMap.h - souffle/datastructure/SymbolTableImpl.h - souffle/datastructure/Table.h - souffle/io/IOSystem.h - souffle/io/ReadStream.h - souffle/io/SerialisationStream.h - souffle/utility/StringUtil.h - souffle/utility/json11.h - souffle/io/ReadStreamCSV.h - souffle/utility/FileUtil.h - souffle/io/gzfstream.h - souffle/io/ReadStreamJSON.h - souffle/io/WriteStream.h - souffle/io/WriteStreamCSV.h - souffle/io/WriteStreamJSON.h - souffle/io/ReadStreamSQLite.h - souffle/io/WriteStreamSQLite.h - souffle/utility/EvaluatorUtil.h - souffle/utility/EvaluatorUtil.h - cxx-sources: - benchmarks/fixtures/bench.cpp + souffle/CompiledSouffle.h + souffle/datastructure/Brie.h + souffle/datastructure/BTree.h + souffle/datastructure/BTreeDelete.h + souffle/datastructure/BTreeUtil.h + souffle/datastructure/ConcurrentFlyweight.h + souffle/datastructure/ConcurrentInsertOnlyHashMap.h + souffle/datastructure/EquivalenceRelation.h + souffle/datastructure/LambdaBTree.h + souffle/datastructure/PiggyList.h + souffle/datastructure/RecordTableImpl.h + souffle/datastructure/SymbolTableImpl.h + souffle/datastructure/Table.h + souffle/datastructure/UnionFind.h + souffle/io/gzfstream.h + souffle/io/IOSystem.h + souffle/io/ReadStream.h + souffle/io/ReadStreamCSV.h + souffle/io/ReadStreamJSON.h + souffle/io/ReadStreamSQLite.h + souffle/io/SerialisationStream.h + souffle/io/WriteStream.h + souffle/io/WriteStreamCSV.h + souffle/io/WriteStreamJSON.h + souffle/io/WriteStreamSQLite.h + souffle/RamTypes.h + souffle/RecordTable.h + souffle/SignalHandler.h + souffle/SouffleInterface.h + souffle/SymbolTable.h + souffle/utility/CacheUtil.h + souffle/utility/ContainerUtil.h + souffle/utility/DynamicCasting.h + souffle/utility/EvaluatorUtil.h + souffle/utility/FileUtil.h + souffle/utility/General.h + souffle/utility/Iteration.h + souffle/utility/json11.h + souffle/utility/MiscUtil.h + souffle/utility/ParallelUtil.h + souffle/utility/span.h + souffle/utility/StreamUtil.h + souffle/utility/StringUtil.h + souffle/utility/tinyformat.h + souffle/utility/Types.h + + cxx-sources: benchmarks/fixtures/bench.cpp build-depends: - base >=4.12 && <5 - , criterion ==1.* - , deepseq >=1.4.4 && <2 + , base >=4.12 && <5 + , criterion >=1 && <2 + , deepseq >=1.4.4 && <2 , souffle-haskell - , text >=2.0.2 && <3 - , vector <=1.0 - default-language: Haskell2010 - if os(darwin) - extra-libraries: - c++ + , text >=2.0.2 && <3 + , vector <1.0.0 + + default-language: Haskell2010 + + if os(osx) + extra-libraries: c++