Skip to content

Commit

Permalink
Merge branch 'master' into cfg-optimize
Browse files Browse the repository at this point in the history
  • Loading branch information
sim642 committed Jun 1, 2023
2 parents 8006212 + 53f0056 commit 6c60dcd
Show file tree
Hide file tree
Showing 883 changed files with 37,265 additions and 6,972 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
- name: Build Docker image
id: build
uses: docker/build-push-action@v3
uses: docker/build-push-action@v4
with:
context: .
load: true # load into docker instead of immediately pushing
Expand All @@ -72,7 +72,7 @@ jobs:
run: docker run --rm -v $(pwd):/data ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }} /data/tests/regression/04-mutex/01-simple_rc.c # run image by version in case multiple tags

- name: Push Docker image
uses: docker/build-push-action@v3
uses: docker/build-push-action@v4
with:
context: .
push: true
Expand Down
68 changes: 68 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: docs

on:
push:
branches:
- master

workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: true

jobs:
api-build:
strategy:
matrix:
os:
- ubuntu-latest
ocaml-compiler:
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file
# don't add any other because they won't be used

runs-on: ${{ matrix.os }}

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Set up OCaml ${{ matrix.ocaml-compiler }}
env:
# otherwise setup-ocaml pins non-locked dependencies
# https://github.com/ocaml/setup-ocaml/issues/166
OPAMLOCKED: locked
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}

- name: Setup Pages
id: pages
uses: actions/configure-pages@v3

- name: Install dependencies
run: opam install . --deps-only --locked --with-doc

- name: Build API docs
run: opam exec -- dune build @doc

- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: _build/default/_doc/_html/

api-deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: api-build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
28 changes: 9 additions & 19 deletions .github/workflows/indentation.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,33 @@
name: indentation

on: [ push, pull_request]
on:
push:
pull_request:
workflow_dispatch:

jobs:
indentation:
strategy: # remove?
strategy:
matrix:
os:
- ubuntu-latest
ocaml-compiler:
- 4.14.0 # setup-ocaml@v1 does not support 4.14.x for ocaml-version
- 4.14.x

runs-on: ${{ matrix.os }}

if: ${{ github.event.before != '0000000000000000000000000000000000000000' }}
if: ${{ !github.event.forced && github.event.before != '0000000000000000000000000000000000000000' }}

steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0

# reuse tests.yml or depend on it to not have to setup OCaml? https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-using-an-action-in-the-same-repository-as-the-workflow

# rely on cache for now
- name: Cache opam switch # https://github.com/marketplace/actions/cache
uses: actions/cache@v3
with:
# A list of files, directories, and wildcard patterns to cache and restore
path: |
~/.opam
_opam
# Key for restoring and saving the cache
key: opam-ocp-indent-${{ runner.os }}-${{ matrix.ocaml-compiler }}

- name: Set up OCaml ${{ matrix.ocaml-compiler }}
uses: ocaml/setup-ocaml@v1 # intentionally use v1 instead of v2 because it's faster with manual caching: https://github.com/goblint/analyzer/pull/308#issuecomment-887805857
uses: ocaml/setup-ocaml@v2
with:
ocaml-version: ${{ matrix.ocaml-compiler }}
ocaml-compiler: ${{ matrix.ocaml-compiler }}

- name: Install ocp-indent
run: opam install -y ocp-indent
Expand Down
29 changes: 26 additions & 3 deletions .github/workflows/locked.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,14 @@ jobs:
- ubuntu-latest
- macos-latest
ocaml-compiler:
- 4.14.0 # matches opam lock file
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file
# don't add any other because they won't be used

runs-on: ${{ matrix.os }}

env:
OCAMLRUNPARAM: b

steps:
- name: Checkout code
uses: actions/checkout@v3
Expand Down Expand Up @@ -55,12 +58,18 @@ jobs:
- 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!)
run: ruby scripts/update_suite.rb group apron-mukherjee -s

- name: Test regression cram
run: opam exec -- dune runtest tests/regression

- name: Test incremental cram
run: opam exec -- dune runtest tests/incremental

- name: Test unit
run: opam exec -- dune runtest unittest

Expand All @@ -70,6 +79,12 @@ jobs:
- name: Test incremental regression with cfg comparison
run: ruby scripts/update_suite.rb -c

- uses: actions/upload-artifact@v3
if: always()
with:
name: suite_result
path: tests/suite_result/

