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:
parent
66dbb601fa
commit
ee68f5b47b
3 changed files with 123 additions and 9 deletions
10
STATE.md
10
STATE.md
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
67
docs/DUMP-packages-publish-2026-07-30.md
Normal file
67
docs/DUMP-packages-publish-2026-07-30.md
Normal 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.
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue