[ Reason ]
Downloading and updating Cinnamon Spices (applets, desklets, extensions and
themes) from cinnamon-settings is broken in trixie. It is not a regression
introduced in Debian: the Spices server stopped sending a content-length
header, and Spices.py assumed it was always present, so
int(response.headers.get('content-length')) raises TypeError and every
download fails. This affects all users of the Spices download/update feature
in trixie, and it cannot be fixed by the user (except manually editing the
code).
[ Impact ]
Without the update, installing or updating any applet, desklet, extension or
theme from the Spices site keeps failing in trixie for as long as the server
does not send the header, with no workaround available in the GUI.
[ Tests ]
The package has no automated test coverage for this code path, so the fix was
verified by hand in a clean trixie VM running the full Cinnamon desktop from
the archive. With cinnamon 6.4.10-2 the failure reproduces: downloading or
updating a spice from cinnamon-settings fails. After installing the proposed
packages, built with sbuild in a trixie chroot, downloading and updating
spices completes normally, with the progress bar pulsing while the size is
unknown; nothing else in cinnamon-settings changed behaviour.
The same fix is in unstable since 6.6.9-1 (#1142724, closed on 2026-07-24) and
has been shipped by upstream in its 5.4.x to 6.6.x point releases.
[ Risks ]
Low. It is a small change to a single Python file, taken verbatim from
upstream: it is the 6.4-maintenance cherry-pick, so it applies to 6.4.10 as-is
and is part of upstream 6.4.14. It is limited to the Spices download code
path, where it treats a missing content-length as an unknown size (pulsing
progress bar instead of a fraction) and replaces the assert response.ok with
response.raise_for_status(). Nothing outside cinnamon-settings' Spices
downloader is touched.
[ Checklist ]
[x] *all* changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in stable
[x] the issue is verified as fixed in unstable
[ Changes ]
d/patches: added upstream/Spices.py-Gracefully-handle-a-missing-content-length-head.patch,
a verbatim cherry-pick of upstream commit 360f021e2 (branch 6.4-maintenance,
released in 6.4.14):
- _url_retrieve(): content-length is read into a variable and, when
absent, the total size is set to -1 instead of crashing in int(None);
assert response.ok becomes response.raise_for_status()
- _update_progress(): with a total size of -1 the progress bar pulses
(new _set_progressbar_pulse()) instead of computing a fraction from an
unknown total
The debdiff also shows the branch-keeping changes, with no functional effect:
Vcs-Git and debian/gbp.conf now point at the debian/trixie branch, and
debian/salsa-ci.yml sets RELEASE: trixie.
[ Other info ]
The breakage comes from a server-side change, so it hits users of the current
trixie package right now and will keep doing so until the fix is available. If
you consider it suitable for trixie-updates, that would get it to users
sooner; otherwise the next point release is fine.