Commit 8672403
authored
ci: Android shares this implementation, and CI says so (#26)
* ci: Android shares this implementation, and CI says so
mcpp 2026.9.11.3 makes `aarch64-linux-android` and `x86_64-linux-android` real
target rows, and the question that raises for this package has a short answer:
nothing here changes. This file is written on the Linux kernel's own
system-call interface and borrows nothing from any C library. Android's kernel
IS Linux, the per-architecture system-call ABI is the same, and `src/sys.h`
branches on `__x86_64__` / `__aarch64__` -- the architecture, not the operating
system.
A claim about what does not change is exactly the kind that rots unmeasured, so
one step now asserts it.
THE SECOND HALF IS THE INTERESTING ONE. Compiling is the weaker statement; the
property this package exists for is that its objects name no C library symbol,
and on Android the C library is a DIFFERENT one. A reference that resolved to
glibc by habit would appear here as a bionic name, so the same permitted set is
applied to the same kind of output for another libc. The architecture of the
objects is asserted too rather than assumed from `--target`, because one of the
two is not the runner's.
TWO NAMES THE NATIVE SET DOES NOT HAVE, and measurement decides them:
`__emutls_get_address` and `__aarch64_swp4_acq` are both defined in the NDK's
`libclang_rt.builtins-<arch>-android.a` and in NEITHER bionic `libc.so`. They
belong to the category the set already admits for memcpy and its three
neighbours -- compiler-emitted, computing rather than calling, and incapable of
re-entering this implementation. The emulated-TLS one is not mcpp's choice:
`build.ninja` for this target carries no `-femulated-tls`, and the NDK's clang
emits the reference by itself from a bare `thread_local int x;` at API 21.
They are permitted in this step only; widening the native step's set for a
target it was not measured on is how a check stops being one.
One matrix leg, because the axis does not reach this target: the Android rows
carry a capability pin, so mcpp refuses any other toolchain for them and
`matrix.toolchain` selects nothing here.
NOT EXECUTION, and the step says so. Running an Android artifact needs a device
or an emulator. Measured by hand on an API 24 x86_64 image: a program written
against openkal alone -- no C library, no `import std` -- printed
`openkal: 1-2-3` with exit 0. The device ABI has no execution path from an
x86_64 runner at all, since Google's emulator refuses a foreign guest.
Verified in both directions by extracting the step and running it locally: it
passes on both ABIs, and with a `puts` call added it reports
"references a symbol it must not: puts" for each and exits 1.
* ci: bump the engine pin with the step that needs it
The Android step ran against mcpp 2026.8.27.1 -- this repository's pinned
`MCPP_VERSION` -- where `aarch64-linux-android` and `x86_64-linux-android` do
not exist as target rows at all, so it failed with exit 2. The rows become
real in 2026.9.11.3, which is now tagged.
This is the CI pin, which is what this repository is TESTED against, and not a
floor: nothing here records a minimum engine for consumers, and moving a floor
would make a client stopped at the old one unable to use this package at all.
The job stays red until the index carries 2026.9.11.3 -- `xlings install
mcpp@$MCPP_VERSION` can only resolve what the published index has, and the
release's own ecosystem job is what puts it there. That ordering is the
dependency this PR already records, now expressed in the file rather than only
in prose.1 parent 34f7668 commit 8672403
1 file changed
Lines changed: 117 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
34 | 40 | | |
35 | 41 | | |
36 | 42 | | |
| |||
303 | 309 | | |
304 | 310 | | |
305 | 311 | | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
306 | 422 | | |
307 | 423 | | |
308 | 424 | | |
| |||
0 commit comments