build: follow Core and Optimizer onto the trixie base - #6
Draft
HuggeK wants to merge 1 commit into
Draft
Conversation
@ srcfl/ftw#731 moves the whole FTW stack onto Debian 13 "trixie". This repo inherits that automatically -- the add-on image is built FROM the Optimizer image -- so the change that matters here is the test fixtures, which stood in for Core and Optimizer on bookworm and would have gone on testing a base that no longer ships. Also say, once, why libnss-mdns is not installed here even though Core has it: it only forwards to avahi-daemon over a Unix socket, and Supervisor gives an add-on no way to bind an arbitrary host path. FTW resolves ".local" in-process instead, which is what host_network is for. Documented in DOCS.md for operators who hit a name that will not resolve. Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com> @
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.
Note
Route-independent — this PR is needed either way. Upstream is choosing
between two routes for the base change:
srcfl/ftw#731 (whole stack on
debian:trixie-slim) and its alternativesrcfl/ftw#746 (core and updater on one
alpine:3.22base,.localresolved natively in Go).Both move
Dockerfile.optimizertopython:3.12-slim-trixie— #746because CVXPY publishes no musllinux wheels, so the optimizer cannot follow the
other two onto Alpine and only leaves oldstable. Since this repo builds
FROM ${FTW_OPTIMIZER_FROM}, the add-on lands on trixie under either route, sothe fixture change here is correct whichever is merged.
The one thing that does change with the route is the note about
libnss-mdnsbelow: under #746 it is not in the Core image at all, because musl has no NSS
plugin mechanism. The conclusion for this repo is unaffected — the add-on never
installs it and always resolves
.localin-process.Important
Blocked by srcfl/ftw#731, which
moves the FTW stack onto Debian 13 "trixie". Merge that first — until it ships,
the fixtures here would be testing a newer base than the images they stand in
for, which is the same mismatch this PR exists to remove.
What & why
The add-on image is built
FROM ${FTW_OPTIMIZER_FROM}, so it inherits the baseof the real Optimizer image. srcfl/ftw#731 moves that from
python:3.12-slim-bookwormtopython:3.12-slim-trixie— meaning this repofollows along whether or not anything changes here.
What does not follow along is
tests/fixtures/. Both fixtures pinpython:3.12-slim-bookwormand are whatcheck.ymlbuilds and smoke-testsagainst. Left alone they would keep certifying the add-on on a base that no
longer ships, which is precisely the case where a base-specific regression walks
through a green check.
Changes
tests/fixtures/core/Dockerfile,tests/fixtures/optimizer/Dockerfile—
python:3.12-slim-bookworm→python:3.12-slim-trixie, with a commentnaming what they track and why drift matters.
ftw/Dockerfile— comments only. Records that the suite arrives viaFTW_OPTIMIZER_FROM, that the package set was verified on the new base, andwhy
libnss-mdnsis deliberately not installed here even though Core has it.ftw/DOCS.md— a short operator section on devices addressed by.localname.
No version bump and no
CHANGELOG.mdentry: nothing user-visible changes for analready-published version, and the release flow owns those files.
Why libnss-mdns belongs in Core but not here
Core installs it so ordinary glibc tools in that image (
getent,curl,wget) resolve.local. It works by forwarding toavahi-daemonover/run/avahi-daemon/socket, which has to be bind-mounted from the host.Supervisor gives an add-on no way to bind an arbitrary host path — only a fixed
set of named ones (
config,ssl,share,media,backup, …). So thepackage would resolve nothing here, while suggesting to the next reader that it
does.
FTW resolves
.localin-process instead(srcfl/ftw#728), asking a host avahi
where one is reachable and querying the network directly otherwise. The add-on
always takes the second path, which is what
host_network: trueinconfig.yamlprovides. Nothing is lost — that path needs no host software.Verification
Run locally against the updated fixtures, on the real new base:
docker build tests/fixtures/coreandtests/fixtures/optimizer— both build.FTW_CORE_FROM/FTW_OPTIMIZER_FROMpointed at the fixtures, exactly as
check.ymldoes).scripts/smoke.sh ftw-addon:verify→smoke test passed./etc/debian_version=13.6,/usr/local/bin/healthcheck.pyOK,/opt/venv/bin/ftw-optimizer-healthcheckOK,
tinipresent at/usr/bin/tiniwhere theENTRYPOINTexpects it.apt-get install --no-install-recommends ca-certificates tini tzdataresolveson
python:3.12-slim-trixie— checked directly, since an unavailable packageon the new suite would have been the one real hazard in
ftw/Dockerfile.python -m compileall -q ftw scripts tests/fixturespasses.scripts/validate.pywas not run: it importsyaml, which is not installedhere, and installing it was out of scope. No YAML file is touched by this diff.