mirror of
https://github.com/Z3Prover/z3
synced 2026-06-07 17:40:54 +00:00
The `build-and-report` workflow failed in `build-and-report` because
FStar was invoked with a default `OTHERFLAGS` value containing
`--smt.ho_matching true`, which current FStar no longer recognizes. This
change removes that default while keeping the input configurable for
manual runs.
- **Root cause**
- Workflow default `fstar_otherflags` was set to `--smt.ho_matching
true`.
- During `make`, FStar exited with `error: unrecognized option
'--smt.ho_matching'` (job `79905082893`).
- **Workflow changes**
- Updated `.github/workflows/fstar-master-build.yml`:
- `workflow_dispatch.inputs.fstar_otherflags.default` changed from
`--smt.ho_matching true` to `""`.
- Job env fallback `FSTAR_OTHERFLAGS` changed from `--smt.ho_matching
true` to `""`.
- Removed the outdated option example from the `fstar_otherflags` input
description.
- **Resulting behavior**
- Default scheduled/manual workflow runs no longer pass unsupported
FStar flags.
- Custom flags can still be provided via `fstar_otherflags` when needed.
```yaml
fstar_otherflags:
description: "Extra FStar OTHERFLAGS"
required: false
default: ""
# ...
FSTAR_OTHERFLAGS: ${{ github.event.inputs.fstar_otherflags || '' }}
```
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
185 lines
7.5 KiB
YAML
185 lines
7.5 KiB
YAML
name: Build FStar master with Z3 master
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "9 4 * * *"
|
|
workflow_dispatch:
|
|
inputs:
|
|
z3_ref:
|
|
description: Z3 ref to checkout and build
|
|
required: false
|
|
default: master
|
|
z3_cmake_args:
|
|
description: Extra CMake arguments for Z3 build
|
|
required: false
|
|
default: ""
|
|
z3_runtime_args:
|
|
description: "Extra Z3 runtime args (example: smt.ho_matching=true)"
|
|
required: false
|
|
default: "smt.ho_matching=true"
|
|
fstar_ref:
|
|
description: FStar ref to checkout and build
|
|
required: false
|
|
default: master
|
|
fstar_opam_switch:
|
|
description: OCaml switch for FStar build
|
|
required: false
|
|
default: "4.14.2"
|
|
fstar_otherflags:
|
|
description: "Extra FStar OTHERFLAGS"
|
|
required: false
|
|
default: ""
|
|
discussion_category:
|
|
description: Discussion category name
|
|
required: false
|
|
default: "Agentic Workflows"
|
|
|
|
permissions:
|
|
contents: read
|
|
discussions: write
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
build-and-report:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 180
|
|
env:
|
|
Z3_REF: ${{ github.event.inputs.z3_ref || 'master' }}
|
|
Z3_CMAKE_ARGS: ${{ github.event.inputs.z3_cmake_args || '' }}
|
|
Z3_RUNTIME_ARGS: ${{ github.event.inputs.z3_runtime_args || 'smt.ho_matching=true' }}
|
|
FSTAR_REF: ${{ github.event.inputs.fstar_ref || 'master' }}
|
|
FSTAR_OPAM_SWITCH: ${{ github.event.inputs.fstar_opam_switch || '4.14.2' }}
|
|
FSTAR_OTHERFLAGS: ${{ github.event.inputs.fstar_otherflags || '' }}
|
|
DISCUSSION_CATEGORY: ${{ github.event.inputs.discussion_category || 'Agentic Workflows' }}
|
|
steps:
|
|
- name: Checkout Z3
|
|
uses: actions/checkout@v6.0.3
|
|
with:
|
|
ref: ${{ env.Z3_REF }}
|
|
fetch-depth: 1
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
set -euo pipefail
|
|
sudo apt-get update -y
|
|
sudo apt-get install -y cmake ninja-build python3 git curl unzip opam m4 pkg-config libgmp-dev
|
|
|
|
- name: Build Z3
|
|
run: |
|
|
set -euo pipefail
|
|
mkdir -p /tmp/gh-aw/agent
|
|
cmake -S . -B build/release -G Ninja -DCMAKE_BUILD_TYPE=Release $Z3_CMAKE_ARGS
|
|
ninja -C build/release z3
|
|
./build/release/z3 --version | tee /tmp/gh-aw/agent/z3-version.txt
|
|
printf '(check-sat)\n' | ./build/release/z3 $Z3_RUNTIME_ARGS -in | tee /tmp/gh-aw/agent/z3-runtime-check.txt
|
|
|
|
- name: Prepare Z3 aliases for FStar
|
|
run: |
|
|
set -euo pipefail
|
|
mkdir -p /tmp/gh-aw/agent/z3-bin
|
|
ln -sf "$GITHUB_WORKSPACE/build/release/z3" /tmp/gh-aw/agent/z3-bin/z3
|
|
ln -sf "$GITHUB_WORKSPACE/build/release/z3" /tmp/gh-aw/agent/z3-bin/z3-4.8.5
|
|
ln -sf "$GITHUB_WORKSPACE/build/release/z3" /tmp/gh-aw/agent/z3-bin/z3-4.13.3
|
|
/tmp/gh-aw/agent/z3-bin/z3 --version
|
|
|
|
- name: Build FStar
|
|
run: |
|
|
set -euo pipefail
|
|
rm -rf /tmp/gh-aw/agent/FStar
|
|
git clone --depth=1 --recurse-submodules --branch "$FSTAR_REF" https://github.com/FStarLang/FStar.git /tmp/gh-aw/agent/FStar
|
|
cd /tmp/gh-aw/agent/FStar
|
|
echo "FStar commit: $(git rev-parse HEAD)" | tee /tmp/gh-aw/agent/fstar-commit.txt
|
|
|
|
opam init --disable-sandboxing --yes
|
|
opam switch create "$FSTAR_OPAM_SWITCH" --yes || opam switch "$FSTAR_OPAM_SWITCH"
|
|
eval "$(opam env --switch="$FSTAR_OPAM_SWITCH")"
|
|
opam install --deps-only . --yes
|
|
|
|
Z3_VERSION="$(sed -E -n 's/^Z3 version ([0-9]+\.[0-9]+\.[0-9]+).*/\1/p' /tmp/gh-aw/agent/z3-version.txt | head -1)"
|
|
test -n "$Z3_VERSION" || { echo "Error: Failed to extract Z3 version from /tmp/gh-aw/agent/z3-version.txt (expected: 'Z3 version X.Y.Z')"; cat /tmp/gh-aw/agent/z3-version.txt || true; exit 1; }
|
|
|
|
PATH="/tmp/gh-aw/agent/z3-bin:$PATH" OTHERFLAGS="--z3version $Z3_VERSION $FSTAR_OTHERFLAGS" make -j"$(nproc)"
|
|
test -x /tmp/gh-aw/agent/FStar/out/bin/fstar.exe || { echo "Error: FStar binary not found or not executable at /tmp/gh-aw/agent/FStar/out/bin/fstar.exe"; exit 1; }
|
|
/tmp/gh-aw/agent/FStar/out/bin/fstar.exe --version | tee /tmp/gh-aw/agent/fstar-version.txt
|
|
|
|
- name: Create discussion summary
|
|
uses: actions/github-script@v9
|
|
env:
|
|
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
|
with:
|
|
script: |
|
|
const fs = require('fs');
|
|
|
|
const z3VersionText = fs.readFileSync('/tmp/gh-aw/agent/z3-version.txt', 'utf8').trim();
|
|
const fstarVersionFile = fs.readFileSync('/tmp/gh-aw/agent/fstar-version.txt', 'utf8').trim();
|
|
const fstarVersionText = fstarVersionFile ? fstarVersionFile.split('\n')[0] : 'unknown';
|
|
const fstarCommitLine = fs.readFileSync('/tmp/gh-aw/agent/fstar-commit.txt', 'utf8').trim();
|
|
const fstarCommit = fstarCommitLine.replace(/^FStar commit:\s*/, '');
|
|
const date = new Date().toISOString().slice(0, 10);
|
|
|
|
const owner = context.repo.owner;
|
|
const repo = context.repo.repo;
|
|
const categoryName = process.env.DISCUSSION_CATEGORY;
|
|
|
|
const categoryQuery = await github.graphql(
|
|
`query($owner:String!, $repo:String!) {
|
|
repository(owner:$owner, name:$repo) {
|
|
id
|
|
discussionCategories(first:50) {
|
|
nodes { id name }
|
|
}
|
|
}
|
|
}`,
|
|
{ owner, repo }
|
|
);
|
|
|
|
const categories = categoryQuery.repository.discussionCategories.nodes || [];
|
|
const normalized = categoryName.trim().toLowerCase();
|
|
const category = categories.find(c => c.name.toLowerCase() === normalized);
|
|
if (!category) {
|
|
throw new Error(`Discussion category '${categoryName}' not found`);
|
|
}
|
|
|
|
const body = [
|
|
`### Build status`,
|
|
`- ✅ Z3 build completed`,
|
|
`- ✅ FStar build completed`,
|
|
``,
|
|
`### Inputs used`,
|
|
`- z3_ref: \`${process.env.Z3_REF}\``,
|
|
`- z3_cmake_args: \`${process.env.Z3_CMAKE_ARGS}\``,
|
|
`- z3_runtime_args: \`${process.env.Z3_RUNTIME_ARGS}\``,
|
|
`- fstar_ref: \`${process.env.FSTAR_REF}\``,
|
|
`- fstar_opam_switch: \`${process.env.FSTAR_OPAM_SWITCH}\``,
|
|
`- fstar_otherflags: \`${process.env.FSTAR_OTHERFLAGS}\``,
|
|
``,
|
|
`### Produced versions`,
|
|
`- Z3: \`${z3VersionText}\``,
|
|
`- FStar: \`${fstarVersionText}\``,
|
|
`- FStar commit: \`${fstarCommit}\``,
|
|
``,
|
|
`### Run`,
|
|
`- Workflow run: ${process.env.RUN_URL}`
|
|
].join('\n');
|
|
|
|
await github.graphql(
|
|
`mutation($repositoryId:ID!, $categoryId:ID!, $title:String!, $body:String!) {
|
|
createDiscussion(input:{
|
|
repositoryId:$repositoryId,
|
|
categoryId:$categoryId,
|
|
title:$title,
|
|
body:$body
|
|
}) {
|
|
discussion { url }
|
|
}
|
|
}`,
|
|
{
|
|
repositoryId: categoryQuery.repository.id,
|
|
categoryId: category.id,
|
|
title: `FStar build with configurable Z3 inputs — ${date}`,
|
|
body
|
|
}
|
|
);
|