DRAFT of simplify-implication
RPC endpoint
#994
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Build + Test' | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: ['main'] | |
concurrency: | |
# head_ref is defined for PRs only, so we use run_id (unique) for | |
# the main branch to ensure all commits are built | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
ghc_version: '9.2.8' | |
hlint_version: '3.4.1' | |
fourmolu_version: '0.12.0.0' | |
hpack_version: '0.34.2' | |
jobs: | |
stack: | |
name: 'Stack / Unit Tests' | |
runs-on: [self-hosted, linux, normal] | |
steps: | |
- name: 'Checkout Code' | |
uses: actions/checkout@v3 | |
with: | |
# Check out pull request HEAD instead of merge commit. | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: 'Cache Stack root' | |
uses: actions/cache@v3 | |
with: | |
path: stack-cache | |
key: stack-2-${{ runner.os }}-ghc-${{ env.ghc_version }}-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }}-${{ hashFiles('stack.yaml.lock') }} | |
restore-keys: | | |
stack-2-${{ runner.os }}-ghc-${{ env.ghc_version }}-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }} | |
stack-2-${{ runner.os }}-ghc-${{ env.ghc_version }}-${{ hashFiles('stack.yaml') }} | |
stack-2-${{ runner.os }}-ghc-${{ env.ghc_version }} | |
- name: 'Set up Docker' | |
uses: ./.github/actions/with-docker | |
with: | |
tag: hs-booster-ci-stack-unit-buster-${{ github.run_id }} | |
os: ubuntu | |
distro: jammy | |
fourmolu: ${{ env.fourmolu_version }} | |
hlint: ${{ env.hlint_version }} | |
hpack: ${{ env.hpack_version }} | |
ghc: ${{ env.ghc_version }} | |
- name: 'Run unit tests' | |
run: docker exec -t hs-booster-ci-stack-unit-buster-${{ github.run_id }} /bin/bash -c 'stack --system-ghc --stack-root $(pwd)/stack-cache test :unit-tests --pedantic' | |
- name: 'Tear down Docker' | |
if: always() | |
run: | | |
docker stop --time=0 hs-booster-ci-stack-unit-buster-${{ github.run_id }} | |
cabal: | |
name: 'Cabal / Unit Tests' | |
runs-on: [self-hosted, linux, normal] | |
steps: | |
- name: 'Checkout Code' | |
uses: actions/checkout@v3 | |
with: | |
# Check out pull request HEAD instead of merge commit. | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: 'Cache Cabal package database and store' | |
uses: actions/cache@v3 | |
with: | |
path: | | |
cabal-cache/packages | |
cabal-cache/store | |
key: cabal-2-${{ runner.os }}-ghc-${{ env.ghc_version }}-${{ hashFiles('package.yaml') }}-${{ hashFiles('cabal.project.freeze') }} | |
restore-keys: | | |
cabal-2-${{ runner.os }}-ghc-${{ env.ghc_version }}-${{ hashFiles('package.yaml') }}- | |
cabal-2-${{ runner.os }}-ghc-${{ env.ghc_version }}- | |
- name: 'Set up Docker' | |
uses: ./.github/actions/with-docker | |
with: | |
tag: hs-booster-ci-cabal-unit-buster-${{ github.run_id }} | |
os: ubuntu | |
distro: jammy | |
fourmolu: ${{ env.fourmolu_version }} | |
hlint: ${{ env.hlint_version }} | |
hpack: ${{ env.hpack_version }} | |
ghc: ${{ env.ghc_version }} | |
- name: 'Run hpack' | |
run: | | |
docker exec -t hs-booster-ci-cabal-unit-buster-${{ github.run_id }} /bin/bash -c 'hpack' | |
- name: 'Build and run unit tests' | |
run: | | |
docker exec -t hs-booster-ci-cabal-unit-buster-${{ github.run_id }} \ | |
/bin/bash -c 'cabal --store-dir /opt/workspace/cabal-cache/store v2-test unit-tests --enable-tests --test-show-details=direct' | |
- name: 'Configure with profiling' | |
run: | | |
docker exec -t hs-booster-ci-cabal-unit-buster-${{ github.run_id }} \ | |
/bin/bash -c 'cabal --store-dir /opt/workspace/cabal-cache/store v2-configure --enable-profiling -f-threaded' | |
- name: 'Tear down Docker' | |
if: always() | |
run: | | |
docker stop --time=0 hs-booster-ci-cabal-unit-buster-${{ github.run_id }} | |
style: | |
name: 'Formatting and Style' | |
runs-on: [self-hosted, linux, normal] | |
steps: | |
- name: 'Checkout Code' | |
uses: actions/checkout@v3 | |
with: | |
# Check out pull request HEAD instead of merge commit. | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: 'Set up Docker' | |
uses: ./.github/actions/with-docker | |
with: | |
tag: hs-booster-ci-formatting-style-buster-${{ github.run_id }} | |
os: ubuntu | |
distro: jammy | |
fourmolu: ${{ env.fourmolu_version }} | |
hlint: ${{ env.hlint_version }} | |
hpack: ${{ env.hpack_version }} | |
ghc: ${{ env.ghc_version }} | |
- name: 'Check formatting' | |
run: docker exec -t hs-booster-ci-formatting-style-buster-${{ github.run_id }} /bin/bash -c './scripts/fourmolu.sh && git diff --exit-code' | |
- name: 'Run hlint' | |
run: docker exec -t hs-booster-ci-formatting-style-buster-${{ github.run_id }} /bin/bash -c './scripts/hlint.sh' | |
- name: 'Tear down Docker' | |
if: always() | |
run: | | |
docker stop --time=0 hs-booster-ci-formatting-style-buster-${{ github.run_id }} | |
nix-build: | |
name: 'Nix / All Tests' | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- runner: [self-hosted, linux, normal] | |
os: Ubuntu-22.04 | |
nix: x86_64-linux | |
- runner: MacM1 | |
os: self-macos-12 | |
nix: aarch64-darwin | |
- runner: macos-12 | |
os: macos-12 | |
nix: x86_64-darwin | |
runs-on: ${{ matrix.runner }} | |
steps: | |
- name: 'Check out code' | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: 'Install Nix' | |
if: ${{ matrix.os == 'macos-12' }} | |
uses: cachix/install-nix-action@v22 | |
with: | |
install_url: https://releases.nixos.org/nix/nix-2.13.3/install | |
extra_nix_config: | | |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | |
substituters = http://cache.nixos.org https://cache.iog.io | |
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= | |
- name: 'Install Cachix' | |
if: ${{ matrix.os == 'macos-12' }} | |
uses: cachix/cachix-action@v12 | |
with: | |
name: k-framework | |
authToken: '${{ secrets.CACHIX_PUBLIC_TOKEN }}' | |
skipPush: true | |
- name: Build executables | |
env: | |
CACHIX_AUTH_TOKEN: '${{ secrets.CACHIX_PUBLIC_TOKEN }}' | |
NIX_PATH: 'nixpkgs=http://nixos.org/channels/nixos-22.05/nixexprs.tar.xz' | |
GC_DONT_GC: '1' | |
run: | | |
nix --version | |
export JQ=$(nix-build '<nixpkgs>' -A jq --no-link)/bin/jq | |
booster=$(nix build .#hs-backend-booster:exe:kore-rpc-booster --extra-experimental-features 'nix-command flakes' --print-build-logs --json | $JQ -r '.[].outputs | to_entries[].value') | |
drv=$(nix-store --query --deriver ${booster}) | |
nix-store --query --requisites --include-outputs ${drv} | cachix push k-framework | |
nix build .#hs-backend-booster:exe:parsetest --extra-experimental-features 'nix-command flakes' --print-build-logs | |
nix build .#hs-backend-booster:exe:rpc-client --extra-experimental-features 'nix-command flakes' --print-build-logs | |
- name: Run unit tests | |
env: | |
GC_DONT_GC: '1' | |
run: nix run .#hs-backend-booster:test:unit-tests --extra-experimental-features 'nix-command flakes' --print-build-logs | |
- name: Run integration tests | |
if: ${{ matrix.os != 'macos-12' }} ## takes long on public runner, already tested in MacM1 | |
env: | |
GC_DONT_GC: '1' | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
nix run .#hs-backend-booster:test:llvm-integration --extra-experimental-features 'nix-command flakes' --print-build-logs | |
export JQ=$(nix-build '<nixpkgs>' -A jq --no-link)/bin/jq | |
for dir in $(cd test/rpc-integration && ls -d test-*); do | |
name=${dir##test-} | |
echo $name | |
nix build .#checks.${{ matrix.nix }}.integration.$name --extra-experimental-features 'nix-command flakes' --print-build-logs -o $name.md | |
done | |
echo "${{ matrix.nix }}" >> $GITHUB_STEP_SUMMARY | |
cat imp.md >> $GITHUB_STEP_SUMMARY | |
- name: Check shell | |
run: GC_DONT_GC=1 nix develop --print-build-logs --command cabal --version |