Skip to content

Commit 3ce56a2

Browse files
hyperpolymathclaude
andcommitted
ci(chapel): bump 2.3.0→2.8.0 + libunwind-dev preinstall to fix the link-phase exec ENOENT
PR #141's chapel-build job consistently fails at `Make Binary - Linking` with `error in exec: No such file or directory` — the chpl 2.3.0 .deb omits the bundled LLVM backend, so when the typecheck step tries to link libproven.so via `chpl ... -lproven`, chpl exec()'s a clang/lld it doesn't ship. The PR author validated locally with chpl 2.8.0; align CI with that. Pattern mirrors sibling estate repo panic-attack/chapel-ci.yml which has been running 2.8.0 green since the chapel rehab (PRs #85/#86/#88/#89/#90, 2026-05-30). Changes: - CHAPEL_VERSION 2.3.0 → 2.8.0; URL + SHA256 repinned (944a454b8a791f344312fcd261b562871159b74f5ef41d81e11833eb21d85f60, verified out-of-band against the GitHub Releases asset). - All four install blocks (chapel-build, chapel-symbol-audit, chapel-smoke, chapel-tests) preinstall libunwind-dev (the chpl-built binaries' runtime link-time dep on the ubuntu .deb path) and drop the CHPL_HOME / CHPL_TARGET_* env overrides — 2.8.0 auto-configures its target tuple correctly, so the 2.3.0-era runtime-tuple workaround is obsolete (verified against panic-attack). - Each install block now ends with `chpl --version` as the version probe (consistent across all four). Net: -73/+30 lines. Source fix, not bypass — the .deb-toolchain mismatch caused the failure and bumping to a self-contained toolchain removes the root cause. Refs #141. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 0394019 commit 3ce56a2

1 file changed

Lines changed: 30 additions & 73 deletions

File tree

.github/workflows/chapel-ci.yml

