Package: release.debian.org
Severity: normal
Tags: trixie
X-Debbugs-Cc: [email protected]
Control: affects -1 + src:cinnamon
User: [email protected]
Usertags: pu
[ 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.
diff -Nru cinnamon-6.4.10/debian/changelog cinnamon-6.4.10/debian/changelog
--- cinnamon-6.4.10/debian/changelog 2025-07-06 22:10:27.000000000 +0200
+++ cinnamon-6.4.10/debian/changelog 2026-08-08 13:43:06.000000000 +0200
@@ -1,3 +1,12 @@
+cinnamon (6.4.10-2+deb13u1) trixie; urgency=medium
+
+ * d/patches: add upstream patch to gracefully handle a missing
+ content-length header during downloads, fixing download and update
+ of spices (applets, desklets, extensions and themes), broken by a
+ server-side change (Closes: #1142724)
+
+ -- Fabio Fantoni <[email protected]> Sat, 08 Aug 2026 13:43:06 +0200
+
cinnamon (6.4.10-2) unstable; urgency=medium
* d/control: add gnome-icon-theme to cinnamon depends (Closes: #1106195)
diff -Nru cinnamon-6.4.10/debian/control cinnamon-6.4.10/debian/control
--- cinnamon-6.4.10/debian/control 2025-07-06 22:10:27.000000000 +0200
+++ cinnamon-6.4.10/debian/control 2026-08-08 13:43:06.000000000 +0200
@@ -43,7 +43,7 @@
Rules-Requires-Root: no
Homepage: https://github.com/linuxmint/cinnamon
Vcs-Browser: https://salsa.debian.org/cinnamon-team/cinnamon
-Vcs-Git: https://salsa.debian.org/cinnamon-team/cinnamon.git
+Vcs-Git: https://salsa.debian.org/cinnamon-team/cinnamon.git -b debian/trixie
Package: cinnamon
Architecture: any
diff -Nru cinnamon-6.4.10/debian/gbp.conf cinnamon-6.4.10/debian/gbp.conf
--- cinnamon-6.4.10/debian/gbp.conf 2025-07-06 22:10:27.000000000 +0200
+++ cinnamon-6.4.10/debian/gbp.conf 2026-08-08 13:43:06.000000000 +0200
@@ -1,6 +1,6 @@
[DEFAULT]
# DEP-14 format
-debian-branch = debian/latest
+debian-branch = debian/trixie
upstream-branch = upstream/latest
# Always use pristine tar
diff -Nru cinnamon-6.4.10/debian/patches/series
cinnamon-6.4.10/debian/patches/series
--- cinnamon-6.4.10/debian/patches/series 2025-07-06 22:10:27.000000000
+0200
+++ cinnamon-6.4.10/debian/patches/series 2026-08-08 13:43:06.000000000
+0200
@@ -3,3 +3,4 @@
new-iso-flags-folder.patch
change-upload-system-info-path.patch
upstream/Move-sass-compilation-to-its-own-custom-target-so-it-show.patch
+upstream/Spices.py-Gracefully-handle-a-missing-content-length-head.patch
diff -Nru
cinnamon-6.4.10/debian/patches/upstream/Spices.py-Gracefully-handle-a-missing-content-length-head.patch
cinnamon-6.4.10/debian/patches/upstream/Spices.py-Gracefully-handle-a-missing-content-length-head.patch
---
cinnamon-6.4.10/debian/patches/upstream/Spices.py-Gracefully-handle-a-missing-content-length-head.patch
1970-01-01 01:00:00.000000000 +0100
+++
cinnamon-6.4.10/debian/patches/upstream/Spices.py-Gracefully-handle-a-missing-content-length-head.patch
2026-08-08 13:43:06.000000000 +0200
@@ -0,0 +1,57 @@
+From: Michael Webster <[email protected]>
+Date: Sun, 19 Jul 2026 09:07:13 -0400
+Subject: Spices.py: Gracefully handle a missing content-length header during
+ downloads.
+
+ref: #13868.
+
+Origin: upstream,
https://github.com/linuxmint/cinnamon/commit/360f021e2abcdc93520ecd895453316064a84bb6
+Applied-Upstream: 6.4.14
+Bug-Debian: https://bugs.debian.org/1142724
+---
+ files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py | 15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
+
+diff --git a/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py
b/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py
+index a00c300..8258eec 100644
+--- a/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py
++++ b/files/usr/share/cinnamon/cinnamon-settings/bin/Spices.py
+@@ -315,6 +315,10 @@ class Spice_Harvester(GObject.Object):
+ if self.window:
+ self.window.set_progress(int(fraction*100))
+
++ def _set_progressbar_pulse(self):
++ for progressbar in self.progressbars:
++ progressbar.pulse()
++
+ def _set_progressbar_visible(self, visible):
+ for progressbar in self.progressbars:
+ progressbar.revealer.set_reveal_child(visible)
+@@ -327,10 +331,12 @@ class Spice_Harvester(GObject.Object):
+ fraction = float(current) / float(total)
+ text = _("Downloading images:") + f" {current}/{total}"
+ self._set_progressbar_text(text)
++ self._set_progressbar_fraction(fraction)
++ elif totalSize == -1:
++ self._set_progressbar_pulse()
+ else:
+ fraction = count * blockSize / float((totalSize / blockSize + 1)
* blockSize)
+-
+- self._set_progressbar_fraction(fraction)
++ self._set_progressbar_fraction(fraction)
+
+ while Gtk.events_pending():
+ Gtk.main_iteration()
+@@ -418,9 +424,10 @@ class Spice_Harvester(GObject.Object):
+
+ try:
+ response = requests.get(url, proxies=proxy_info, stream=True,
timeout=15)
+- assert response.ok
++ response.raise_for_status()
+
+- totalSize = int(response.headers.get('content-length'))
++ content_length = response.headers.get('content-length')
++ totalSize = int(content_length) if content_length else -1
+
+ for data in response.iter_content(chunk_size=blockSize):
+ count += 1
diff -Nru cinnamon-6.4.10/debian/salsa-ci.yml
cinnamon-6.4.10/debian/salsa-ci.yml
--- cinnamon-6.4.10/debian/salsa-ci.yml 2025-07-06 22:10:27.000000000 +0200
+++ cinnamon-6.4.10/debian/salsa-ci.yml 2026-08-08 13:43:06.000000000 +0200
@@ -2,5 +2,6 @@
-
https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
variables:
+ RELEASE: trixie
SALSA_CI_DISABLE_MISSING_BREAKS: 0
SALSA_CI_DISABLE_RC_BUGS: 0