Skip to content

Commit 5ec5d82

Browse files
pleichtombaumeisterpegast00
committed
open source TACO :)
This commit adds the source code and the documentation for TACO toolsuite for threshold automata to its new public home. Co-authored-by: Tom Baumeister <tom.baumeister@cispa.de> Co-authored-by: Peter Gastauer <peter.gastauer@cispa.de>
0 parents  commit 5ec5d82

379 files changed

Lines changed: 391998 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.config/about.hbs

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<html>
2+
3+
<head>
4+
<style>
5+
@media (prefers-color-scheme: dark) {
6+
body {
7+
background: #1c1c1c;
8+
color: #fff;
9+
}
10+
a {
11+
color: #17a2b8;
12+
}
13+
}
14+
.container {
15+
font-family: sans-serif;
16+
max-width: 800px;
17+
margin: 0 auto;
18+
}
19+
.intro {
20+
text-align: center;
21+
}
22+
.licenses-list {
23+
list-style-type: none;
24+
margin: 0;
25+
padding: 0;
26+
}
27+
.license-used-by {
28+
margin-top: -10px;
29+
}
30+
.license-text {
31+
max-height: 200px;
32+
overflow-y: scroll;
33+
white-space: pre-wrap;
34+
}
35+
</style>
36+
</head>
37+
38+
<body>
39+
<main class="container">
40+
<div class="intro">
41+
<h2>Third Party Licenses</h2>
42+
<p>Developing the TACO toolsuite would not be possible without the amazing open-source community. This page lists all of TACO's dependencies and their respective licenses.</p>
43+
</div>
44+
45+
<h3>Overview of licenses</h3>
46+
<ul class="licenses-overview">
47+
{{#each overview}}
48+
<li><a href="#{{id}}">{{name}}</a> ({{count}})</li>
49+
{{/each}}
50+
</ul>
51+
52+
<h3>Individual license texts</h3>
53+
<ul class="licenses-list">
54+
{{#each licenses}}
55+
<li class="license">
56+
<h4 id="{{id}}">{{name}}</h4>
57+
<h5>Used by:</h5>
58+
<ul class="license-used-by">
59+
{{#each used_by}}
60+
<li><a href="{{#if crate.repository}} {{crate.repository}} {{else}} https://crates.io/crates/{{crate.name}} {{/if}}">{{crate.name}} {{crate.version}}</a></li>
61+
{{/each}}
62+
</ul>
63+
<pre class="license-text">{{text}}</pre>
64+
</li>
65+
{{/each}}
66+
</ul>
67+
</main>
68+
</body>
69+
70+
</html>
71+

.config/nextest.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[store]
2+
# The directory under the workspace root at which nextest-related files are
3+
# written. Profile-specific storage is currently written to dir/<profile-name>.
4+
dir = "target/nextest"
5+
6+
[profile.ci]
7+
failure-output = "immediate-final"
8+
fail-fast = false
9+
10+
[profile.ci.junit]
11+
path = "test-output.xml"
12+
store-success-output = true
13+
store-failure-output = true

.dockerignore

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# local build
2+
target/
3+
/target
4+
5+
# vscode
6+
.vscode/
7+
.idea
8+
9+
# git
10+
.git/
11+
12+
# gitignore
13+
*.gitignore
14+
15+
# SMT replay file
16+
*.smt2
17+
18+
# Log files
19+
*.log
20+
*.out
21+
22+
# Dot files
23+
*.dot
24+
25+
# CI
26+
*.gitlab-ci.yml
27+
.config/nextest.toml
28+
29+
# Profiling data
30+
profile.json
31+
*.profraw
32+
profile.json*
33+
34+
Cargo.lock
35+
36+
# Code guidelines file
37+
code-guidelines.md
38+
resources/code-guidelines/
39+
40+
# Unnecessary Dockerfiles
41+
AE-Dockerfile
42+
Debug-Dockerfile
43+
Dockerfile
44+
45+
# Compute Scripts
46+
./scripts/compute-cluster.sh
47+
48+
# potential artifacts
49+
artifact/
50+
artifact.zip
51+
52+
# ignore benchmark results on local machine
53+
*.log
54+
*.out
55+
*.csv
56+
x/

.github/workflows/release.yml

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# Workflow that publishes a new TACO version once a matching tag is created
2+
name: Publish to crates.io, Create Release Draft & Build Container Image
3+
4+
on:
5+
workflow_dispatch:
6+
push:
7+
tags:
8+
- "v*.*.*"
9+
- "v*.*.*-alpha.*"
10+
- "v*.*.*-beta.*"
11+
- "v*.*.*-rc.*"
12+
13+
env:
14+
CARGO_TERM_COLOR: always
15+
MIN_RUST_VERSION: "1.92.0"
16+
REGISTRY: ghcr.io
17+
IMAGE_NAME: "${{ github.repository }}"
18+
19+
jobs:
20+
# Validate minimum supported Rust version declared in `Cargo.toml`.
21+
# Note that warnings are allowed as some may appear due to backwards
22+
# compatiblity issues.
23+
minimum-supported:
24+
name: Minimum version
25+
runs-on: ubuntu-latest
26+
steps:
27+
- uses: actions/checkout@v4
28+
- name: Install rust version
29+
run: rustup install ${MIN_RUST_VERSION}
30+
- name: Install Dependencies (Z3,CVC5,Graphviz)
31+
run: sudo apt-get install -y z3 cvc5 graphviz
32+
- name: check
33+
run: cargo +${MIN_RUST_VERSION} check --all-features
34+
- name: check
35+
run: cargo +${MIN_RUST_VERSION} test --all-features
36+
37+
# Publish the new version to crates.io
38+
crates_io_publish:
39+
name: Publish (Crates.io) & Create Release Draft
40+
needs: minimum-supported
41+
environment: release
42+
runs-on: ubuntu-latest
43+
permissions:
44+
id-token: write # Required for OIDC token exchange
45+
contents: write # required to create a release
46+
steps:
47+
- uses: actions/checkout@v4
48+
- name: Install rust version
49+
run: rustup install ${MIN_RUST_VERSION}
50+
- uses: rust-lang/crates-io-auth-action@v1
51+
id: auth
52+
- run: cargo publish --workspace
53+
env:
54+
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
55+
- name: Create draft release
56+
uses: softprops/action-gh-release@v2
57+
with:
58+
tag_name: ${{ steps.version.outputs.tag }}
59+
draft: true
60+
body: "This is a release draft generated by Github Actions..."
61+
env:
62+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
63+
64+
# Build the TACO container for the release
65+
build_container:
66+
name: Build Container Image
67+
environment: release
68+
needs: minimum-supported
69+
runs-on: ubuntu-latest
70+
permissions:
71+
contents: read
72+
packages: write
73+
attestations: write
74+
id-token: write
75+
steps:
76+
- uses: actions/checkout@v4
77+
- name: Login to GitHub Container Registry
78+
uses: docker/login-action@v3
79+
with:
80+
registry: ${{ env.REGISTRY }}
81+
username: ${{ github.actor }}
82+
password: ${{ secrets.GITHUB_TOKEN }}
83+
- name: Extract metadata (tags, labels) for Docker
84+
id: meta
85+
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
86+
with:
87+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
88+
tags: |
89+
type=semver,pattern={{version}}
90+
type=semver,pattern={{major}}.{{minor}}
91+
type=raw,value=latest
92+
- name: Set up QEMU
93+
uses: docker/setup-qemu-action@v3
94+
- name: Set up Docker Buildx
95+
uses: docker/setup-buildx-action@v3
96+
- name: Build and push
97+
uses: docker/build-push-action@v6
98+
id: push
99+
with:
100+
platforms: linux/amd64 # ,linux/arm64 (currently fails for CUDD)
101+
context: .
102+
push: true
103+
tags: ${{ steps.meta.outputs.tags }}
104+
labels: ${{ steps.meta.outputs.labels }}
105+
- name: Generate artifact attestation
106+
uses: actions/attest-build-provenance@v3
107+
with:
108+
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}
109+
subject-digest: ${{ steps.push.outputs.digest }}
110+
push-to-registry: true

.github/workflows/static.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Deployment Job for the Documentation
2+
name: Build & Deploy the Documentation
3+
4+
on:
5+
push:
6+
branches: ["main"]
7+
8+
# Allows you to run this workflow manually from the Actions tab
9+
workflow_dispatch:
10+
11+
env:
12+
CARGO_TERM_COLOR: always
13+
RUST_VERSION: "1.92.0"
14+
15+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
16+
permissions:
17+
contents: read
18+
pages: write
19+
id-token: write
20+
21+
# Allow only one concurrent deployment, skipping runs queued between the run
22+
# in-progress and latest queued. However, do NOT cancel in-progress runs as we
23+
# want to allow these production deployments to complete.
24+
concurrency:
25+
group: "pages"
26+
cancel-in-progress: false
27+
28+
jobs:
29+
# Build & deploy new version of the documentation
30+
deploy:
31+
environment:
32+
name: github-pages
33+
url: ${{ steps.deployment.outputs.page_url }}
34+
runs-on: ubuntu-latest
35+
steps:
36+
- name: Checkout
37+
uses: actions/checkout@v4
38+
- name: Install dependencies
39+
run: sudo apt-get install -y python3 python3-pip nodejs npm --no-install-recommends
40+
- name: Install cargo, MyST and cargo-about
41+
run: |
42+
rustup install ${RUST_VERSION}
43+
pip3 install mystmd --break-system-packages
44+
cargo +${RUST_VERSION} install --locked cargo-about
45+
- name: Generate Docs
46+
run: |
47+
cd ./docs && myst build --html && cd ../
48+
mkdir -p ./public && mv ./docs/_build/html/* ./public/
49+
cargo doc --no-deps --document-private-items --workspace
50+
mkdir -p ./public/dev-docs && mv ./target/doc/* ./public/dev-docs/
51+
cargo about generate --workspace ./.config/about.hbs > third-party-licenses.html
52+
mkdir -p ./public/about && mv third-party-licenses.html ./public/about
53+
- name: Setup Pages
54+
uses: actions/configure-pages@v5
55+
- name: Upload artifact
56+
uses: actions/upload-pages-artifact@v3
57+
with:
58+
# Upload public folder
59+
path: "./public"
60+
- name: Deploy to GitHub Pages
61+
id: deployment
62+
uses: actions/deploy-pages@v4

0 commit comments

Comments
 (0)