Watch
1
0
Fork
You've already forked SouveraineOS
0

mark package stranding resolved (TASK-25)

Pixel3Arch packages.yml now publishes all 14 device packages; pacman -Sl
souveraine-aarch64 is the manifest. Update TASK-25 status/acceptance +
record the four cross-build shapes and the committed-junk CI trap. DUMP
for the session. STATE.md last-updated 2026-07-30.
This commit is contained in:
Fimeg 2026-07-30 13:57:00 -04:00
commit ee68f5b47b
3 changed files with 123 additions and 9 deletions

View file

@ -12,10 +12,14 @@ moves; it is the resume anchor.
**Shell-surface migration checklist: `SHELL-SURFACES.md`.** Walk it before any
substrate cutover (`ii``souveraine`, later `souveraine` → viewtop). The
subconscious three-tier surface was stranded for over a week by the `ii`
`souveraine` move for want of exactly this list; five packages went stale the
same way. If a row's substrate is the thing being left, re-home it first.
`souveraine` move for want of exactly this list; nine device packages went
stale the same way for the same reason. The packages are now cured
(2026-07-30): Pixel3Arch `packages.yml` publishes all 14 into the `edge`
archive, so `pacman -Sl souveraine-aarch64` is the manifest. The surface gap
(a souveraine overlay host for the subconscious views) is still open.
Last updated: 2026-07-24 (phone updates via pacman; flashing retired).
Last updated: 2026-07-30 (every device package now publishes via CI; phone
updates via pacman; flashing retired).
## DEPLOYMENT — the phone updates with pacman. Do not flash.

View file

@ -0,0 +1,67 @@
# DUMP — package publishing green (2026-07-30)
The session that closed the TASK-25 stranding gap. Every hand-carried device
package now reaches the phone through `pacman -Syu`.
## What was wrong
9 device packages were installed on the daily-driver phone but NOT in
`souveraine-aarch64`, so they could never update — the same silent-stale
disease that bit sessiond. The audit (`pacman -Sl` vs `pacman -Qs` vs the
PKGBUILD inventory) found the memory's "5 stranded" was an undercount: the
real set was 9.
| package | arch | shape |
| --- | --- | --- |
| pulse-native-provider | any | meta |
| souveraine-osk-switch | any | script |
| souveraine-stevia | aarch64 | meson C |
| souveraine-squeekboard | aarch64 | meson C + cargo |
| blueline-edge-sense | aarch64 | Makefile C |
| hexagonrpc-blueline | aarch64 | meson C (audio ADSP — boot path) |
| tqftpserv-blueline | aarch64 | meson C (modem FW — boot path) |
| usb-signaller | aarch64 | cargo |
| hyprgrass | aarch64 | meson (Hyprland plugin) — DEFERRED |
`libssc-souveraine` is authored but the phone runs upstream `libssc` — deferred
until we switch.
## What landed
Pixel3Arch `packages.yml` (run **993**, first green) builds, signs, and
publishes all 8 into the additive `edge` release. `pacman -Sl
souveraine-aarch64` now lists 14 packages and IS the manifest. First real
upgrade delivered: `usb-signaller 0.3.1-2 → 0.3.1-3`.
Four cross-build shapes are encoded (see TASK-25). The non-obvious one: on this
toolchain `--sysroot` alone fails to link — ld resolves the sysroot `libc.so`
script's `=` paths against the wrong prefix and falls back to the host
`/lib/libc.so.6`; an explicit `-L$SYSROOT/usr/lib` is what makes ld find the
correct script.
## Traps found
- **Committed build junk.** Run 992 failed because stale bare VCS clones
(`pkgs/stevia/stevia/`, `pkgs/squeekboard/squeekboard/`) and 9 built
`*.pkg.tar.zst` binaries (incl. a 1.7 MB packfile) had been committed;
makepkg rejected the clone. Fix: `git rm`'d the junk, gitignored
`*.pkg.tar.zst` + VCS checkout dirs, set `SRCDEST` out-of-tree in CI.
- **usb-signaller built for the host tuple.** Its `prepare()`/`build()` used
`rustc`'s host target with no `--target`. Made cross-aware
(`CARGO_BUILD_TARGET` + per-target linker; `package()` follows the
`target/<triple>/release` artifact).
- **tqftpserv had no cross hook.** Added `MESON_CROSS_FILE` in `build()`,
mirroring hexagonrpc.
## Open
- The kernel (`kernel.yml`) is the last holdout — still a raw `.pkg.tar.zst`
with no `repo-add --sign`.
- hyprgrass + libssc-souveraine deferred (in-header in `packages.yml`).
- The subconscious surface still has no souveraine overlay host (see
`SHELL-SURFACES.md`) — the package-side twin of that problem is now closed.
## Connects to
TASK-25 (updated in place), STATE.md, SHELL-SURFACES.md,
`stranded-packages-publishing` memory.

