Skip to content

Commit ada26b3

Browse files
committed
Bump to v0.99.1: surface build log on CI job summary
Fix CI/CD diagnostic gap. The Bootstrap step's actual gcc error isn't visible to anyone without log-download permission on the repo, so a build break (we just hit one on ubuntu-latest's gcc without my local gcc-14 catching it) leaves external contributors guessing. This commit: tee the build output to a file, post the tail on the job summary page when the step fails, and print every installed gcc-N version on Linux so a runner-default-GCC change is identifiable from the run log. Also drop the dead-store buf_capacity in try_parse_numeric and move *err = 0 back to the top so declarations group cleanly -- both safe local tidy-ups, no behaviour change.
1 parent 215c735 commit ada26b3

4 files changed

Lines changed: 45 additions & 7 deletions

File tree

.github/workflows/ci.yml

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,43 @@ jobs:
2222
- uses: actions/checkout@v4
2323

2424
- name: Compiler version
25-
run: $CC --version
25+
run: |
26+
$CC --version
27+
# On ubuntu-latest the alt-versions are also available; print
28+
# them so a future regression that's gcc-13-specific (or
29+
# 12-specific) is easier to triage.
30+
if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then
31+
for v in 12 13 14; do
32+
if command -v gcc-$v >/dev/null; then
33+
gcc-$v --version | head -1
34+
fi
35+
done
36+
fi
2637
2738
- name: Bootstrap mino
2839
# Generates the bundled-source headers and compiles ./mino in
2940
# one step. Anything beyond bootstrap belongs in `./mino task`.
30-
run: make
41+
# Tee stderr so a build failure leaves a captured log for the
42+
# post-step summary below; the live step output stays
43+
# unchanged for anyone with log access.
44+
run: |
45+
set -o pipefail
46+
make 2>&1 | tee /tmp/build.log
47+
48+
- name: Surface build failure
49+
# When the build step above fails the actor without log access
50+
# cannot diagnose. Surface the captured tail on the job
51+
# summary page (visible via the public Actions UI without
52+
# signing in) so external contributors can see what broke.
53+
if: failure()
54+
run: |
55+
{
56+
echo "## Build failure (${{ matrix.os }})"
57+
echo ''
58+
echo '```'
59+
tail -60 /tmp/build.log 2>/dev/null || echo '(no build log captured)'
60+
echo '```'
61+
} >> "$GITHUB_STEP_SUMMARY"
3162
3263
- name: Test
3364
# Run the suite runner directly so stdout streams. `task test`

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# Changelog
22

3+
## v0.99.1
4+
5+
CI plumbing: surface the build log on the job summary page (visible
6+
without log-in) when a step fails, and print every available `gcc-N`
7+
version on Linux so a regression triggered by the runner-image
8+
default GCC change is easier to triage. Also tidy up the
9+
`try_parse_numeric` reader helper -- drop a dead-store
10+
`buf_capacity` variable and move the now-late `*err = 0;`
11+
assignment back to the top of the function body.
12+
313
## v0.99.0
414

515
External jank-lang/clojure-test-suite compatibility pass: 166/223

src/eval/read.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,6 @@ static mino_val_t *read_set_form(mino_state_t *S, const char **p)
797797
static mino_val_t *try_parse_numeric(mino_state_t *S, const char *start,
798798
size_t len, int *err)
799799
{
800-
*err = 0;
801800
char stack_buf[64];
802801
char *buf = stack_buf;
803802
char *heap_buf = NULL;
@@ -807,20 +806,18 @@ static mino_val_t *try_parse_numeric(mino_state_t *S, const char *start,
807806
int has_dot_or_exp = 0;
808807
int looks_numeric = 1;
809808
mino_val_t *out = NULL;
810-
int buf_capacity = (int)sizeof(stack_buf);
811809
size_t i;
812810

811+
*err = 0;
813812
/* Bigint / bigdec literals can run hundreds of digits long; fall
814813
* back to a heap buffer so the parser doesn't punt on them. */
815814
if (len + 1 > sizeof(stack_buf)) {
816815
heap_buf = (char *)malloc(len + 1);
817816
if (heap_buf == NULL) return NULL;
818817
buf = heap_buf;
819-
buf_capacity = (int)(len + 1);
820818
}
821819
memcpy(buf, start, len);
822820
buf[len] = '\0';
823-
(void)buf_capacity;
824821
#define TRY_PARSE_RETURN(v) do { out = (v); goto try_parse_done; } while (0)
825822

826823
/* Sign prefix. */

src/mino.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
*/
2828
#define MINO_VERSION_MAJOR 0
2929
#define MINO_VERSION_MINOR 99
30-
#define MINO_VERSION_PATCH 0
30+
#define MINO_VERSION_PATCH 1
3131

3232
/*
3333
* Human-readable version string of the *linked* runtime, e.g. "0.48.0".

0 commit comments

Comments
 (0)