[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