Generalize PatchPair with Quant wrapper #1084
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
# This CI configuration is inspired by | |
# | |
# https://kodimensional.dev/github-actions | |
# | |
# It builds with a majority of the latest compiler releases from each major GHC | |
# revision on Linux and builds macOS and Windows against the latest GHC. | |
name: CI Matrix | |
# Trigger the workflow on push or pull request, but only for the master branch | |
on: | |
pull_request: | |
push: | |
branches: [master] | |
jobs: | |
docker: | |
runs-on: self-hosted | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'false' | |
- name: Setup subrepos | |
run: | | |
git config --global url."https://github.com/".insteadOf "[email protected]:" | |
git config --global url."https://".insteadOf "git://" | |
git submodule update --init | |
- name: Artifactory Login | |
uses: docker/login-action@v2 | |
with: | |
registry: artifactory.galois.com:5025 | |
username: ${{ secrets.ARTIFACTORY_USER }} | |
password: ${{ secrets.ARTIFACTORY_KEY }} | |
# Pulls the latest image to try to re-use some layers | |
- name: Pull Latest Docker image | |
run: | | |
docker pull artifactory.galois.com:5025/pate/pate:${GITHUB_REF//\//\-} || \ | |
docker pull artifactory.galois.com:5025/pate/pate:refs-heads-master || \ | |
echo "No latest image found" | |
# Docker on our self-hosted runners doesn't populate TARGETPLATFORM so we | |
# set it manually via build-arg. We need this to pass our platform check | |
# in the Dockerfile. | |
- name: Build Docker Image | |
run: | | |
docker build --platform linux/amd64 --build-arg TARGETPLATFORM=linux/amd64 . \ | |
--cache-from artifactory.galois.com:5025/pate/pate:${GITHUB_REF//\//\-} \ | |
--cache-from artifactory.galois.com:5025/pate/pate:refs-heads-master \ | |
-t pate | |
- name: Docker Integration Test | |
run: | | |
docker run --rm --entrypoint tests/integration/packet/packet.exp pate | |
- name: Push Docker image | |
run: | | |
CI_COMMIT_SHORT_SHA=$(git rev-parse --short $GITHUB_SHA) | |
docker tag pate artifactory.galois.com:5025/pate/pate:$CI_COMMIT_SHORT_SHA | |
docker tag pate artifactory.galois.com:5025/pate/pate:${GITHUB_REF//\//\-} | |
docker push -a artifactory.galois.com:5025/pate/pate | |
build: | |
runs-on: ${{ matrix.os }} | |
env: | |
LANG: en_US.UTF-8 | |
LANGUAGE: en_US:en | |
LC_ALL: en_US.UTF-8 | |
TZ: America/Los_Angeles | |
CACHE_VERSION: 5 | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [ 'ppc' ] | |
ghc: ['9.6.2'] | |
cabal: ['3.10.2.0'] | |
os: [self-hosted] | |
name: GHC ${{ matrix.ghc }} on ${{ matrix.os }} pate-${{ matrix.arch }} | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'false' | |
- name: Setup subrepos and cabal.project | |
run: | | |
git config --global url."https://github.com/".insteadOf "[email protected]:" | |
git config --global url."https://".insteadOf "git://" | |
git submodule update --init | |
cp cabal.project.dist cabal.project | |
- name: Installing the freeze file | |
run: mv cabal.GHC-${{ matrix.ghc }}.freeze cabal.project.freeze | |
- uses: actions/cache/restore@v4 | |
name: Restore GHCup | |
id: cache-ghcup | |
with: | |
path: ~/.ghcup | |
key: ${{ env.CACHE_VERSION }}-pate-ghcup-${{ runner.os }}-${{ matrix.ghc }} | |
- uses: haskell-actions/setup@v2 | |
id: setup-haskell-cabal | |
name: Setup Haskell | |
with: | |
ghc-version: ${{ matrix.ghc }} | |
cabal-version: ${{ matrix.cabal }} | |
- uses: actions/cache/save@v4 | |
name: Save GHCup | |
with: | |
path: ~/.ghcup | |
key: ${{ steps.cache-ghcup.outputs.cache-primary-key }} | |
- name: System Dependencies | |
run: | | |
sudo apt update | |
sudo apt install -y software-properties-common apt-transport-https ca-certificates wget | |
sudo apt install -y bsdiff curl zlibc zlib1g zlib1g-dev git zip \ | |
libgmp3-dev build-essential libtinfo-dev autoconf automake gperf cmake locales \ | |
python3-distutils python-setuptools antlr3 libantlr3c-dev libtool libtool-bin libboost-all-dev python3-pip libfftw3-dev | |
sudo locale-gen en_US.UTF-8 | |
sudo pip3 install toml | |
- name: Checkout Challenge Problems | |
env: | |
GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }} | |
GITLAB_USER: ${{ env.GITLAB_USER }} | |
run: | | |
export CHALLENGE_DIR=${HOME}/programtargets | |
git clone https://${GITLAB_USER}:${GITLAB_TOKEN}@gitlab-ext.galois.com/pate/programtargets.git ${CHALLENGE_DIR} | |
cd tests | |
make extras | |
- uses: actions/cache/restore@v4 | |
name: Restore Cabal Cache | |
id: cache-cabal-pate | |
with: | |
path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }} | |
key: ${{ env.CACHE_VERSION }}-pate-cabal-${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze', 'cabal.project') }} | |
restore-keys: | | |
${{ env.CACHE_VERSION }}-pate-cabal-${{ runner.os }}-${{ matrix.ghc }}- | |
- uses: actions/cache/restore@v4 | |
name: Restore Build Cache | |
id: cache-build-pate | |
with: | |
path: dist-newstyle | |
key: ${{ env.CACHE_VERSION }}-pate-build-${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze', 'cabal.project', '.gitmodules') }} | |
restore-keys: | | |
${{ env.CACHE_VERSION }}-pate-build-${{ runner.os }}-${{ matrix.ghc }}- | |
- name: Configure and build Pate dependencies | |
# installs parameterized-utils and then drops it from the project to resolve issue with bv-sized | |
run: | | |
cabal configure pkg:pate --write-ghc-environment-files=always --enable-tests -j --allow-newer=base --enable-documentation -f unsafe-operations | |
cabal install parameterized-utils --lib | |
cabal freeze | |
sed -i -e "/parameterized-utils/d" cabal.project | |
cabal build pkg:pate --only-dependencies | |
# Note that these keys still use the old hashes for cabal.project and cabal.project.freeze | |
- uses: actions/cache/save@v4 | |
name: Save Cabal Cache | |
with: | |
path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }} | |
key: ${{ steps.cache-cabal-pate.outputs.cache-primary-key }} | |
- uses: actions/cache/save@v4 | |
name: Save Build Cache | |
with: | |
path: dist-newstyle | |
key: ${{ steps.cache-build-pate.outputs.cache-primary-key }} | |
- name: Build Pate | |
run: cabal build pkg:pate | |
- name: Install Solvers | |
run: .github/ci.sh install_system_deps | |
env: | |
Z3_VERSION: "4.8.8" | |
YICES_VERSION: "2.6.2" | |
CVC4_VERSION: "4.1.8" | |
- name: Test | |
if: runner.os == 'Linux' | |
run: | | |
cabal test pkg:pate --test-options="-t 2400s" | |
- name: Docs | |
run: cabal haddock pkg:pate |