Bug#970241: buster-pu: package gnome-weather/3.26.0-6~deb10u1
Package: release.debian.org
Severity: normal
Tags: buster
User: release.debian.org@packages.debian.org
Usertags: pu
[ Reason ]
Belatedly fixing #935090 as requested by an upstream developer
[ Impact ]
If an invalid location is saved in dconf/GSettings, gnome-weather would
crash on startup, from which users cannot recover through the UI.
[ Tests ]
Manually tested on a Debian 10 system
[ Risks ]
Low-risk change:
- the fix has been in unstable for a long time without bug reports
- a version functionally equivalent to this one (3.26.0-6) was in unstable
for a month without bug reports
- gnome-weather is unlikely to be a critical part of anyone's workflow
[ 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 (old)stable
[x] the issue is verified as fixed in unstable
[ Changes ]
- d/patches: The actual bug fix, from upstream
- d/gbp.conf: Switch branches for stable updates
diffstat for gnome-weather-3.26.0 gnome-weather-3.26.0
changelog | 25 +++++++
gbp.conf | 4 -
patches/app-Use-find_nearest_city-instead-of-new_detached.patch | 34 ++++++++++
patches/series | 2
patches/shared-world.js-don-t-use-detached-location-from-settings.patch | 31 +++++++++
5 files changed, 94 insertions(+), 2 deletions(-)
diff -Nru gnome-weather-3.26.0/debian/changelog gnome-weather-3.26.0/debian/changelog
--- gnome-weather-3.26.0/debian/changelog 2018-10-10 01:52:46.000000000 +0100
+++ gnome-weather-3.26.0/debian/changelog 2020-09-13 14:13:06.000000000 +0100
@@ -1,3 +1,28 @@
+gnome-weather (3.26.0-6~deb10u1) buster; urgency=medium
+
+ * Team upload
+ * Upload to stable to fix #935090
+ * d/gbp.conf: Set packaging and upstream branches for Debian 10
+ stable updates
+
+ -- Simon McVittie <smcv@debian.org> Sun, 13 Sep 2020 14:13:06 +0100
+
+gnome-weather (3.26.0-6) unstable; urgency=medium
+
+ * Team upload
+ * d/p/app-Use-find_nearest_city-instead-of-new_detached.patch,
+ d/p/shared-world.js-don-t-use-detached-location-from-settings.patch:
+ Add patches from version 3.32.1 to prevent a crash when the locations
+ configured are invalid.
+ In particular, this is a prerequisite for correcting the airport code
+ for Lima in #935075, because otherwise, gnome-weather would read the
+ old airport code from dconf on startup, and crash.
+ Thanks to Diego Escalante Urrelo. (Closes: #935090)
+ * d/gbp.conf: Set packaging branch to debian/unstable.
+ debian/master is now tracking newer GNOME releases.
+
+ -- Simon McVittie <smcv@debian.org> Mon, 19 Aug 2019 19:02:55 +0100
+
gnome-weather (3.26.0-5) unstable; urgency=medium
* Update Vcs fields for migration to https://salsa.debian.org/
diff -Nru gnome-weather-3.26.0/debian/gbp.conf gnome-weather-3.26.0/debian/gbp.conf
--- gnome-weather-3.26.0/debian/gbp.conf 2018-10-10 01:52:46.000000000 +0100
+++ gnome-weather-3.26.0/debian/gbp.conf 2020-09-13 14:13:06.000000000 +0100
@@ -1,7 +1,7 @@
[DEFAULT]
pristine-tar = True
-debian-branch = debian/master
-upstream-branch = upstream/latest
+debian-branch = debian/buster
+upstream-branch = upstream/3.26.x
[buildpackage]
sign-tags = True
diff -Nru gnome-weather-3.26.0/debian/patches/app-Use-find_nearest_city-instead-of-new_detached.patch gnome-weather-3.26.0/debian/patches/app-Use-find_nearest_city-instead-of-new_detached.patch
--- gnome-weather-3.26.0/debian/patches/app-Use-find_nearest_city-instead-of-new_detached.patch 1970-01-01 01:00:00.000000000 +0100
+++ gnome-weather-3.26.0/debian/patches/app-Use-find_nearest_city-instead-of-new_detached.patch 2020-09-13 14:13:06.000000000 +0100
@@ -0,0 +1,34 @@
+From: Christopher Davis <brainblasted@disroot.org>
+Date: Tue, 19 Mar 2019 15:20:41 -0700
+Subject: app: Use find_nearest_city() instead of new_detached()
+
+GWeather.Location.new_detached() can return a value that
+cannot be serialized after being serialized.
+
+We can use find_nearest_city() in place of it for now.
+
+Fixes https://gitlab.gnome.org/GNOME/gnome-weather/issues/25
+---
+ src/app/currentLocationController.js | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/src/app/currentLocationController.js b/src/app/currentLocationController.js
+index ea88800..c3f5e9d 100644
+--- a/src/app/currentLocationController.js
++++ b/src/app/currentLocationController.js
+@@ -84,10 +84,11 @@ var CurrentLocationController = class CurrentLocationController {
+ _onLocationUpdated(simple) {
+ let geoclueLocation = simple.get_location();
+
+- this.currentLocation = GWeather.Location.new_detached(geoclueLocation.description,
+- null,
+- geoclueLocation.latitude,
+- geoclueLocation.longitude);
++ this.currentLocation = GWeather.Location.get_world()
++ .find_nearest_city(
++ geoclueLocation.latitude,
++ geoclueLocation.longitude
++ );
+ this._world.currentLocationChanged(this.currentLocation);
+ }
+
diff -Nru gnome-weather-3.26.0/debian/patches/series gnome-weather-3.26.0/debian/patches/series
--- gnome-weather-3.26.0/debian/patches/series 1970-01-01 01:00:00.000000000 +0100
+++ gnome-weather-3.26.0/debian/patches/series 2020-09-13 14:13:06.000000000 +0100
@@ -0,0 +1,2 @@
+app-Use-find_nearest_city-instead-of-new_detached.patch
+shared-world.js-don-t-use-detached-location-from-settings.patch
diff -Nru gnome-weather-3.26.0/debian/patches/shared-world.js-don-t-use-detached-location-from-settings.patch gnome-weather-3.26.0/debian/patches/shared-world.js-don-t-use-detached-location-from-settings.patch
--- gnome-weather-3.26.0/debian/patches/shared-world.js-don-t-use-detached-location-from-settings.patch 1970-01-01 01:00:00.000000000 +0100
+++ gnome-weather-3.26.0/debian/patches/shared-world.js-don-t-use-detached-location-from-settings.patch 2020-09-13 14:13:06.000000000 +0100
@@ -0,0 +1,31 @@
+From: Christopher Davis <brainblasted@disroot.org>
+Date: Thu, 21 Mar 2019 16:50:20 -0700
+Subject: shared/world.js: don't use detached location from settings
+
+---
+ src/shared/world.js | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/src/shared/world.js b/src/shared/world.js
+index 5752b2c..a582147 100644
+--- a/src/shared/world.js
++++ b/src/shared/world.js
+@@ -106,9 +106,15 @@ var WorldModel = new Lang.Class({
+ let info = null;
+ for (let i = locations.length - 1; i >= 0; i--) {
+ let variant = locations[i];
+- let location = this._world.deserialize(variant);
+-
+- info = this._addLocationInternal(location, false);
++ let world = this._world.deserialize(variant);
++ if (world != null) {
++ let coords = world.get_coords();
++ let location = this._world.find_nearest_city(coords[0], coords[1]);
++
++ info = this._addLocationInternal(location, false);
++ } else {
++ log('Failed to deserialize location from GVariant:' + variant.print(true));
++ }
+ }
+ },
+
Reply to: