liquidhaskell-0.8.10.7: .circleci/config.yml
---
version: 2.1
commands:
setup_project:
description: "Setup the machine, clone the repo, checkout the submodules."
steps:
- run: sudo apt-get update && sudo apt-get install -y curl git ssh unzip wget libtinfo-dev gcc make
- run:
name: Install z3
command: |
wget https://github.com/Z3Prover/z3/releases/download/z3-4.8.7/z3-4.8.7-x64-ubuntu-16.04.zip
unzip z3-4.8.7-x64-ubuntu-16.04.zip
rm -f z3-4.8.7-x64-ubuntu-16.04.zip
sudo cp z3-4.8.7-x64-ubuntu-16.04/bin/libz3.a /usr/local/lib
sudo cp z3-4.8.7-x64-ubuntu-16.04/bin/z3 /usr/local/bin
sudo cp z3-4.8.7-x64-ubuntu-16.04/include/* /usr/local/include
rm -rf z3-4.8.7-x64-ubuntu-16.04
z3 --version
- checkout
- add_ssh_keys
- run: git submodule sync
- run: git submodule update --init
cabal_build_and_test:
description: "Build the project and run the tests"
parameters:
allow_test_failures:
type: boolean
default: false
cabal_update_command:
type: string
default: "cabal v2-update"
ghc_version:
type: string
default: "8.10.7"
project_file:
type: string
default: "cabal.project"
extra_test_flags:
type: string
default: ""
liquid_runner:
type: string
default: "--liquid-runner=cabal v2-run liquidhaskell -- "
ghc_options:
type: string
default: "--ghc-options=\"+RTS -M2G -RTS\""
setup_test_extra_steps:
type: string
default: ""
steps:
- setup_project
- run: git ls-tree HEAD liquid-fixpoint > liquid-fixpoint-commit
- restore_cache:
keys:
- cabal-cache-v3-{{ checksum "liquidhaskell.cabal" }}-{{ checksum "<< parameters.project_file >>" }}-{{ checksum "liquid-fixpoint-commit" }}
- cabal-cache-v3-{{ checksum "liquidhaskell.cabal" }}-{{ checksum "<< parameters.project_file >>" }}
- run:
name: Dependencies
command: |
wget https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup
chmod +x ./x86_64-linux-ghcup
./x86_64-linux-ghcup install ghc << parameters.ghc_version >>
./x86_64-linux-ghcup set ghc << parameters.ghc_version >>
./x86_64-linux-ghcup install cabal 3.6.2.0
export PATH=~/.ghcup/bin:$PATH
echo 'export PATH=~/.ghcup/bin:$PATH' >> $BASH_ENV
<< parameters.cabal_update_command >>
cabal v2-clean
cabal v2-build --project-file << parameters.project_file >> --flag include --flag devel -j2 --enable-tests all
- save_cache:
key: cabal-cache-v3-{{ checksum "liquidhaskell.cabal" }}-{{ checksum "<< parameters.project_file >>" }}-{{ checksum "liquid-fixpoint-commit" }}
paths:
- ~/.cabal/store
- ~/.ghcup
- ./dist-newstyle
- run:
name: Setup Test
command: |
mkdir -p /tmp/junit/cabal
<< parameters.setup_test_extra_steps >>
- run:
name: Test
command: |
(liquidhaskell_datadir=$PWD cabal v2-test -j1 --project-file << parameters.project_file >> liquidhaskell:test << parameters.extra_test_flags >> --flag include --flag devel --test-show-details=streaming --test-option="<< parameters.liquid_runner >>" --test-options="-t 1200s --xml=/tmp/junit/cabal/main-test-results.xml") || (<<parameters.allow_test_failures>>)
(liquidhaskell_datadir=$PWD cabal v2-test -j1 --project-file << parameters.project_file >> liquidhaskell:liquidhaskell-parser --flag include --flag devel --test-show-details=streaming --test-options="--xml=/tmp/junit/cabal/parser-test-results.xml") || (<<parameters.allow_test_failures>>)
no_output_timeout: 30m
- store_test_results:
path: /tmp/junit/cabal
- run:
name: Compress artifacts
command: tar cvzf logs.tar.gz tests/logs/cur
- store_artifacts:
path: logs.tar.gz
stack_build_and_test:
description: "Build and test the project using Stack"
parameters:
stack_yaml_file:
type: string
default: "stack.yaml"
liquid_runner:
type: string
default: "stack --silent exec -- liquidhaskell -v0"
extra_test_flags:
type: string
default: ""
extra_build_flags:
type: string
default: ""
steps:
- run: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 8B1DA6120C2BF624
- setup_project
- run: git ls-tree HEAD liquid-fixpoint > liquid-fixpoint-commit
- restore_cache:
keys:
- stack-cache-v1-{{ checksum "<< parameters.stack_yaml_file >>" }}-{{ checksum "liquidhaskell.cabal" }}-{{ checksum "liquid-fixpoint-commit" }}
- stack-cache-v1-{{ checksum "<< parameters.stack_yaml_file >>" }}-{{ checksum "liquidhaskell.cabal" }}
- stack-cache-v1-{{ checksum "<< parameters.stack_yaml_file >>" }}
- run:
name: Dependencies
command: |
wget -qO- https://get.haskellstack.org/ | sudo sh
stack --no-terminal --stack-yaml << parameters.stack_yaml_file >> setup
stack --no-terminal --stack-yaml << parameters.stack_yaml_file >> build -j2 --only-dependencies --test --no-run-tests << parameters.extra_build_flags >>
- save_cache:
key: stack-cache-v1-{{ checksum "<< parameters.stack_yaml_file >>" }}-{{ checksum "liquidhaskell.cabal" }}-{{ checksum "liquid-fixpoint-commit" }}
paths:
- ~/.stack
- ./.stack-work
- run:
name: Test
command: |
stack --no-terminal --stack-yaml << parameters.stack_yaml_file >> clean
mkdir -p /tmp/junit/stack
stack --no-terminal --stack-yaml << parameters.stack_yaml_file >> test -j1 liquidhaskell:test << parameters.extra_build_flags >> << parameters.extra_test_flags >> --ta="--liquid-runner \"<< parameters.liquid_runner >>\"" --ta="-t 1200s --xml=/tmp/junit/stack/main-test-results.xml": #--liquid-opts='--cores=1'":
stack --no-terminal --stack-yaml << parameters.stack_yaml_file >> test -j1 liquidhaskell:liquidhaskell-parser << parameters.extra_build_flags >> --ta="--xml=/tmp/junit/stack/parser-test-results.xml":
no_output_timeout: 30m
- run:
name: Generate haddock
command: |
# stack haddock liquidhaskell --flag liquidhaskell:-devel --no-haddock-deps --haddock-arguments="--no-print-missing-docs --odir=$CIRCLE_ARTIFACTS"
# skip if extra_build_flags are set
[ ! -z "<< parameters.extra_build_flags >>" ] || stack --no-terminal --stack-yaml << parameters.stack_yaml_file >> haddock << parameters.extra_build_flags >> liquidhaskell --no-haddock-deps --haddock-arguments="--no-print-missing-docs"
- store_test_results:
path: /tmp/junit/stack
- run:
name: Compress artifacts
command: tar cvzf logs.tar.gz tests/logs/cur
- store_artifacts:
path: logs.tar.gz
- run:
name: Dist
command: |
# skip if extra_build_flags are set
[ ! -z "<< parameters.extra_build_flags >>" ] || stack --no-terminal --stack-yaml << parameters.stack_yaml_file >> sdist
jobs:
stack_810_legacy_executable:
machine:
image: ubuntu-2004:202107-02
steps:
- stack_build_and_test:
stack_yaml_file: "stack.yaml"
liquid_runner: "stack --silent exec -- liquid"
extra_build_flags: "--flag liquidhaskell:include --flag liquid-platform:devel --flag liquidhaskell:no-plugin"
stack_810:
machine:
image: ubuntu-2004:202107-02
steps:
- stack_build_and_test:
stack_yaml_file: "stack.yaml"
extra_test_flags: " liquid-platform:liquidhaskell "
cabal_810:
machine:
image: ubuntu-2004:202107-02
steps:
- cabal_build_and_test:
liquid_runner: "--liquid-runner=cabal -v0 v2-exec liquidhaskell -- -v0 \
-package-env=$(./scripts/generate_testing_ghc_env) \
-package=liquidhaskell -package=Cabal "
cabal_900:
machine:
image: ubuntu-2004:202107-02
steps:
- cabal_build_and_test:
ghc_version: "9.0.1"
project_file: "cabal.ghc9.project"
extra_test_flags: ' --test-options '' -p "$0 != \"Tests.Benchmarks.text.Data/Text/Foreign.hs\" && ! /Tests.Micro.typeclass-pos./"'' '
liquid_runner: "--liquid-runner=cabal -v0 v2-exec --project-file cabal.ghc9.project liquidhaskell -- -v0 \
-package-env=$(./scripts/generate_testing_ghc_env cabal.ghc9.project) \
-package=liquidhaskell -package=Cabal "
workflows:
version: 2
build_stack_and_cabal:
jobs:
- stack_810_legacy_executable
- stack_810
- cabal_810
- cabal_900