Lines changed: 30 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,15 @@ concurrency:
5454
env:
5555
# Pinned Chapel deb (Ubuntu 22.04 amd64). SHA-256 verified out-of-band
5656
# against the GitHub Releases asset; mismatch fails the install step.
57-
CHAPEL_VERSION: '2.3.0'
58-
CHAPEL_DEB_URL: 'https://github.com/chapel-lang/chapel/releases/download/2.3.0/chapel-2.3.0-1.ubuntu22.amd64.deb'
59-
CHAPEL_DEB_SHA256: 'b7c1a48cbf26cfc7ad9af22a84ea4becb1a5e2fd485ec4a1f5f8a69e8a7cd58c'
57+
# 2.8.0 (not 2.3.0): the 2.3.0 .deb is slim and omits the bundled LLVM
58+
# backend, so `chpl ... -lproven` fails the link phase with the cryptic
59+
# `error in exec: No such file or directory` when chpl tries to spawn a
60+
# clang/lld it doesn't ship. 2.8.0 ships a self-contained toolchain and
61+
# matches the version the PR author validated against locally — same
62+
# version proven's sister panic-attack repo's chapel-ci runs on.
63+
CHAPEL_VERSION: '2.8.0'
64+
CHAPEL_DEB_URL: 'https://github.com/chapel-lang/chapel/releases/download/2.8.0/chapel-2.8.0-1.ubuntu22.amd64.deb'
65+
CHAPEL_DEB_SHA256: '944a454b8a791f344312fcd261b562871159b74f5ef41d81e11833eb21d85f60'
6066
# Pinned Zig version (kept in sync with .github/workflows/zig-ffi.yml).
6167
# Pinned Zig version. Matches ffi/zig/build.zig.zon's
6268
# `minimum_zig_version = "0.15.2"`.
@@ -163,31 +169,18 @@ jobs:
163169
- name: Install Chapel ${{ env.CHAPEL_VERSION }} (SHA-pinned .deb)
164170
run: |
165171
set -euo pipefail
166-
curl -fsSL -o /tmp/chapel.deb "$CHAPEL_DEB_URL"
172+
# libunwind-dev is a runtime link-time dep for chpl-built binaries
173+
# on the ubuntu .deb path; sibling estate repo (panic-attack)
174+
# established this preinstall as the working pattern.
175+
sudo apt-get update -qq
176+
sudo apt-get install -y libunwind-dev
177+
curl -fsSL --retry 3 -o /tmp/chapel.deb "$CHAPEL_DEB_URL"
167178
echo "$CHAPEL_DEB_SHA256 /tmp/chapel.deb" | sha256sum --check
168-
sudo apt-get update
169179
sudo apt-get install -y /tmp/chapel.deb
170-
# The Chapel .deb installs CHPL_HOME under /usr/share/chapel/<minor>
171-
# and ships a runtime built for ONE target tuple:
172-
# linux64/llvm/x86_64/cpu-none/loc-flat/comm-none/tasks-qthreads/...
173-
# We pin CHPL_TARGET_CPU=none so chpl matches that prebuilt runtime;
174-
# otherwise the host-CPU auto-probe picks `native` and chpl bails
175-
# with "The runtime has not been built for this configuration".
176-
CHPL_HOME="$(dirname "$(dirname "$(realpath "$(which chpl)")")")"
177-
if [ ! -d "$CHPL_HOME/modules" ]; then
178-
for cand in /usr/share/chapel/2.3 /usr/share/chapel/2 /usr/lib/chapel/2.3; do
179-
if [ -d "$cand/modules" ]; then CHPL_HOME="$cand"; break; fi
180-
done
181-
fi
182-
{
183-
echo "CHPL_HOME=$CHPL_HOME"
184-
echo "CHPL_TARGET_PLATFORM=linux64"
185-
echo "CHPL_TARGET_COMPILER=llvm"
186-
echo "CHPL_TARGET_ARCH=x86_64"
187-
echo "CHPL_TARGET_CPU=none"
188-
} | tee -a "$GITHUB_ENV"
180+
# Chapel 2.8.0 .deb auto-configures its target tuple; no
181+
# CHPL_TARGET_* overrides needed (the 2.3.0-era runtime-tuple
182+
# mismatch is gone — verified against panic-attack chapel-ci).
189183
chpl --version
190-
test -d "$CHPL_HOME/modules" || { echo "::error::CHPL_HOME bundled modules not found"; exit 1; }
191184
192185
- name: Chapel typecheck via driver build
193186
working-directory: proven/bindings/chapel
@@ -278,24 +271,12 @@ jobs:
278271
- name: Install Chapel ${{ env.CHAPEL_VERSION }} (SHA-pinned .deb)
279272
run: |
280273
set -euo pipefail
281-
curl -fsSL -o /tmp/chapel.deb "$CHAPEL_DEB_URL"
274+
sudo apt-get update -qq
275+
sudo apt-get install -y libunwind-dev
276+
curl -fsSL --retry 3 -o /tmp/chapel.deb "$CHAPEL_DEB_URL"
282277
echo "$CHAPEL_DEB_SHA256 /tmp/chapel.deb" | sha256sum --check
283-
sudo apt-get update
284278
sudo apt-get install -y /tmp/chapel.deb
285-
CHPL_HOME="$(dirname "$(dirname "$(realpath "$(which chpl)")")")"
286-
if [ ! -d "$CHPL_HOME/modules" ]; then
287-
for cand in /usr/share/chapel/2.3 /usr/share/chapel/2 /usr/lib/chapel/2.3; do
288-
if [ -d "$cand/modules" ]; then CHPL_HOME="$cand"; break; fi
289-
done
290-
fi
291-
{
292-
echo "CHPL_HOME=$CHPL_HOME"
293-
echo "CHPL_TARGET_PLATFORM=linux64"
294-
echo "CHPL_TARGET_COMPILER=llvm"
295-
echo "CHPL_TARGET_ARCH=x86_64"
296-
echo "CHPL_TARGET_CPU=none"
297-
} | tee -a "$GITHUB_ENV"
298-
test -d "$CHPL_HOME/modules" || { echo "::error::CHPL_HOME bundled modules not found"; exit 1; }
279+
chpl --version
299280
300281
- name: Install just
301282
uses: extractions/setup-just@dd310ad5a97d8e7b41793f8ef055398d51ad4de6 # v2
@@ -341,24 +322,12 @@ jobs:
341322
- name: Install Chapel ${{ env.CHAPEL_VERSION }} (SHA-pinned .deb)
342323
run: |
343324
set -euo pipefail
344-
curl -fsSL -o /tmp/chapel.deb "$CHAPEL_DEB_URL"
325+
sudo apt-get update -qq
326+
sudo apt-get install -y libunwind-dev
327+
curl -fsSL --retry 3 -o /tmp/chapel.deb "$CHAPEL_DEB_URL"
345328
echo "$CHAPEL_DEB_SHA256 /tmp/chapel.deb" | sha256sum --check
346-
sudo apt-get update
347329
sudo apt-get install -y /tmp/chapel.deb
348-
CHPL_HOME="$(dirname "$(dirname "$(realpath "$(which chpl)")")")"
349-
if [ ! -d "$CHPL_HOME/modules" ]; then
350-
for cand in /usr/share/chapel/2.3 /usr/share/chapel/2 /usr/lib/chapel/2.3; do
351-
if [ -d "$cand/modules" ]; then CHPL_HOME="$cand"; break; fi
352-
done
353-
fi
354-
{
355-
echo "CHPL_HOME=$CHPL_HOME"
356-
echo "CHPL_TARGET_PLATFORM=linux64"
357-
echo "CHPL_TARGET_COMPILER=llvm"
358-
echo "CHPL_TARGET_ARCH=x86_64"
359-
echo "CHPL_TARGET_CPU=none"
360-
} | tee -a "$GITHUB_ENV"
361-
test -d "$CHPL_HOME/modules" || { echo "::error::CHPL_HOME bundled modules not found"; exit 1; }
330+
chpl --version
362331
363332
- name: Install just
364333
uses: extractions/setup-just@dd310ad5a97d8e7b41793f8ef055398d51ad4de6 # v2
@@ -416,24 +385,12 @@ jobs:
416385
- name: Install Chapel ${{ env.CHAPEL_VERSION }} (SHA-pinned .deb)
417386
run: |
418387
set -euo pipefail
419-
curl -fsSL -o /tmp/chapel.deb "$CHAPEL_DEB_URL"
388+
sudo apt-get update -qq
389+
sudo apt-get install -y libunwind-dev
390+
curl -fsSL --retry 3 -o /tmp/chapel.deb "$CHAPEL_DEB_URL"
420391
echo "$CHAPEL_DEB_SHA256 /tmp/chapel.deb" | sha256sum --check
421-
sudo apt-get update
422392
sudo apt-get install -y /tmp/chapel.deb
423-
CHPL_HOME="$(dirname "$(dirname "$(realpath "$(which chpl)")")")"
424-
if [ ! -d "$CHPL_HOME/modules" ]; then
425-
for cand in /usr/share/chapel/2.3 /usr/share/chapel/2 /usr/lib/chapel/2.3; do
426-
if [ -d "$cand/modules" ]; then CHPL_HOME="$cand"; break; fi
427-
done
428-
fi
429-
{
430-
echo "CHPL_HOME=$CHPL_HOME"
431-
echo "CHPL_TARGET_PLATFORM=linux64"
432-
echo "CHPL_TARGET_COMPILER=llvm"
433-
echo "CHPL_TARGET_ARCH=x86_64"
434-
echo "CHPL_TARGET_CPU=none"
435-
} | tee -a "$GITHUB_ENV"
436-
test -d "$CHPL_HOME/modules" || { echo "::error::CHPL_HOME bundled modules not found"; exit 1; }
393+
chpl --version
437394
438395
- name: Install just
439396
uses: extractions/setup-just@dd310ad5a97d8e7b41793f8ef055398d51ad4de6 # v2

0 commit comments

Comments
 (0)