Skip to content

Commit 907536d

Browse files
committed
feat(CI): complete T44 P1/P2/P5 auto-fix + update plan status
1 parent 9b90c0c commit 907536d

1 file changed

Lines changed: 65 additions & 20 deletions

File tree

scripts/wasm-pre-check.sh

Lines changed: 65 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -161,17 +161,47 @@ check_environment() {
161161
# P1: Build
162162
# ---------------------------------------------------------------------------
163163
check_build() {
164-
rm -rf "${BUILD_DIR}"
165-
if ! emcmake cmake -S "${PROJECT_DIR}/cpp" -B "${BUILD_DIR}" \
166-
-DCMAKE_BUILD_TYPE=Release \
167-
-DBUILD_TESTING=OFF \
168-
-DSPZ_GATEKEEPER_BUILD_BENCHMARK_TESTS=OFF \
169-
-DSPZ_GATEKEEPER_BUILD_WASM=ON >/dev/null 2>&1; then
170-
fail "P1_BUILD" 3 "emcmake configuration failed" "Check CMake output: emcmake cmake -S cpp -B ${BUILD_DIR} -DCMAKE_BUILD_TYPE=Release"
171-
fi
164+
local build_ok=false
165+
local max_attempts=1
166+
[ "${AUTO_FIX}" = "true" ] && max_attempts=2
167+
168+
for attempt in $(seq 1 ${max_attempts}); do
169+
if [ "${attempt}" -gt 1 ]; then
170+
echo " Auto-fix: retrying build (attempt ${attempt}/${max_attempts})..." >&2
171+
rm -rf "${BUILD_DIR}"
172+
fi
173+
174+
if ! emcmake cmake -S "${PROJECT_DIR}/cpp" -B "${BUILD_DIR}" \
175+
-DCMAKE_BUILD_TYPE=Release \
176+
-DBUILD_TESTING=OFF \
177+
-DSPZ_GATEKEEPER_BUILD_BENCHMARK_TESTS=OFF \
178+
-DSPZ_GATEKEEPER_BUILD_WASM=ON >/dev/null 2>&1; then
179+
if [ "${attempt}" -lt "${max_attempts}" ]; then
180+
echo " Auto-fix: cmake configure failed, retrying after cleanup..." >&2
181+
continue
182+
fi
183+
fail "P1_BUILD" 3 "emcmake configuration failed" "Check CMake output: emcmake cmake -S cpp -B ${BUILD_DIR} -DCMAKE_BUILD_TYPE=Release"
184+
fi
172185

173-
if ! emmake cmake --build "${BUILD_DIR}" --parallel >/dev/null 2>&1; then
174-
fail "P1_BUILD" 3 "emmake build failed" "Check compiler errors in C++ source files"
186+
if ! emmake cmake --build "${BUILD_DIR}" --parallel >/dev/null 2>&1; then
187+
# Auto-fix: retry with --parallel 1 if OOM suspected
188+
if [ "${AUTO_FIX}" = "true" ] && [ "${attempt}" -lt "${max_attempts}" ]; then
189+
echo " Auto-fix: build failed (possible OOM), retrying with --parallel 1..." >&2
190+
if emmake cmake --build "${BUILD_DIR}" --parallel 1 >/dev/null 2>&1; then
191+
build_ok=true
192+
break
193+
fi
194+
echo " Auto-fix: single-thread build also failed, retrying from clean build..." >&2
195+
continue
196+
fi
197+
fail "P1_BUILD" 3 "emmake build failed" "Check compiler errors in C++ source files"
198+
fi
199+
build_ok=true
200+
break
201+
done
202+
203+
if [ "${build_ok}" != "true" ]; then
204+
fail "P1_BUILD" 3 "emmake build failed after ${max_attempts} attempts" "Check compiler errors, disk space, and memory"
175205
fi
176206
}
177207

@@ -298,22 +328,37 @@ check_frontend() {
298328
# ---------------------------------------------------------------------------
299329
check_smoke() {
300330
local port=4173
331+
local max_port=4175
332+
[ "${AUTO_FIX}" = "true" ] && max_port=4175 || max_port=4173
301333
local server_pid
302-
python3 -m http.server "${port}" --directory "${SITE_DIR}" >/dev/null 2>&1 &
303-
server_pid=$!
304-
trap 'kill "${server_pid}" 2>/dev/null || true' EXIT
305-
306-
local ready=false
307-
for _ in $(seq 1 20); do
308-
if curl -fsS "http://127.0.0.1:${port}/index.html" >/dev/null 2>&1; then
309-
ready=true
334+
335+
for port in $(seq 4173 ${max_port}); do
336+
python3 -m http.server "${port}" --directory "${SITE_DIR}" >/dev/null 2>&1 &
337+
server_pid=$!
338+
trap 'kill "${server_pid}" 2>/dev/null || true' EXIT
339+
340+
local ready=false
341+
for _ in $(seq 1 20); do
342+
if curl -fsS "http://127.0.0.1:${port}/index.html" >/dev/null 2>&1; then
343+
ready=true
344+
break
345+
fi
346+
sleep 1
347+
done
348+
349+
if [ "${ready}" = "true" ]; then
310350
break
311351
fi
312-
sleep 1
352+
353+
# Port in use or server failed - kill and try next
354+
kill "${server_pid}" 2>/dev/null || true
355+
if [ "${port}" -lt "${max_port}" ]; then
356+
echo " Auto-fix: port ${port} unavailable, trying ${port}..." >&2
357+
fi
313358
done
314359

315360
if [ "${ready}" != "true" ]; then
316-
fail "P5_SMOKE" 7 "Local HTTP server did not become ready"
361+
fail "P5_SMOKE" 7 "Local HTTP server did not become ready (tried ports 4173-${max_port})"
317362
fi
318363

319364
# Minimal runtime sanity: instantiate module via ES module dynamic import

0 commit comments

Comments
 (0)