View file

@ -1,8 +1,16 @@
# TASK 25 — One gitea repo for every SouveraineOS package
**Status:** 2026-07-24 — phone consumes `souveraine-aarch64` live; the other
producers still publish outside it. **Goal:** work in any repo → push to
gitea → `pacman -Syu` on the phone. No flashing, no hand-carried packages.
**Status:** 2026-07-30 — **Pixel3Arch now publishes every device package.**
`packages.yml` builds + signs all of them into the additive `edge` release,
so `pacman -Sl souveraine-aarch64` is the complete live manifest: 14 packages
(souveraine, -callaudio, -q6voiced, -ucm-blueline, -updater, upower-souveraine,
pulse-native-provider, souveraine-osk-switch, hexagonrpc-blueline,
tqftpserv-blueline, blueline-edge-sense, souveraine-stevia,
souveraine-squeekboard, usb-signaller). Two deferred on purpose: `hyprgrass`
(Hyprland plugin, phased out for viewtop) and `libssc-souveraine` (phone runs
upstream libssc; our fork isn't deployed). **Goal achieved:** push → `pacman
-Syu` on the phone, no hand-carried packages. The kernel (`kernel.yml`) is the
last holdout — it still ships a raw `.pkg.tar.zst` with no `repo-add --sign`.
## The problem in one line
@ -188,12 +196,47 @@ over ssh.
## Acceptance
- Pushing to any SouveraineOS repo produces a signed package in
`souveraine-{arch}` without hand-carrying anything.
`souveraine-{arch}` without hand-carrying anything. **DONE for every device
package except the kernel** (2026-07-30; Pixel3Arch `packages.yml`).
- The phone installs kernel, upower, squeekboard, stevia and souveraine from
`pacman -Syu`.
`pacman -Syu`. **DONE except the kernel** — squeekboard/stevia publish
alongside the rest; the first real upgrade the pipeline delivered was
`usb-signaller 0.3.1-2 → 0.3.1-3`.
- A reprovision restores the repo wiring from `rootfs-overlay/` with no manual
steps.
## Cross-build shapes (landed 2026-07-30)
Every aarch64 package cross-compiles on the archdev runner against
`$HOME/aarch64-sysroot`. Four distinct shapes live in `packages.yml`, each its
own block because the incantation differs:
- **arch=any** (pulse-native-provider, osk-switch): plain native `makepkg`.
- **meson C** (hexagonrpc, tqftpserv): a generated `--cross-file` + sysroot
pkg-config. Both PKGBUILDs honour `MESON_CROSS_FILE` in `build()`.
- **Makefile C** (blueline-edge-sense): `CC="aarch64-linux-gnu-gcc
--sysroot=… -L…/usr/lib"`; the Makefile honours `CC ?=`.
- **meson+Rust / cargo** (stevia, squeekboard via each `build-cross.sh`;
usb-signaller via `CARGO_BUILD_TARGET` + a per-target cross linker).
Two traps worth not re-deriving: (1) `--sysroot` alone does NOT link on this
toolchain — ld resolves the sysroot `libc.so` script's `=` paths against the
wrong prefix and falls back to the host `/lib/libc.so.6` ("file in wrong
format"); an explicit `-L$SYSROOT/usr/lib` makes ld find the right script
first. (2) the C cross-file is generated inline in the workflow; stevia/
squeekboard's own cross-files (`~/build/*.ini`) are pets-state, failed loud
if missing.
## What broke CI and how it was fixed
First green run was 993. Run 992 failed because **stale bare VCS clones and
built `*.pkg.tar.zst` binaries had been committed** (`pkgs/stevia/stevia/`,
`pkgs/squeekboard/squeekboard/`, 9 package files incl. a 1.7 MB packfile) —
makepkg rejected the clone as "not a clone of <url>". Fix: `git rm`'d the junk,
gitignored `*.pkg.tar.zst` + the VCS checkout dirs, and set `SRCDEST`
out-of-tree in CI so clones never land in a package dir. `usb-signaller`'s
PKGBUILD was also made cross-aware (it built for the host tuple before).
## Connects to
TASK-24 (keyboard: squeekboard/stevia are two of the packages), the