[arch-commits] Commit in libgweather/repos/extra-x86_64 (7 files)
Jan Steffens
heftig at archlinux.org
Tue Mar 9 21:08:39 UTC 2021
Date: Tuesday, March 9, 2021 @ 21:08:39
Author: heftig
Revision: 409544
archrelease: copy trunk to extra-x86_64
Added:
libgweather/repos/extra-x86_64/0001-metno-Use-compat-2.0-API.patch
(from rev 409543, libgweather/trunk/0001-metno-Use-compat-2.0-API.patch)
libgweather/repos/extra-x86_64/0002-metno-Use-GNOME-specific-subdomain.patch
(from rev 409543, libgweather/trunk/0002-metno-Use-GNOME-specific-subdomain.patch)
libgweather/repos/extra-x86_64/0003-metno-Use-as-arguments-separator-in-query.patch
(from rev 409543, libgweather/trunk/0003-metno-Use-as-arguments-separator-in-query.patch)
libgweather/repos/extra-x86_64/0004-metno-Use-alphabetical-2.0-symbol-codes.patch
(from rev 409543, libgweather/trunk/0004-metno-Use-alphabetical-2.0-symbol-codes.patch)
libgweather/repos/extra-x86_64/0005-gweather-Only-use-4-significant-decimals-for-locatio.patch
(from rev 409543, libgweather/trunk/0005-gweather-Only-use-4-significant-decimals-for-locatio.patch)
libgweather/repos/extra-x86_64/PKGBUILD
(from rev 409543, libgweather/trunk/PKGBUILD)
Deleted:
libgweather/repos/extra-x86_64/PKGBUILD
-----------------------------------------------------------------+
0001-metno-Use-compat-2.0-API.patch | 41 +
0002-metno-Use-GNOME-specific-subdomain.patch | 33 +
0003-metno-Use-as-arguments-separator-in-query.patch | 27 +
0004-metno-Use-alphabetical-2.0-symbol-codes.patch | 163 +++++++
0005-gweather-Only-use-4-significant-decimals-for-locatio.patch | 214 ++++++++++
PKGBUILD | 92 ++--
6 files changed, 531 insertions(+), 39 deletions(-)
Copied: libgweather/repos/extra-x86_64/0001-metno-Use-compat-2.0-API.patch (from rev 409543, libgweather/trunk/0001-metno-Use-compat-2.0-API.patch)
===================================================================
--- 0001-metno-Use-compat-2.0-API.patch (rev 0)
+++ 0001-metno-Use-compat-2.0-API.patch 2021-03-09 21:08:39 UTC (rev 409544)
@@ -0,0 +1,41 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Thu, 7 Jan 2021 15:14:40 +0100
+Subject: [PATCH] metno: Use compat 2.0 API
+
+Version 1.9, which we were using, was deprecated and will be removed soon,
+so migrate to the compat XML output of the v2.0 API.
+
+Closes: #65
+---
+ libgweather/weather-yrno.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/libgweather/weather-yrno.c b/libgweather/weather-yrno.c
+index 8324121f..f41cbe68 100644
+--- a/libgweather/weather-yrno.c
++++ b/libgweather/weather-yrno.c
+@@ -37,7 +37,7 @@
+
+ #define XC(t) ((const xmlChar *)(t))
+
+-/* Reference for symbols at http://om.yr.no/forklaring/symbol/ */
++/* Reference for symbols at https://api.met.no/weatherapi/weathericon/2.0/ */
+ typedef struct {
+ int code;
+ GWeatherSky sky;
+@@ -443,12 +443,12 @@ yrno_start_open (GWeatherInfo *info)
+ if (!loc->latlon_valid)
+ return FALSE;
+
+- /* see the description here: https://api.met.no/ */
++ /* see the description here: https://api.met.no/weatherapi/locationforecast/2.0/documentation */
+
+ g_ascii_dtostr (latstr, sizeof(latstr), RADIANS_TO_DEGREES (loc->latitude));
+ g_ascii_dtostr (lonstr, sizeof(lonstr), RADIANS_TO_DEGREES (loc->longitude));
+
+- url = g_strdup_printf("https://api.met.no/weatherapi/locationforecast/1.9/?lat=%s;lon=%s", latstr, lonstr);
++ url = g_strdup_printf("https://api.met.no/weatherapi/locationforecast/2.0/classic?lat=%s;lon=%s", latstr, lonstr);
+ g_debug ("yrno_start_open, requesting: %s", url);
+
+ message = soup_message_new ("GET", url);
Copied: libgweather/repos/extra-x86_64/0002-metno-Use-GNOME-specific-subdomain.patch (from rev 409543, libgweather/trunk/0002-metno-Use-GNOME-specific-subdomain.patch)
===================================================================
--- 0002-metno-Use-GNOME-specific-subdomain.patch (rev 0)
+++ 0002-metno-Use-GNOME-specific-subdomain.patch 2021-03-09 21:08:39 UTC (rev 409544)
@@ -0,0 +1,33 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Tue, 12 Jan 2021 14:21:21 +0100
+Subject: [PATCH] metno: Use GNOME-specific subdomain
+
+This allows the API provider to track libgweather usage.
+---
+ libgweather/weather-yrno.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/libgweather/weather-yrno.c b/libgweather/weather-yrno.c
+index f41cbe68..c8570abf 100644
+--- a/libgweather/weather-yrno.c
++++ b/libgweather/weather-yrno.c
+@@ -37,6 +37,9 @@
+
+ #define XC(t) ((const xmlChar *)(t))
+
++/* As per https://gitlab.gnome.org/GNOME/libgweather/-/issues/59#note_1004747 */
++#define API_ENDPOINT_DOMAIN "aa037rv1tsaszxi6o.api.met.no"
++
+ /* Reference for symbols at https://api.met.no/weatherapi/weathericon/2.0/ */
+ typedef struct {
+ int code;
+@@ -448,7 +451,7 @@ yrno_start_open (GWeatherInfo *info)
+ g_ascii_dtostr (latstr, sizeof(latstr), RADIANS_TO_DEGREES (loc->latitude));
+ g_ascii_dtostr (lonstr, sizeof(lonstr), RADIANS_TO_DEGREES (loc->longitude));
+
+- url = g_strdup_printf("https://api.met.no/weatherapi/locationforecast/2.0/classic?lat=%s;lon=%s", latstr, lonstr);
++ url = g_strdup_printf("https://" API_ENDPOINT_DOMAIN "/weatherapi/locationforecast/2.0/classic?lat=%s;lon=%s", latstr, lonstr);
+ g_debug ("yrno_start_open, requesting: %s", url);
+
+ message = soup_message_new ("GET", url);
Copied: libgweather/repos/extra-x86_64/0003-metno-Use-as-arguments-separator-in-query.patch (from rev 409543, libgweather/trunk/0003-metno-Use-as-arguments-separator-in-query.patch)
===================================================================
--- 0003-metno-Use-as-arguments-separator-in-query.patch (rev 0)
+++ 0003-metno-Use-as-arguments-separator-in-query.patch 2021-03-09 21:08:39 UTC (rev 409544)
@@ -0,0 +1,27 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Tue, 12 Jan 2021 14:22:28 +0100
+Subject: [PATCH] metno: Use "&" as arguments separator in query
+
+According to the HTML5 spec ";" is no longer allowed. This was
+automatically rewritten in Varnish, but was temporary measure
+and was likely to disappear if on cache/load balancer change.
+
+Closes: #72
+---
+ libgweather/weather-yrno.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libgweather/weather-yrno.c b/libgweather/weather-yrno.c
+index c8570abf..9bd974db 100644
+--- a/libgweather/weather-yrno.c
++++ b/libgweather/weather-yrno.c
+@@ -451,7 +451,7 @@ yrno_start_open (GWeatherInfo *info)
+ g_ascii_dtostr (latstr, sizeof(latstr), RADIANS_TO_DEGREES (loc->latitude));
+ g_ascii_dtostr (lonstr, sizeof(lonstr), RADIANS_TO_DEGREES (loc->longitude));
+
+- url = g_strdup_printf("https://" API_ENDPOINT_DOMAIN "/weatherapi/locationforecast/2.0/classic?lat=%s;lon=%s", latstr, lonstr);
++ url = g_strdup_printf("https://" API_ENDPOINT_DOMAIN "/weatherapi/locationforecast/2.0/classic?lat=%s&lon=%s", latstr, lonstr);
+ g_debug ("yrno_start_open, requesting: %s", url);
+
+ message = soup_message_new ("GET", url);
Copied: libgweather/repos/extra-x86_64/0004-metno-Use-alphabetical-2.0-symbol-codes.patch (from rev 409543, libgweather/trunk/0004-metno-Use-alphabetical-2.0-symbol-codes.patch)
===================================================================
--- 0004-metno-Use-alphabetical-2.0-symbol-codes.patch (rev 0)
+++ 0004-metno-Use-alphabetical-2.0-symbol-codes.patch 2021-03-09 21:08:39 UTC (rev 409544)
@@ -0,0 +1,163 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner at gnome.org>
+Date: Thu, 21 Jan 2021 05:12:21 +0100
+Subject: [PATCH] metno: Use alphabetical 2.0 symbol codes
+
+The numerical codes are deprecated and scheduled for removal, so
+replace them with the non-deprecated alphabetical codes as listed
+in https://api.met.no/weatherapi/weathericon/2.0/.
+
+https://gitlab.gnome.org/GNOME/libgweather/-/issues/67
+---
+ libgweather/weather-yrno.c | 109 ++++++++++++++++++-------------------
+ 1 file changed, 53 insertions(+), 56 deletions(-)
+
+diff --git a/libgweather/weather-yrno.c b/libgweather/weather-yrno.c
+index 9bd974db..7c89df2a 100644
+--- a/libgweather/weather-yrno.c
++++ b/libgweather/weather-yrno.c
+@@ -42,53 +42,53 @@
+
+ /* Reference for symbols at https://api.met.no/weatherapi/weathericon/2.0/ */
+ typedef struct {
+- int code;
++ const char *code;
+ GWeatherSky sky;
+ GWeatherConditions condition;
+ } YrnoSymbol;
+
+ static YrnoSymbol symbols[] = {
+- { 1, GWEATHER_SKY_CLEAR, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* Sun */
+- { 2, GWEATHER_SKY_BROKEN, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* LightCloud */
+- { 3, GWEATHER_SKY_SCATTERED, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* PartlyCloudy */
+- { 4, GWEATHER_SKY_OVERCAST, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* Cloudy */
+- { 5, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_LIGHT } }, /* LightRainSun */
+- { 6, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* LightRainThunderSun */
+- { 7, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_NONE } }, /* SleetSun */
+- { 8, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_NONE } }, /* SnowSun */
+- { 9, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_LIGHT } }, /* SnowSun */
+- { 10, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_NONE } }, /* Rain */
+- { 11, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* RainThunder */
+- { 12, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_NONE } }, /* Sleet */
+- { 13, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_NONE } }, /* Snow */
+- { 14, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SnowThunder */
+- { 15, GWEATHER_SKY_CLEAR, { TRUE, GWEATHER_PHENOMENON_FOG, GWEATHER_QUALIFIER_NONE } }, /* Fog */
+- { 20, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SleetSunThunder */
+- { 21, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SnowSunThunder */
+- { 22, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* LightRainThunder */
+- { 23, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SleetThunder */
+- { 24, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* DrizzleThunderSun */
+- { 25, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* RainThunderSun */
+- { 26, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetThunderSun */
+- { 27, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetThunderSun */
+- { 28, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowThunderSun */
+- { 29, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowThunderSun */
+- { 30, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* DrizzleThunder */
+- { 31, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetThunder */
+- { 32, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetThunder */
+- { 33, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowThunder */
+- { 34, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowThunder */
+- { 40, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_NONE } }, /* DrizzleSun */
+- { 41, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_NONE } }, /* RainSun */
+- { 42, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetSun */
+- { 43, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetSun */
+- { 44, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowSun */
+- { 45, GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowSun */
+- { 46, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_NONE } }, /* Drizzle */
+- { 47, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleet */
+- { 48, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleet */
+- { 49, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnow */
+- { 50, GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } } /* HeavySnow */
++ { "clearsky", GWEATHER_SKY_CLEAR, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* Sun */
++ { "fair", GWEATHER_SKY_BROKEN, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* LightCloud */
++ { "partlycloudy", GWEATHER_SKY_SCATTERED, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* PartlyCloudy */
++ { "cloudy", GWEATHER_SKY_OVERCAST, { FALSE, GWEATHER_PHENOMENON_NONE, GWEATHER_QUALIFIER_NONE } }, /* Cloudy */
++ { "rainshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_LIGHT } }, /* LightRainSun */
++ { "rainshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* LightRainThunderSun */
++ { "sleetshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_NONE } }, /* SleetSun */
++ { "snowshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_NONE } }, /* SnowSun */
++ { "rain", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_LIGHT } }, /* SnowSun */
++ { "heavyrain", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_NONE } }, /* Rain */
++ { "heavyrainandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* RainThunder */
++ { "sleet", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_NONE } }, /* Sleet */
++ { "snow", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_NONE } }, /* Snow */
++ { "snowandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SnowThunder */
++ { "fog", GWEATHER_SKY_CLEAR, { TRUE, GWEATHER_PHENOMENON_FOG, GWEATHER_QUALIFIER_NONE } }, /* Fog */
++ { "sleetshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SleetSunThunder */
++ { "snowshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SnowSunThunder */
++ { "rainandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* LightRainThunder */
++ { "sleetandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* SleetThunder */
++ { "lightrainshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* DrizzleThunderSun */
++ { "heavyrainshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* RainThunderSun */
++ { "lightssleetshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetThunderSun */
++ { "heavysleetshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetThunderSun */
++ { "lightssnowshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowThunderSun */
++ { "heavysnowshowersandthunder", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowThunderSun */
++ { "lightrainandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_THUNDERSTORM } }, /* DrizzleThunder */
++ { "lightsleetandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetThunder */
++ { "heavysleetandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetThunder */
++ { "lightsnowandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowThunder */
++ { "heavysnowandthunder", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowThunder */
++ { "lightrainshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_NONE } }, /* DrizzleSun */
++ { "heavyrainshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_RAIN, GWEATHER_QUALIFIER_NONE } }, /* RainSun */
++ { "lightsleetshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleetSun */
++ { "heavysleetshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleetSun */
++ { "lightsnowshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnowSun */
++ { "heavysnowshowers", GWEATHER_SKY_BROKEN, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySnowSun */
++ { "lightrain", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_DRIZZLE, GWEATHER_QUALIFIER_NONE } }, /* Drizzle */
++ { "lightsleet", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_LIGHT } }, /* LightSleet */
++ { "heavysleet", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_ICE_PELLETS, GWEATHER_QUALIFIER_HEAVY } }, /* HeavySleet */
++ { "lightsnow", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_LIGHT } }, /* LightSnow */
++ { "heavysnow", GWEATHER_SKY_OVERCAST, { TRUE, GWEATHER_PHENOMENON_SNOW, GWEATHER_QUALIFIER_HEAVY } } /* HeavySnow */
+ };
+
+ static struct {
+@@ -149,37 +149,34 @@ date_to_time_t (const xmlChar *str, const char * tzid)
+ }
+
+ static YrnoSymbol *
+-symbol_search (int code)
++symbol_search (const char *code)
+ {
+- int a = 0;
+- int b = G_N_ELEMENTS (symbols);
++ unsigned int i;
+
+- while (a < b) {
+- int c = (a + b)/2;
+- YrnoSymbol *yc = symbols + c;
++ for (i = 0; i < G_N_ELEMENTS (symbols); i++) {
++ YrnoSymbol *s = symbols + i;
+
+- if (yc->code == code)
+- return yc;
+- if (yc->code < code)
+- a = c+1;
+- else
+- b = c;
++ if (strcmp (code, s->code) == 0)
++ return s;
++
++ if (strstr (code, s->code) == code && code[strlen (s->code)] == '_')
++ return s;
+ }
+
+ return NULL;
+ }
+
+ static inline void
+ read_symbol (GWeatherInfo *info,
+ xmlNodePtr node)
+ {
+ xmlChar *val;
+ YrnoSymbol* symbol;
+ GWeatherInfoPrivate *priv = info->priv;
+
+- val = xmlGetProp (node, XC("number"));
++ val = xmlGetProp (node, XC("code"));
+
+- symbol = symbol_search (strtol ((char*) val, NULL, 0));
++ symbol = symbol_search ((char *)val);
+ if (symbol != NULL) {
+ priv->valid = TRUE;
+ priv->sky = symbol->sky;
Copied: libgweather/repos/extra-x86_64/0005-gweather-Only-use-4-significant-decimals-for-locatio.patch (from rev 409543, libgweather/trunk/0005-gweather-Only-use-4-significant-decimals-for-locatio.patch)
===================================================================
--- 0005-gweather-Only-use-4-significant-decimals-for-locatio.patch (rev 0)
+++ 0005-gweather-Only-use-4-significant-decimals-for-locatio.patch 2021-03-09 21:08:39 UTC (rev 409544)
@@ -0,0 +1,214 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Thu, 7 Jan 2021 12:46:34 +0100
+Subject: [PATCH] gweather: Only use 4 significant decimals for locations
+
+1/1000th of a degree of longitude or latitude corresponds to around
+100 meters. There's no reason for the weather to be any more precise
+than this.
+
+See https://www.thoughtco.com/degree-of-latitude-and-longitude-distance-4070616
+
+Closes: #69
+---
+ libgweather/gweather-private.c | 21 ++++++++++++++++-----
+ libgweather/gweather-private.h | 3 +++
+ libgweather/test_libgweather.c | 16 ++++++++++++++++
+ libgweather/weather-iwin.c | 7 ++++---
+ libgweather/weather-owm.c | 7 ++++---
+ libgweather/weather-yrno.c | 7 ++++---
+ 6 files changed, 47 insertions(+), 14 deletions(-)
+
+diff --git a/libgweather/gweather-private.c b/libgweather/gweather-private.c
+index b214ad95..0ccc21b3 100644
+--- a/libgweather/gweather-private.c
++++ b/libgweather/gweather-private.c
+@@ -22,8 +22,19 @@
+
+ #include "gweather-private.h"
+
+-/*
+- There is no code here: the purpose of this header is so that
+- gnome-builder knows how to pick up the include flags to parse
+- gweather-private.h properly.
+-*/
++/* sign, 3 digits, separator, 4 decimals, nul-char */
++#define DEGREES_STR_SIZE (1 + 3 + 1 + 4 + 1)
++
++char *
++_radians_to_degrees_str (gdouble radians)
++{
++ char *str;
++ double degrees;
++
++ str = g_malloc0 (DEGREES_STR_SIZE);
++ /* Max 4 decimals */
++ degrees = (double) ((int) (RADIANS_TO_DEGREES (radians) * 10000)) / 10000;
++ /* Too many digits */
++ g_return_val_if_fail (degrees <= 1000 || degrees >= -1000, NULL);
++ return g_ascii_formatd (str, G_ASCII_DTOSTR_BUF_SIZE, "%g", degrees);
++}
+diff --git a/libgweather/gweather-private.h b/libgweather/gweather-private.h
+index ddf0a41a..be73768e 100644
+--- a/libgweather/gweather-private.h
++++ b/libgweather/gweather-private.h
+@@ -167,6 +167,9 @@ struct _GWeatherInfoPrivate {
+ #define RADIANS_TO_DEGREES(rad) ((rad) * 180. / M_PI)
+ #define RADIANS_TO_HOURS(rad) ((rad) * 12. / M_PI)
+
++GWEATHER_EXTERN
++char *_radians_to_degrees_str (gdouble radians);
++
+ /*
+ * Planetary Mean Orbit and their progressions from J2000 are based on the
+ * values in http://ssd.jpl.nasa.gov/txt/aprx_pos_planets.pdf
+diff --git a/libgweather/test_libgweather.c b/libgweather/test_libgweather.c
+index 8a219115..e0e4b815 100644
+--- a/libgweather/test_libgweather.c
++++ b/libgweather/test_libgweather.c
+@@ -26,6 +26,7 @@
+ #include <gweather-version.h>
+ #include "gweather-location.h"
+ #include "gweather-weather.h"
++#include "gweather-private.h"
+
+ extern void _gweather_location_reset_world (void);
+
+@@ -758,28 +759,43 @@ test_weather_loop_use_after_free (void)
+ g_main_loop_unref (loop);
+ }
+
++static void
++test_radians_to_degrees_str (void)
++{
++ char long_version[G_ASCII_DTOSTR_BUF_SIZE];
++ g_autofree char *short_version = NULL;
++ double coord = 1.260765526077;
++
++ g_ascii_dtostr (long_version, G_ASCII_DTOSTR_BUF_SIZE, RADIANS_TO_DEGREES (coord));
++ short_version = _radians_to_degrees_str (coord);
++
++ g_assert_cmpint (strlen (long_version), >, strlen (short_version));
++ g_assert_cmpstr (short_version, ==, "72.2365");
++}
++
+ static void
+ log_handler (const char *log_domain, GLogLevelFlags log_level, const char *message, gpointer user_data)
+ {
+ g_print ("%s\n", message);
+ }
+
+ int
+ main (int argc, char *argv[])
+ {
+ setlocale (LC_ALL, "");
+
+ g_test_init (&argc, &argv, NULL);
+ g_test_bug_base ("http://gitlab.gnome.org/GNOME/libgweather/issues/");
+
+ /* We need to handle log messages produced by g_message so they're interpreted correctly by the GTester framework */
+ g_log_set_handler (NULL, G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG, log_handler, NULL);
+
+ g_setenv ("LIBGWEATHER_LOCATIONS_PATH",
+ TEST_SRCDIR "../data/Locations.xml",
+ FALSE);
+ set_gsettings ();
+
++ g_test_add_func ("/weather/radians-to-degrees_str", test_radians_to_degrees_str);
+ g_test_add_func ("/weather/named-timezones", test_named_timezones);
+ g_test_add_func ("/weather/named-timezones-deserialized", test_named_timezones_deserialized);
+ g_test_add_func ("/weather/no-code-serialize", test_no_code_serialize);
+diff --git a/libgweather/weather-iwin.c b/libgweather/weather-iwin.c
+index c3d414de..71020396 100644
+--- a/libgweather/weather-iwin.c
++++ b/libgweather/weather-iwin.c
+@@ -353,31 +353,32 @@ iwin_start_open (GWeatherInfo *info)
+ SoupMessage *msg;
+ struct tm tm;
+ time_t now;
+- gchar latstr[G_ASCII_DTOSTR_BUF_SIZE], lonstr[G_ASCII_DTOSTR_BUF_SIZE];
++ g_autofree char *latstr = NULL;
++ g_autofree char *lonstr = NULL;
+
+ g_assert (info != NULL);
+
+ priv = info->priv;
+ loc = &priv->location;
+
+ /* No zone (or -) means no weather information from national offices.
+ We don't actually use zone, but it's a good indicator of a US location.
+ (@ and : prefixes were used in the past for Australia and UK) */
+ if (!loc->zone || loc->zone[0] == '-' || loc->zone[0] == '@' || loc->zone[0] == ':') {
+ g_debug ("iwin_start_open, ignoring location %s because zone '%s' has no weather info",
+ loc->name, loc->zone ? loc->zone : "(empty)");
+ return FALSE;
+ }
+
+ if (!loc->latlon_valid)
+ return FALSE;
+
+ /* see the description here: http://www.weather.gov/forecasts/xml/ */
+ now = time (NULL);
+ localtime_r (&now, &tm);
+
+- g_ascii_dtostr (latstr, sizeof(latstr), RADIANS_TO_DEGREES (loc->latitude));
+- g_ascii_dtostr (lonstr, sizeof(lonstr), RADIANS_TO_DEGREES (loc->longitude));
++ latstr = _radians_to_degrees_str (loc->latitude);
++ lonstr = _radians_to_degrees_str (loc->longitude);
+ url = g_strdup_printf ("https://www.weather.gov/forecasts/xml/sample_products/browser_interface/ndfdBrowserClientByDay.php?&lat=%s&lon=%s&format=24+hourly&startDate=%04d-%02d-%02d&numDays=7",
+ latstr, lonstr, 1900 + tm.tm_year, 1 + tm.tm_mon, tm.tm_mday);
+ g_debug ("iwin_start_open, requesting: %s", url);
+diff --git a/libgweather/weather-owm.c b/libgweather/weather-owm.c
+index a58950c9..eb45f52f 100644
+--- a/libgweather/weather-owm.c
++++ b/libgweather/weather-owm.c
+@@ -428,18 +428,19 @@ owm_start_open (GWeatherInfo *info)
+ gchar *url;
+ SoupMessage *message;
+ WeatherLocation *loc;
+- gchar latstr[G_ASCII_DTOSTR_BUF_SIZE], lonstr[G_ASCII_DTOSTR_BUF_SIZE];
++ g_autofree char *latstr = NULL;
++ g_autofree char *lonstr = NULL;
+
+ priv = info->priv;
+ loc = &priv->location;
+
+ if (!loc->latlon_valid)
+ return FALSE;
+
+ /* see the description here: http://bugs.openweathermap.org/projects/api/wiki/Api_2_5_forecast */
+
+- g_ascii_dtostr (latstr, sizeof(latstr), RADIANS_TO_DEGREES (loc->latitude));
+- g_ascii_dtostr (lonstr, sizeof(lonstr), RADIANS_TO_DEGREES (loc->longitude));
++ latstr = _radians_to_degrees_str (loc->latitude);
++ lonstr = _radians_to_degrees_str (loc->longitude);
+
+ #define TEMPLATE_START "https://api.openweathermap.org/data/2.5/forecast?lat=%s&lon=%s&mode=xml&units=metric"
+ #ifdef OWM_APIKEY
+diff --git a/libgweather/weather-yrno.c b/libgweather/weather-yrno.c
+index 7c89df2a..ef6d188b 100644
+--- a/libgweather/weather-yrno.c
++++ b/libgweather/weather-yrno.c
+@@ -435,18 +435,19 @@ yrno_start_open (GWeatherInfo *info)
+ gchar *url;
+ SoupMessage *message;
+ WeatherLocation *loc;
+- gchar latstr[G_ASCII_DTOSTR_BUF_SIZE], lonstr[G_ASCII_DTOSTR_BUF_SIZE];
++ g_autofree char *latstr = NULL;
++ g_autofree char *lonstr = NULL;
+
+ priv = info->priv;
+ loc = &priv->location;
+
+ if (!loc->latlon_valid)
+ return FALSE;
+
+ /* see the description here: https://api.met.no/weatherapi/locationforecast/2.0/documentation */
+
+- g_ascii_dtostr (latstr, sizeof(latstr), RADIANS_TO_DEGREES (loc->latitude));
+- g_ascii_dtostr (lonstr, sizeof(lonstr), RADIANS_TO_DEGREES (loc->longitude));
++ latstr = _radians_to_degrees_str (loc->latitude);
++ lonstr = _radians_to_degrees_str (loc->longitude);
+
+ url = g_strdup_printf("https://" API_ENDPOINT_DOMAIN "/weatherapi/locationforecast/2.0/classic?lat=%s&lon=%s", latstr, lonstr);
+ g_debug ("yrno_start_open, requesting: %s", url);
Deleted: PKGBUILD
===================================================================
--- PKGBUILD 2021-03-09 21:08:23 UTC (rev 409543)
+++ PKGBUILD 2021-03-09 21:08:39 UTC (rev 409544)
@@ -1,39 +0,0 @@
-# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens at gmail.com>
-# Maintainer: Jan de Groot <jgc at archlinux.org>
-
-pkgname=libgweather
-pkgver=3.36.1
-pkgrel=1
-pkgdesc="Location and timezone database and weather-lookup library"
-url="https://wiki.gnome.org/Projects/LibGWeather"
-arch=(x86_64)
-license=(LGPL)
-depends=(libsoup gtk3 geocode-glib dconf)
-makedepends=(gobject-introspection vala git gtk-doc glade meson)
-provides=(libgweather-3.so)
-_commit=687c63f68b0a3561731889c14fb28ac5c52d5be0 # tags/3.36.1-fixed^0
-source=("git+https://gitlab.gnome.org/GNOME/libgweather.git#commit=$_commit")
-sha256sums=('SKIP')
-
-pkgver() {
- cd $pkgname
- git describe --tags | sed 's/-fixed//;s/-/+/g'
-}
-
-prepare() {
- cd $pkgname
-}
-
-build() {
- arch-meson $pkgname build -D gtk_doc=true
- meson compile -C build
-}
-
-check() {
- # Test fails without fr_FR.UTF-8 locale
- meson test -C build --print-errorlogs || :
-}
-
-package() {
- DESTDIR="$pkgdir" meson install -C build
-}
Copied: libgweather/repos/extra-x86_64/PKGBUILD (from rev 409543, libgweather/trunk/PKGBUILD)
===================================================================
--- PKGBUILD (rev 0)
+++ PKGBUILD 2021-03-09 21:08:39 UTC (rev 409544)
@@ -0,0 +1,53 @@
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens at gmail.com>
+# Maintainer: Jan de Groot <jgc at archlinux.org>
+
+pkgname=libgweather
+pkgver=3.36.1
+pkgrel=2
+pkgdesc="Location and timezone database and weather-lookup library"
+url="https://wiki.gnome.org/Projects/LibGWeather"
+arch=(x86_64)
+license=(LGPL)
+depends=(libsoup gtk3 geocode-glib dconf)
+makedepends=(gobject-introspection vala git gtk-doc glade meson)
+provides=(libgweather-3.so)
+_commit=687c63f68b0a3561731889c14fb28ac5c52d5be0 # tags/3.36.1-fixed^0
+source=("git+https://gitlab.gnome.org/GNOME/libgweather.git#commit=$_commit"
+ 0001-metno-Use-compat-2.0-API.patch
+ 0002-metno-Use-GNOME-specific-subdomain.patch
+ 0003-metno-Use-as-arguments-separator-in-query.patch
+ 0004-metno-Use-alphabetical-2.0-symbol-codes.patch
+ 0005-gweather-Only-use-4-significant-decimals-for-locatio.patch)
+sha256sums=('SKIP'
+ '52adc44450035384038c53583998592224c17f51e6872b12cb186f30d52cb5da'
+ 'bdb071f6af22a551eee6d2fc81e7cb19ab56048b6e898f4bc5b0b7cecd185722'
+ 'aa5050f1a36a17444c893346ab2343226e60bf273be95f94401f7124863d0e61'
+ '7a6fafa664f64c5ec1085abaacbc2ac384f0833df05550f3c8bbac671b1adb54'
+ 'ba2d2af73ae848350f2eb484cea12ee01b623e78273e5a4854ccee0ac81e4cde')
+
+pkgver() {
+ cd $pkgname
+ git describe --tags | sed 's/-fixed//;s/-/+/g'
+}
+
+prepare() {
+ cd $pkgname
+
+ # Backport some changes to fix yr.no; patch selection taken from debian
+ # https://bugs.archlinux.org/task/69919
+ git apply -3 ../*.patch
+}
+
+build() {
+ arch-meson $pkgname build -D gtk_doc=true
+ meson compile -C build
+}
+
+check() {
+ # Test fails without fr_FR.UTF-8 locale
+ meson test -C build --print-errorlogs || :
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+}
More information about the arch-commits
mailing list