Skip to content

unlocked

unlocked #2261

Workflow file for this run

name: unlocked
on:
# pull_request: # save CI time on PRs, run manually if needed (before merge) or find out failures from scheduled run (after merge)
workflow_dispatch:
schedule:
# nightly
- cron: '31 1 * * *' # 01:31 UTC, 02:31/03:31 Munich, 03:31/04:31 Tartu
# GitHub Actions load is high at minute 0, so avoid that
jobs:
regression:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
- macos-13
ocaml-compiler:
- 5.2.x
- 5.1.x
- 5.0.x
- ocaml-variants.4.14.2+options,ocaml-option-flambda
- 4.14.x
apron:
- false
- true
z3:
- false
include:
- os: ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
ocaml-compiler: 4.14.x
z3: true
- os: macos-latest
ocaml-compiler: 4.14.x
# customize name to use readable string for apron instead of just a boolean
# workaround for missing ternary operator: https://github.com/actions/runner/issues/409
name: regression (${{ matrix.os }}, ${{ matrix.ocaml-compiler }}${{ matrix.apron && ', apron' || '' }}${{ matrix.z3 && ', z3' || '' }})
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up OCaml ${{ matrix.ocaml-compiler }}
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
- name: Install graph-easy # TODO: remove if depext --with-test works (https://github.com/ocaml/opam/issues/5836)
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: sudo apt install -y libgraph-easy-perl
- name: Install dependencies
run: opam install . --deps-only --with-test
- name: Install os gem for operating system detection
run: sudo gem install os
- name: Install Apron dependencies
if: ${{ matrix.apron }}
run: opam install apron mlgmpidl.1.2.15
- name: Install Z3 dependencies
if: ${{ matrix.z3 }}
run: opam install z3
- name: Build
run: ./make.sh nat
- name: Download Linux headers
run: ./make.sh headers
- name: Test
run: opam exec -- dune runtest
- name: Test marshal regression # not part of @runtest due to time
run: ruby scripts/update_suite.rb -m
lower-bounds-downgrade:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
- macos-13
ocaml-compiler:
- ocaml-variants.4.14.2+options,ocaml-option-flambda # matches opam lock file
name: lower-bounds (${{ matrix.os }}, ${{ matrix.ocaml-compiler }}, downgrade)
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up OCaml ${{ matrix.ocaml-compiler }}
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
- name: Install graph-easy # TODO: remove if depext --with-test works (https://github.com/ocaml/opam/issues/5836)
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: sudo apt install -y libgraph-easy-perl
- name: Install dependencies
run: opam install . --deps-only --with-test
- name: Install os gem for operating system detection
run: sudo gem install os
- name: Install Apron dependencies
run: opam install apron mlgmpidl.1.2.15
- name: Downgrade dependencies
# without "+removed" in criteria, because it also removes optional apron
run: opam install --solver=builtin-0install --criteria="+count[version-lag,solution]" . --deps-only --with-test
- name: Build
run: ./make.sh nat
- name: Download Linux headers
run: ./make.sh headers
- name: Test
run: opam exec -- dune runtest
- name: Test marshal regression # not part of @runtest due to time
run: ruby scripts/update_suite.rb -m
opam-install:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
- macos-13
ocaml-compiler:
- ocaml-variants.4.14.2+options,ocaml-option-flambda # matches opam lock file
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up OCaml ${{ matrix.ocaml-compiler }}
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
- name: Install graph-easy # TODO: remove if depext --with-test works (https://github.com/ocaml/opam/issues/5836)
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: sudo apt install -y libgraph-easy-perl
- name: Install Goblint with test
run: opam install goblint --with-test
- name: Install Apron dependencies
run: opam install apron mlgmpidl.1.2.15
- name: Symlink installed goblint to repository # because tests want to use locally built one
run: ln -s $(opam exec -- which goblint) goblint
- name: Download Linux headers
run: ./make.sh headers
- name: Set gobopt with pre.kernel-root # because linux-headers are not installed
run: echo "gobopt=--set pre.kernel-root $PWD/linux-headers" >> $GITHUB_ENV
- name: Test regression
run: ruby scripts/update_suite.rb -s
- name: Test apron regression # skipped by default but CI has apron, so explicitly test group (which ignores skipping -- it's now a feature!)
# if: ${{ matrix.apron }}
run: |
ruby scripts/update_suite.rb group apron -s
ruby scripts/update_suite.rb group apron2 -s
- name: Test apron octagon regression # skipped by default but CI has apron, so explicitly test group (which ignores skipping -- it's now a feature!)
run: ruby scripts/update_suite.rb group octagon -s
- name: Test apron affeq regression # skipped by default but CI has apron, so explicitly test group (which ignores skipping -- it's now a feature!)
run: ruby scripts/update_suite.rb group affeq -s
- name: Test apron regression (Mukherjee et. al SAS '17 paper') # skipped by default but CI has apron, so explicitly test group (which ignores skipping -- it's now a feature!)
# if: ${{ matrix.apron }}
run: ruby scripts/update_suite.rb group apron-mukherjee -s
- name: Test marshal regression
run: ruby scripts/update_suite.rb -m
- name: Test incremental regression
run: ruby scripts/update_suite.rb -i
- name: Test incremental regression with cfg comparison
run: ruby scripts/update_suite.rb -c
gobview:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04 # https://github.com/ocaml/setup-ocaml/issues/872
ocaml-compiler:
- ocaml-variants.5.0.0+options,ocaml-option-flambda
node-version:
- 14
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up OCaml ${{ matrix.ocaml-compiler }}
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: opam install . --deps-only
- name: Setup Gobview
run: ./make.sh setup_gobview
- name: Build
run: ./make.sh nat
- name: Build Gobview
run: ./make.sh view
- name: Install selenium
run: pip3 install selenium webdriver-manager
- name: Test Gobview
run: |
python3 scripts/test-gobview.py