diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8a5993f..9871b1c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -99,6 +99,30 @@ jobs: sudo install -m 0755 /tmp/cvc5-bin /usr/local/bin/cvc5 cvc5 --version | head -1 + # The semantics, solver and check suites read the OMG pilot corpora and the + # training corpus from examples/, as OpenSysML's own CI downloads them. + - name: Cache the OMG corpora + uses: actions/cache@v4 + with: + path: | + opensysml/examples/sysml-v2-training + opensysml/examples/pilot-corpora + key: omg-corpora-${{ hashFiles('opensysml/scripts/download-training-examples.sh', 'opensysml/scripts/download-pilot-corpora.sh', 'opensysml/scripts/pilot-pin.sh') }} + + - name: Download the OMG corpora + run: | + cd "$GITHUB_WORKSPACE/opensysml" + ./scripts/download-training-examples.sh + ./scripts/download-pilot-corpora.sh + for root in sysml-v2-training pilot-corpora/sysml-examples pilot-corpora/sysml-validation pilot-corpora/kerml-examples; do + count=$(find "examples/$root" -type f \( -name '*.sysml' -o -name '*.kerml' \) | wc -l) + echo "$root: $count model files" + if [ "$count" -eq 0 ]; then + echo "error: examples/$root is empty" >&2 + exit 1 + fi + done + - name: Run OpenSysML against these libraries env: EXTENSIONS_DIR: ${{ github.workspace }}/extensions @@ -110,4 +134,5 @@ jobs: fi scripts/sync-extension-libraries.sh --source "$EXTENSIONS_DIR" make stdlib-snapshot-check || make stdlib-snapshot - go test ./internal/workspace/libs/... ./internal/exec/... ./internal/ir/... ./internal/doc/... ./internal/semantic/... ./internal/check/... ./internal/translate/... ./tests/hygiene/... + # internal/exec/runtime and internal/exec/smt outlast go test's default 10m on these runners. + go test -timeout 60m ./internal/workspace/libs/... ./internal/exec/... ./internal/ir/... ./internal/doc/... ./internal/semantic/... ./internal/check/... ./internal/translate/... ./tests/hygiene/... diff --git a/README.md b/README.md index 479b66b..ca7d699 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,11 @@ Every tool also needs the OMG standard library (`sysml.library`). - **OpenSysML** — bundled: it vendors a pinned copy at `internal/workspace/libs/stdlib/OpenSysML Libraries/`, pinned by `scripts/extension-libraries-pin.sh` and refreshed by - `scripts/sync-extension-libraries.sh`. Edits land here first. + `scripts/sync-extension-libraries.sh`. Edits land here first. A newer + revision than the bundled one is read as a project interchange archive: + name the release `.kpar` beside the model + (`sysml -validate model.sysml opensysml-extension-libraries.kpar`) or put it + under a `-library-root` directory. ## Versioning