extraction:
if: ${{ github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' }}

Expand All @@ -79,7 +94,7 @@ jobs:
os:
- ubuntu-latest
ocaml-compiler:
- 4.14.0 # matches opam lock file
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file
# don't add any other because they won't be used

runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -117,7 +132,7 @@ jobs:
os:
- ubuntu-latest
ocaml-compiler:
- 4.14.0 # matches opam lock file
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file
# don't add any other because they won't be used
node-version:
- 14
Expand Down Expand Up @@ -153,3 +168,11 @@ jobs:

- name: Build Gobview
run: opam exec -- dune build gobview

- name: Install selenium
run: pip3 install selenium webdriver-manager

- name: Test Gobview
run: |
./goblint --enable gobview tests/regression/00-sanity/01-assert.c
python3 scripts/test-gobview.py
28 changes: 24 additions & 4 deletions .github/workflows/unlocked.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ jobs:
- ubuntu-latest
- macos-latest
ocaml-compiler:
- ocaml-variants.4.14.0+options,ocaml-option-flambda
- 4.14.x
- 4.13.x
- 4.12.x
Expand All @@ -32,6 +33,9 @@ jobs:
- os: ubuntu-latest
ocaml-compiler: 4.14.x
z3: true
- os: ubuntu-latest
ocaml-compiler: 5.0.0
apron: false

# 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
Expand Down Expand Up @@ -79,13 +83,20 @@ jobs:
if: ${{ matrix.apron }}
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!)
if: ${{ matrix.apron }}
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 regression cram
run: opam exec -- dune runtest tests/regression

- name: Test incremental cram
run: opam exec -- dune runtest tests/incremental

- name: Test unit
run: opam exec -- dune runtest unittest

Expand All @@ -109,7 +120,7 @@ jobs:
- ubuntu-latest
- macos-latest
ocaml-compiler:
- 4.14.0 # matches opam lock file
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file, downgrade deps step

name: lower-bounds (${{ matrix.os }}, ${{ matrix.ocaml-compiler }}, downgrade)

Expand Down Expand Up @@ -144,7 +155,7 @@ jobs:

- name: Downgrade dependencies
# must specify ocaml-base-compiler again to prevent it from being downgraded
run: opam install $(opam exec -- opam-0install --prefer-oldest goblint ocaml-base-compiler.${{ matrix.ocaml-compiler }})
run: opam install $(opam exec -- opam-0install --prefer-oldest goblint ocaml-variants.4.14.0+options ocaml-option-flambda)

- name: Build
run: ./make.sh nat
Expand All @@ -161,13 +172,19 @@ jobs:
- 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 regression cram
run: opam exec -- dune runtest tests/regression

- name: Test incremental cram
run: opam exec -- dune runtest tests/incremental

- name: Test unit
run: opam exec -- dune runtest unittest

Expand Down Expand Up @@ -198,7 +215,7 @@ jobs:

- name: Build dev Docker image
id: build
uses: docker/build-push-action@v3
uses: docker/build-push-action@v4
with:
context: .
target: dev
Expand All @@ -223,7 +240,7 @@ jobs:
- ubuntu-latest
- macos-latest
ocaml-compiler:
- 4.14.0 # matches opam lock file
- ocaml-variants.4.14.0+options,ocaml-option-flambda # matches opam lock file

runs-on: ${{ matrix.os }}

Expand Down Expand Up @@ -262,6 +279,9 @@ jobs:
- 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
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ _opam/
cfgs/
cfg.dot
cilcfg.*.dot
arg.dot

*.graphml
goblint.bc.js
Expand Down Expand Up @@ -90,3 +91,6 @@ witness.certificate.yml

# transformations
transformed.c

# docs
site/
8 changes: 8 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,19 @@ Ralf Vogler <[email protected]>
Ivana Zuzic <[email protected]> <[email protected]>
Kerem Çakırer <[email protected]> <[email protected]>
Sarah Tilscher <[email protected]>
Karoliine Holter <[email protected]>
<[email protected]> <[email protected]>

Elias Brandstetter <[email protected]> <[email protected]>
wherekonshade <[email protected]> <[email protected]>
Martin Wehking <[email protected]>
Martin Wehking <[email protected]> <[email protected]>
Edin Citaku <[email protected]>

<[email protected]> <[email protected]>
Alexander Eichler <[email protected]>
<[email protected]> <[email protected]>
Mireia Cano Pujol <[email protected]>
Felix Krayer <[email protected]>
Felix Krayer <[email protected]> <[email protected]>
Manuel Pietsch <[email protected]>
12 changes: 11 additions & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@ mkdocs:
configuration: mkdocs.yml

python:
version: 3.8
install:
- requirements: docs/requirements.txt

build:
os: ubuntu-22.04
tools:
python: "3.8"
jobs:
post_install:
- pip install json-schema-for-humans
post_build:
- mkdir _readthedocs/html/jsfh/
- generate-schema-doc --config-file jsfh.yml src/util/options.schema.json _readthedocs/html/jsfh/
Loading

0 comments on commit 6c60dcd

Please sign in to comment.