Add the cross-build sysroot recipe, verified on the device
packaging/make-sysroot.sh populates a minimal Alpine aarch64 rootfs with apk-tools-static, so a cross build needs no root, no qemu and no phone. Adapted from imsd's, plus glib-dev for the bus layer that is coming. Building against a real Alpine sysroot means the binary links dynamically against the phone's own musl and libc++ -- libc++, libc++abi, libunwind and libgcc_s are all already on pmOS. The harness this daemon replaces had to be built -static, but only because it was built with the host's glibc toolchain; that constraint was never about the target. The pipeline is proven end to end rather than assumed: the cross-built binary runs on the phone, and all five core suites pass there too -- on the real hardware, not just under qemu-aarch64. That matters for modules that are almost entirely little-endian field packing and offset arithmetic.
This commit is contained in:
parent
f2a696bbbe
commit
93692c9505
2 changed files with 67 additions and 2 deletions
16
README.md
16
README.md
|
|
@ -56,11 +56,23 @@ crafter-build test # the unit suites
|
|||
Cross-compiling for the phone:
|
||||
|
||||
```sh
|
||||
packaging/make-sysroot.sh # once; no root, no qemu, no device
|
||||
crafter-build -- --target=aarch64-alpine-linux-musl \
|
||||
--sysroot=<alpine-aarch64-sysroot> --march=armv8-a --mtune=generic
|
||||
crafter-build test --target=aarch64-alpine-linux-musl
|
||||
--sysroot=~/.cache/fingerprintd/sysroot-aarch64-alpine \
|
||||
--march=armv8-a --mtune=generic
|
||||
crafter-build test --target=aarch64-alpine-linux-musl --sysroot=... \
|
||||
--march=armv8-a --mtune=generic # runs the suites under qemu-aarch64
|
||||
```
|
||||
|
||||
The result links dynamically against the phone's own musl and libc++
|
||||
(`libc++`, `libc++abi`, `libunwind`, `libgcc_s`, all already present on pmOS).
|
||||
The research harness this replaces had to be built `-static`, but only because
|
||||
it was built with the host's glibc toolchain — that constraint does not apply
|
||||
to a real Alpine sysroot.
|
||||
|
||||
Verified on the device: all five suites pass cross-built and run **on the phone
|
||||
itself**, not only under emulation.
|
||||
|
||||
## Status
|
||||
|
||||
**The core is complete; the daemon does not run yet.** Everything was ported
|
||||
|
|
|
|||
Loading…
Reference in a new issue