CLI: a closed stdout pipe exits 141 silently (was E_INTERNAL); example avoids head under pipefail
Found by the P10 fresh-VM run: `simurg inspect … | head` raised BrokenPipeError, reported as an internal error, and stopped examples/gsa_demo.sh (set -o pipefail). run_guarded now flushes stdout inside the guard and maps BrokenPipeError to ExitCode.SIGPIPE (141) without a message. p10.sh: SKIP_DOCKER/SKIP_CONDA, clearer digest report; p10t.sh runs build+pip+tutorial only.
This commit is contained in:
1 parent
1f2abcbdba
commit
dd5d87c43f
6 files changed
+38
-6
No files matched your search
@@ -56,6 +56,7 @@ for v in fresh pure; do
|
||||
done
|
||||
|
||||
echo "=== 4a. docker $(date -u +%T) ==="
|
||||
if [[ "${SKIP_DOCKER:-0}" != "1" ]]; then
|
||||
D=data/p0/gsa_v4_pgx
|
||||
BPM=$D/GSA-PGx-48v4-0_20079540_E2_bpm/GSA-PGx-48v4-0_20079540_E2.bpm
|
||||
CSV=$D/GSA-PGx-48v4-0_20079540_E2_csv/GSA-PGx-48v4-0_20079540_E2.csv
|
||||
@@ -75,8 +76,10 @@ if docker build -q -t simurg:test . > $R/docker_build.log 2>&1; then
|
||||
else
|
||||
step docker_build FAILED; tail -30 $R/docker_build.log
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "=== 4b. conda $(date -u +%T) ==="
|
||||
if [[ "${SKIP_CONDA:-0}" != "1" ]]; then
|
||||
curl -sSfL -o $W/miniforge.sh "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-$ARCH.sh" \
|
||||
&& bash $W/miniforge.sh -b -p $W/conda > /dev/null
|
||||
C=$W/conda/bin
|
||||
@@ -94,6 +97,7 @@ if $C/conda install -y -q -n base conda-build > $R/conda.log 2>&1 \
|
||||
else
|
||||
step conda_build FAILED; tail -40 $R/conda.log
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "=== 5. digests $(date -u +%T) ==="
|
||||
$W/fresh/bin/python - "$R" <<'PY' | tee $R/agreement.txt
|
||||
@@ -104,10 +108,13 @@ for kind in ("gtc", "vcf"):
|
||||
runs = {p.stem.split("_", 2)[2]: json.loads(p.read_text())[kind] for p in sorted(r.glob(f"digest_{kind}_*.json"))}
|
||||
if not runs:
|
||||
continue
|
||||
ref_name, ref = "fresh", runs.get("fresh", {})
|
||||
ref = runs.get("fresh", {})
|
||||
if not ref:
|
||||
print(f"{kind}: no reference (the pip-installed tutorial produced no outputs)")
|
||||
continue
|
||||
for name, d in runs.items():
|
||||
same = d == ref and len(d) > 0
|
||||
print(f"{kind}: {name} vs {ref_name}: {'IDENTICAL' if same else 'DIFFERENT'} ({len(d)} files)")
|
||||
if name != "fresh":
|
||||
print(f"{kind}: {name} vs fresh: {'IDENTICAL' if d == ref else 'DIFFERENT'} ({len(d)} vs {len(ref)} files)")
|
||||
PY
|
||||
{
|
||||
echo "{"; echo " \"arch\": \"$ARCH\","
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
# P10 acceptance without the Docker and conda parts (already verified): build, pip installs, tutorial, digests.
|
||||
SKIP_DOCKER=1 SKIP_CONDA=1 bash "$(dirname "$0")/p10.sh" "$@"
|
||||
Reference in new issue
Block a user