Skip to content

ci: build against musl, and compile the environment tests on Windows - #1436

Merged
JustVugg merged 1 commit into
devfrom
ci/musl-and-windows-env-tests
Sep 11, 2026
Merged

JustVugg merged 1 commit into
devfrom
ci/musl-and-windows-env-tests

Conversation

@JustVugg

Copy link
Copy Markdown
Owner

Follow-up to #1435 and #1432, both merged. Neither could be verified by CI on the platform it was about.

musl. #1430 reported that colibri does not compile on Alpine. The fix is in, and nothing in CI could have caught the defect or can catch its return: every Linux job runs glibc and the container image is debian-slim. This adds an Alpine leg that builds colibri and olmoe and asserts the binary carries no reference to malloc_trim, which is the half a musl build can see.

Windows. make test-c runs on the Linux leg only. Every test that sets an environment variable was therefore unobservable on the platform whose shim it depends on, which is exactly how fourteen test files came to carry a private _putenv_s helper (#1420, #1429). The Windows leg already compiles tests/test_compat_env; this adds the two cheapest tests that reach the shim through engine code, test_omp_tune and test_qwen36_ctx.

Verified locally: both tests build and pass, the workflow parses. The Alpine leg I cannot run here, so this PR is also its first run.

Two platform holes, both of the same shape: a defect could only be
found by being the user, because no job compiled the code where it
lived.

colibri did not build against musl at all (#1430): malloc_trim is a
glibc extension and the guard was on __linux__. Every Linux job here
runs glibc and the container image is debian-slim, so nothing could
see it. An Alpine leg builds two engines and asserts the binary
carries no reference to the glibc-only symbol, which is the half a
musl build can check.

The C test suite runs on the Linux leg only, which means every test
that sets an environment variable was unobservable on the platform
whose shim it depends on. That is how fourteen test files ended up
each carrying a private _putenv_s helper around a setenv that wrote
the wrong copy of the environment (#1420, #1429). The Windows leg now
compiles and runs the two cheapest tests that drive engine code
through the environment, next to the shim test itself.

Neither leg is a performance gate and neither adds a minute to the
critical path. They exist so the next defect of this class is a red
check rather than an issue.
@JustVugg
JustVugg merged commit 45e7b7f into dev Sep 11, 2026
27 checks passed
This was referenced Sep 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant