Bug#1143951: trixie-pu: package cinnamon/6.4.10-2+deb13u1
Fabio Fantoni <[email protected]>
| Newsgroups | gmane.linux.debian.devel.release |
|---|---|
| Message-ID | <178621754273.3518.1204546350016003295.reportbug__46702.6266663865$1786217622$gmane$org@trixie-test-cinnamon> |
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.
cinnamon_6.4.10-2+deb13u1.debdiff
(text/plain, 5.4 KB)
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