Repository navigation
build(packaging): flip the .deb build suite from bookworm to trixie - #22
Merged
Merged
Conversation
WHAT Renames `packaging/ci/build-bookworm.sh` to `build-stack.sh` and parameterizes the build container as `debian:$TARGET_SUITE`, defaulting to `trixie` — the suite the device image actually runs. The companion test seam and the adaptations doc follow the rename (`BUILD_BOOKWORM_*` -> `BUILD_STACK_*`, `BOOKWORM-ADAPTATIONS.md` -> `SUITE-ADAPTATIONS.md`), and the packaging CI lane, contract suite, daemon smoke and companion build all move to trixie with them. Adds a fail-closed build-suite parity gate: the container's own VERSION_CODENAME must equal TARGET_SUITE or the build is refused. A stack built against a newer libc than the board ships fails at load with a GLIBC_ symbol error no build step can observe, so without the gate the mismatch surfaces only on a device. WHY THE `debian/` RECIPES ARE UNCHANGED The tempting move is to revert the bookworm adaptations now that trixie is closer to the pinned sid packaging. Re-measured in a debian:trixie container, that is wrong: trixie moved BOTH udev.pc and systemd.pc into `systemd-dev`, so the `udev` build-dep supplies neither and the two meson install-dir pins are *more* load-bearing than they were on bookworm. The GI substitution also still resolves (`libgirepository1.0-dev` is current at 1.84.0-1), so reverting it would re-open a verified deviation surface for no gain. All four adapted controls resolve on trixie (`apt-get build-dep --dry-run`, exit 0). Two genuine trixie deltas are fixed: `policykit-1` no longer exists (the daemon smoke installs `polkitd`), and the contract suite's stock ModemManager baseline moves from bookworm's 1.20.4 to trixie's 1.24.0. No rebuild counter is edited here, because none is tracked: `~ceralive.N` is injected at build time by `inject-deb-version.sh` from the previous release manifest. Touching `packaging/ci/**` is a shared build input, so change detection force-alls and every source derives its own next counter — .2 -> .3 against the published v1.3.0 manifest. The companion is outside that scheme entirely and is unaffected. `closure_version` stays 2. HOW TO VERIFY bash packaging/ci/contract.sh # in debian:trixie bash packaging/ci/build-stack.sh amd64 # 27 debs, 9-package closure bash packaging/ci/test-package-contract.sh amd64 # 8/8, incl. 1.24.0 -> 1.24.2 upgrade bash packaging/ci/daemon-smoke.sh amd64 # GI typelib + Vala ABI on trixie bash packaging/ci/build-companion.sh # one Architecture: all deb bash packaging/ci/test-companion-chroot.sh # 35/35 RISKS arm64 is unproven locally — QEMU full-system emulation was not run here, so the arm64 leg of the release build remains to be demonstrated in CI. Everything above is amd64.
…commit) The release workflow VERIFIES rather than injects the first-party versions: publish-npm fails closed unless package.json, control/package.json and cli/package.json all equal the tag's X.Y.Z. Bumping them here is therefore a precondition of dispatching v1.4.0, not a consequence of it. bun.lock's two workspace `version` mirrors move with them. `bun install` does not rewrite those fields on a version-only change (the dependency graph is unchanged) and `--frozen-lockfile` passes either way, so leaving them at 1.3.0 would be silent, harmless drift — corrected rather than tolerated. Minor, not patch: the .deb build suite moves bookworm -> trixie in this release.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Flips the ModemManager-stack
.debbuild fromdebian:bookwormtodebian:trixie— thesuite the device image actually runs — and finalizes the first-party package versions for
the
v1.4.0release.packaging/ci/build-bookworm.sh→build-stack.sh, with the build containerparameterized as
debian:$TARGET_SUITE(defaulttrixie).BUILD_BOOKWORM_*→BUILD_STACK_*,packaging/BOOKWORM-ADAPTATIONS.md→packaging/SUITE-ADAPTATIONS.md.cli/smoke/run.shall move to trixie with it.VERSION_CODENAMEmustequal
TARGET_SUITE, or the build is refused.package.json/control/package.json/cli/package.json(+ the twobun.lockworkspace mirrors) go to
1.4.0.Why
A stack built against a newer libc than the board ships fails at load with a
GLIBC_symbol error that no build step can observe — the mismatch surfaces only on a device. That
is the same defect class as the recent cerastream glibc hotfix, and the root standard asks
for suite parity to be a gate rather than a convention. It now is one, and it fired
during the real build.
Why the
debian/recipes are unchanged — the counter-intuitive part. The tempting moveis to revert the bookworm adaptations now that trixie is closer to the pinned sid
packaging. Re-measured in a
debian:trixiecontainer, that is wrong: trixie moved bothudev.pcandsystemd.pcintosystemd-dev, so theudevbuild-dep supplies neitherand the two meson install-dir pins are more load-bearing than they were on bookworm. The
GI substitution also still resolves (
libgirepository1.0-devis current at1.84.0-1), soreverting it would re-open a verified deviation surface for no gain. All four adapted
controls resolve on trixie (
apt-get build-dep --dry-run, exit 0). The reasoning isrecorded in the rewritten
packaging/SUITE-ADAPTATIONS.md.Two genuine trixie deltas are fixed, both found by executing rather than by review:
daemon-smoke.shinstalledpolicykit-1, which does not exist on trixie (it is abookworm transitional package). It now installs
polkitd.test-package-contract.shhardcodedSTOCK_MM_UPSTREAM=1.20.4(bookworm). Trixie stockModemManager is
1.24.0-1+deb13u1, so CHECK 3 was silently degrading to a generic noteinstead of asserting the real
1.24.0 → 1.24.2upgrade. Now1.24.0, env-overridable.No rebuild counter is edited here, because none is tracked.
~ceralive.Nis injectedat build time by
inject-deb-version.shfrom the previous release manifest;packaging/<Source>/debian/changelogholds pristine salsa changelogs with no~ceralivesuffix at all. Touching
packaging/ci/**is a shared build input, so change detectionemits
mode=force-alland every source derives its own next counter —.2→.3againstthe published
v1.3.0manifest. The companion is outside that scheme entirely and isunaffected.
closure_versionstays 2.The version bump is a precondition rather than a consequence:
publish-npmverifies(never injects) that all three manifests equal the tag's
X.Y.Z, and fails closedotherwise.
How to verify
Packaging, in a
debian:trixiecontainer (all run here, amd64, green):Workspace lane:
Parity gate (should REFUSE):
TARGET_SUITE=bookworm bash packaging/ci/build-stack.sh amd64 # container codename != TARGET_SUITERisks
leg of the release build is demonstrated for the first time in the release workflow's
build-debjob. Everything verified above is amd64. Build-deps for all four recipes doresolve on trixie/arm64, but resolving is not building.
four sources at
~ceralive.3. The derivation is proven end-to-end against the publishedv1.3.0manifest (detector on the real post-commit diff;inject-deb-version.sh→.3for all four; companion untouched), but a real release run is what confirms it.debian/recipes changed, so thereis no packaging state to unwind — only the build container and the CI lane move back.