Skip to content

Commit b526d4d

Browse files
committed
fix(chapel-ci): pin CHPL_UNWIND=system + always install libunwind + bump cache gen v1→v2
PR #100 surfaced a 5th Chapel-2.8.0 sharp edge from the #99 Wave 2 series: error: The runtime has not been built for this configuration. There is no runtime for 'CHPL_UNWIND=bundled' Valid options: system Root cause: cached $CHPL_HOME from #99 was built when libunwind-dev was installed (gated on cache-miss), so chpl auto-inferred CHPL_UNWIND=system. On PR #100 the cache hit, libunwind-dev install was SKIPPED, so the consumer chpl invocation auto-inferred CHPL_UNWIND=bundled — mismatch against the cached runtime, mass-panic build aborts. Three-part fix at source: 1. Pin CHPL_UNWIND=system explicitly in both Build and Activate steps (no more auto-inference, no more cache-hit/miss drift). 2. Promote libunwind-dev to always-run (split out of the cache-miss-gated Install step). Cheap to install (~1-2s apt) on every run; matches the cached configuration. 3. Bump CHAPEL_MULTILOCALE_CACHE_GEN v1→v2 to discard the inconsistent cache and force a fresh build with the explicit CHPL_UNWIND. Also includes the docs(truthfulness) audit from this branch: - README badge corrected: 402 → 782 runnable tests (cargo authoritative) - ROADMAP fly.toml [x] → [~] (file doesn't exist in this repo) - ROADMAP/Wiki '500+ repositories' → '303-repo estate (2026-04-12)' - chapel/README ~5-15%× soften to UNMEASURED ESTIMATE - README + Wiki note PA001/PA001b SARIF collapse Resolves blocking chapel-multilocale failure on PR #100.
1 parent 7e28c32 commit b526d4d

3 files changed

Lines changed: 38 additions & 9 deletions

File tree

.github/workflows/chapel-ci.yml

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ env:
5757
CHAPEL_SRC_URL: "https://github.com/chapel-lang/chapel/releases/download/2.8.0/chapel-2.8.0.tar.gz"
5858
# $CHPL_HOME for the multilocale build. Cache key bumps via CHAPEL_MULTILOCALE_CACHE_GEN.
5959
CHAPEL_MULTILOCALE_HOME: /opt/chapel-multilocale
60-
CHAPEL_MULTILOCALE_CACHE_GEN: "v1"
60+
# Bump v1→v2 after pinning CHPL_UNWIND=system explicitly (was auto-inferred,
61+
# which caused mismatches on cache-hit runs without libunwind-dev present).
62+
CHAPEL_MULTILOCALE_CACHE_GEN: "v2"
6163

6264
jobs:
6365
detect-relevant-changes:
@@ -280,14 +282,25 @@ jobs:
280282
path: ${{ env.CHAPEL_MULTILOCALE_HOME }}
281283
key: ${{ runner.os }}-chapel-multilocale-${{ env.CHAPEL_VERSION }}-gasnet-smp-${{ env.CHAPEL_MULTILOCALE_CACHE_GEN }}
282284

283-
- name: Install Chapel build dependencies
284-
if: steps.chapel-cache.outputs.cache-hit != 'true'
285+
# libunwind-dev MUST be installed even on cache-hit runs: the cached
286+
# $CHPL_HOME was built with CHPL_UNWIND=system inferred from libunwind
287+
# presence, so subsequent chpl invocations also need to find libunwind
288+
# at runtime to pick the matching runtime variant. Without it, chpl
289+
# infers CHPL_UNWIND=bundled, doesn't find a matching cached runtime,
290+
# and aborts with "no runtime for CHPL_UNWIND=bundled".
291+
- name: Install libunwind (needed even on cache-hit for CHPL_UNWIND=system)
285292
run: |
286293
set -euo pipefail
287294
sudo apt-get update -qq
295+
sudo apt-get install -y --no-install-recommends libunwind-dev
296+
297+
- name: Install remaining Chapel build dependencies
298+
if: steps.chapel-cache.outputs.cache-hit != 'true'
299+
run: |
300+
set -euo pipefail
288301
sudo apt-get install -y --no-install-recommends \
289302
build-essential gcc g++ make perl python3 \
290-
m4 autoconf automake libtool libunwind-dev pkg-config
303+
m4 autoconf automake libtool pkg-config
291304
292305
- name: Build Chapel from source with CHPL_COMM=gasnet
293306
if: steps.chapel-cache.outputs.cache-hit != 'true'
@@ -313,6 +326,11 @@ jobs:
313326
# tries to verify LLVM headers via clang/Basic/Version.h and aborts
314327
# with a CHPL_LLVM "unset" make target.
315328
export CHPL_LLVM=none
329+
# Pin CHPL_UNWIND=system explicitly. Auto-detection depends on
330+
# libunwind-dev being installed at the moment chpl runs, which
331+
# makes cache-hit vs cache-miss runs inconsistent. Pinning ensures
332+
# the cached runtime variant always matches the env consumers see.
333+
export CHPL_UNWIND=system
316334
# setchplenv.bash references ${MANPATH} unconditionally; GH runners
317335
# don't export MANPATH by default, so seed it before sourcing.
318336
export MANPATH="${MANPATH:-}"
@@ -331,6 +349,7 @@ jobs:
331349
set -euo pipefail
332350
export CHPL_HOME="${{ env.CHAPEL_MULTILOCALE_HOME }}"
333351
export CHPL_LLVM=none
352+
export CHPL_UNWIND=system
334353
export MANPATH="${MANPATH:-}"
335354
source "$CHPL_HOME/util/setchplenv.bash"
336355
# Persist env to subsequent steps via GITHUB_ENV
@@ -340,6 +359,8 @@ jobs:
340359
echo "CHPL_COMM_SUBSTRATE=smp"
341360
echo "CHPL_LAUNCHER=smp"
342361
echo "CHPL_TARGET_COMPILER=gnu"
362+
echo "CHPL_LLVM=none"
363+
echo "CHPL_UNWIND=system"
343364
echo "PATH=$CHPL_HOME/bin/$(uname -s)-$(uname -m):$PATH"
344365
} >> "$GITHUB_ENV"
345366
chpl --version

CHANGELOG.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,17 @@
33
## [Unreleased]
44

55
### Changed (2026-06-02) — truthfulness audit (humans + machines)
6-
- **README badge + Status block** corrected: 402 → 539 `#[test]` annotations
7-
(the badge had not tracked the actual count for several releases). Same
8-
count now also reflected in the Wiki Home page (was `282+`).
6+
- **README badge + Status block** corrected: 402 → **782 runnable tests**
7+
(per `cargo test --release -- --list`; the underlying 539 `#[test]`
8+
annotations expand via doctests + integration tiers). The badge had
9+
not tracked actual count for several releases. Wiki Home was `282+`.
10+
- **chapel-ci `chapel-multilocale` gate** robustified (#100 collateral):
11+
pinned `CHPL_UNWIND=system` explicitly + moved `libunwind-dev` install
12+
to always-run (not gated on cache-hit). On cache-hit runs without
13+
libunwind-dev, chpl auto-inferred `CHPL_UNWIND=bundled` and aborted
14+
with "no runtime for bundled" because the cached runtime was built
15+
with `system`. Cache-gen counter bumped `v1``v2` to discard the
16+
inconsistent cache. Fifth Chapel-2.8.0 sharp edge from #99 Wave 2.
917
- **ROADMAP v2.2.0**: downgraded "Per-project VeriSimDB instance:
1018
`deploy/panic-attack/fly.toml` for `verisim-panic-api`" from `[x]` to
1119
`[~]` — the API runs but the toml file is NOT in this repo (lives in

README.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ image:https://img.shields.io/badge/License-MPL--2.0-blue.svg[License: MPL-2.0,li
1111
image:https://api.thegreenwebfoundation.org/greencheckimage/github.com[Green Web,link="https://www.thegreenwebfoundation.org/green-web-check/?url=github.com"]
1212
image:https://img.shields.io/badge/status-active-green[Status]
1313
image:https://img.shields.io/badge/domain-security--analysis-blue[Domain]
14-
image:https://img.shields.io/badge/tests-539%20passing-brightgreen[Tests]
14+
image:https://img.shields.io/badge/tests-782%20passing-brightgreen[Tests]
1515
image:https://img.shields.io/badge/languages-49-blue[Languages]
1616

1717
**panic-attack** is a multi-language security analysis and stress-testing system.
@@ -202,7 +202,7 @@ VeriSimDB remains the foundation dependency for these exports, so every snapshot
202202
Current state: **v2.5.0**
203203

204204
* 32,000+ lines of Rust + Chapel
205-
* 539 `#[test]` annotations across unit / property / e2e / aspect / integration tiers
205+
* 782 runnable tests (per `cargo test --release -- --list`; 539 `#[test]` annotations plus doctest + integration expansions) across unit / property / e2e / aspect / integration tiers
206206
* 0 warnings
207207
* 25+ CLI subcommands
208208
* 49 supported languages (25 canonical weak-point categories PA001–PA025; `PA001b` SARIF subvariant collapses two allocation flavors under the same canonical rule)

0 commit comments

Comments
 (0)