Implementation of address translation #141
This file contains hidden or 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: CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
# cancel in-progress job when a new push is performed | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
strategy: | |
matrix: | |
version: [4.14.2] | |
rocq-version: [8.19.2] | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: System dependencies (ubuntu) | |
run: | | |
sudo apt update | |
sudo apt install -y build-essential opam z3 cmake | |
# Cache with local pinned dependencies | |
- name: Restore pinned OPAM cache | |
id: cache-opam-restore-pinned | |
uses: actions/cache/restore@v4 | |
with: | |
path: ~/.opam | |
key: pin-${{ matrix.version }}-${{ matrix.rocq-version }}-${{ hashFiles('*.opam') }} | |
# Cache with only repo dependencies, in particular Ocaml and Rocq | |
- name: Restore base OPAM cache | |
if: ${{ steps.cache-opam-restore-pinned.outputs.cache-hit != 'true' }} | |
id: cache-opam-restore | |
uses: actions/cache/restore@v4 | |
with: | |
path: ~/.opam | |
key: ${{ matrix.version }}-${{ matrix.rocq-version }} | |
- name: Setup base OPAM | |
if: ${{ steps.cache-opam-restore-pinned.outputs.cache-hit != 'true' && | |
steps.cache-opam-restore.outputs.cache-hit != 'true' }} | |
run: | | |
opam --version | |
opam init --yes --no-setup --disable-sandboxing --shell=sh --compiler=${{ matrix.version }} | |
opam repo add --yes rocq-released https://rocq-prover.org/opam/released | |
eval $(opam env --switch=${{ matrix.version }}) | |
opam update | |
opam pin --yes --no-action coq ${{ matrix.rocq-version }} | |
opam pin --yes --no-action coq-stdpp 1.11.0 | |
opam install --yes dune coq coq-stdpp | |
opam clean | |
opam clean -r | |
- name: Save base OPAM cache | |
uses: actions/cache/save@v4 | |
if: ${{ steps.cache-opam-restore-pinned.outputs.cache-hit != 'true' && | |
steps.cache-opam-restore.outputs.cache-hit != 'true' }} | |
with: | |
path: ~/.opam | |
key: ${{ matrix.version }}-${{ matrix.rocq-version }} | |
- name: Install pinned dependencies | |
if: ${{ steps.cache-opam-restore-pinned.outputs.cache-hit != 'true' }} | |
run: | | |
opam switch ${{ matrix.version }} | |
eval $(opam env) | |
opam install --deps-only --confirm-level=unsafe-yes . | |
# This is needed with opam 2.1, not with opam 2.3. I haven't tested 2.2 | |
opam install --yes sail coq-sail-tiny-arm coq-sail-riscv | |
opam clean | |
opam clean -r | |
- name: Save pinned OPAM cache | |
uses: actions/cache/save@v4 | |
if: ${{ steps.cache-opam-restore-pinned.outputs.cache-hit != 'true' }} | |
with: | |
path: ~/.opam | |
key: pin-${{ matrix.version }}-${{ matrix.rocq-version }}-${{ hashFiles('*.opam') }} | |
- name: Build | |
run: | | |
opam switch ${{ matrix.version }} | |
eval $(opam env) | |
dune build | |
- name: Tests | |
run: | | |
opam switch ${{ matrix.version }} | |
eval $(opam env) | |
dune runtest |