commit:     144356d27e157932cbfb735bd15f0b7c519bf534
Author:     Matthew S. Turnbull <sparky <AT> bluefang-logic <DOT> com>
AuthorDate: Wed Sep 17 04:11:29 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Oct  5 03:16:35 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=144356d2

gnome-extra/cinnamon-settings-daemon: Fix tz data parsing

Signed-off-by: Matthew S. Turnbull <sparky <AT> bluefang-logic.com>
Part-of: https://github.com/gentoo/gentoo/pull/43832
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../cinnamon-settings-daemon-6.4.3-r2.ebuild       | 122 +++++++++++++++++++++
 ...settings-daemon-6.4.0-fix-tz-data-parsing.patch |  55 ++++++++++
 2 files changed, 177 insertions(+)

diff --git 
a/gnome-extra/cinnamon-settings-daemon/cinnamon-settings-daemon-6.4.3-r2.ebuild 
b/gnome-extra/cinnamon-settings-daemon/cinnamon-settings-daemon-6.4.3-r2.ebuild
new file mode 100644
index 000000000000..3fda7aeada51
--- /dev/null
+++ 
b/gnome-extra/cinnamon-settings-daemon/cinnamon-settings-daemon-6.4.3-r2.ebuild
@@ -0,0 +1,122 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit meson flag-o-matic gnome2-utils python-any-r1 xdg
+
+DESCRIPTION="Cinnamon's settings daemon"
+HOMEPAGE="https://projects.linuxmint.com/cinnamon/ 
https://github.com/linuxmint/cinnamon-settings-daemon";
+SRC_URI="https://github.com/linuxmint/cinnamon-settings-daemon/archive/${PV}.tar.gz
 -> ${P}.tar.gz"
+
+LICENSE="GPL-2+ LGPL-2+ LGPL-2.1 LGPL-2.1+ MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE="+colord cups input_devices_wacom smartcard systemd wayland"
+
+RDEPEND="
+       >=dev-libs/glib-2.40.0:2[dbus]
+       dev-libs/libgudev
+       >=gnome-base/libgnomekbd-3.6:=
+       >=gnome-extra/cinnamon-desktop-6.4:0=
+       media-libs/fontconfig
+       >=media-libs/lcms-2.2:2
+       || (
+               media-libs/libcanberra-gtk3
+               media-libs/libcanberra[gtk3(-),pulseaudio]
+       )
+       >=media-libs/libpulse-0.9.16[glib]
+       >=sys-auth/polkit-0.97
+       sys-libs/timezone-data:=
+       x11-libs/cairo
+       x11-libs/gdk-pixbuf:2
+       >=x11-libs/libnotify-0.7.3
+       x11-libs/libX11
+       x11-libs/libXext
+       x11-libs/libXfixes
+       x11-libs/libXi
+       >=x11-libs/libxklavier-5.0:=
+       >=x11-libs/pango-1.20.0
+       >=sys-power/upower-0.99.11:=
+
+       colord? ( >=x11-misc/colord-0.1.27:= )
+       cups? (
+               >=net-print/cups-1.4[dbus]
+               app-admin/system-config-printer
+               net-print/cups-pk-helper )
+       input_devices_wacom? (
+               >=x11-libs/gtk+-3.24.41-r1:3[wayland?,X]
+               >=dev-libs/libwacom-0.7:=
+               >=gnome-base/librsvg-2.36.2
+       )
+       !input_devices_wacom? (
+               >=x11-libs/gtk+-3.14.0:3[X]
+       )
+       smartcard? (
+               dev-libs/nspr
+               >=dev-libs/nss-3.11.2
+       )
+       systemd? ( sys-apps/systemd:0= )
+       !systemd? ( sys-auth/elogind )
+"
+DEPEND="
+       ${RDEPEND}
+       dev-libs/libxml2:2
+       x11-base/xorg-proto
+"
+BDEPEND="
+       ${PYTHON_DEPS}
+       dev-util/glib-utils
+       dev-util/gdbus-codegen
+       virtual/pkgconfig
+"
+
+PATCHES=(
+       # Generate tz data header on build
+       # https://github.com/linuxmint/cinnamon-settings-daemon/pull/405
+       "${FILESDIR}/${PN}-6.4.0-generate-tz-data.patch"
+
+       # Fix tz data coordinate parsing
+       # 
https://github.com/linuxmint/cinnamon-settings-daemon/commit/eec27984940dfb11904b02228357f430b585c41f
+       "${FILESDIR}/${PN}-6.4.0-fix-tz-data-parsing.patch"
+)
+
+src_prepare() {
+       default
+       python_fix_shebang install-scripts plugins/color
+       rm plugins/color/tz-coords.h || die "Error removing stale tz-coords.h"
+}
+
+src_configure() {
+       # The only component that uses gdk backends is the wacom plugin
+       if use input_devices_wacom; then
+               # defang automagic dependencies
+               use wayland || append-cflags -DGENTOO_GTK_HIDE_WAYLAND
+       fi
+
+       # gudev not optional on Linux platforms
+       local emesonargs=(
+               -Duse_gudev=enabled
+               -Duse_polkit=enabled
+               -Duse_logind=enabled
+               -Dgenerate_tz_coords=true
+               -Dzone_tab="${EPREFIX}/usr/share/zoneinfo/zone1970.tab"
+               $(meson_feature colord use_color)
+               $(meson_feature cups use_cups)
+               $(meson_feature smartcard use_smartcard)
+               $(meson_feature input_devices_wacom use_wacom)
+       )
+       meson_src_configure
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+       gnome2_schemas_update
+}
+
+pkg_postrm() {
+       xdg_pkg_postrm
+       gnome2_schemas_update
+}

diff --git 
a/gnome-extra/cinnamon-settings-daemon/files/cinnamon-settings-daemon-6.4.0-fix-tz-data-parsing.patch
 
b/gnome-extra/cinnamon-settings-daemon/files/cinnamon-settings-daemon-6.4.0-fix-tz-data-parsing.patch
new file mode 100644
index 000000000000..fc97b06879e9
--- /dev/null
+++ 
b/gnome-extra/cinnamon-settings-daemon/files/cinnamon-settings-daemon-6.4.0-fix-tz-data-parsing.patch
@@ -0,0 +1,55 @@
+From eec27984940dfb11904b02228357f430b585c41f Mon Sep 17 00:00:00 2001
+From: Michael Webster <[email protected]>
+Date: Wed, 13 Aug 2025 14:24:38 -0400
+Subject: [PATCH] generate-tz-header.py: Fix position coordinate parsing.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+We were reading zone.tab incorrectly, constructing a decimal
+value directly from the coordinate data. But described in the
+companion zone1970.tab file (tzdata package), the format is:
+ # 2.  Latitude and longitude of the timezone's principal location
+ #     in ISO 6709 sign-degrees-minutes-seconds format,
+ #     either ±DDMM±DDDMM or ±DDMMSS±DDDMMSS,
+ #     first latitude (+ is north), then longitude (+ is east).
+
+Update our script to parse and convert these coordinates into
+decimal values correctly.
+
+Fixes #415.
+---
+ plugins/color/generate-tz-header.py |  11 +-
+ plugins/color/tz-coords.h           | 834 ++++++++++++++--------------
+ 2 files changed, 421 insertions(+), 424 deletions(-)
+
+diff --git a/plugins/color/generate-tz-header.py 
b/plugins/color/generate-tz-header.py
+index d725727..59954f1 100755
+--- a/plugins/color/generate-tz-header.py
++++ b/plugins/color/generate-tz-header.py
+@@ -4,7 +4,7 @@
+ from argparse import ArgumentParser
+ from pathlib import Path
+ 
+-COORDS_RE = re.compile(r"([+-])([0-9]+)([+-])([0-9]+)")
++COORDS_RE = 
re.compile(r"([+-]{1}[0-9]{2})([0-9]{2})([0-9]*)([+-]{1}[0-9]{3})([0-9]{2})([0-9]*)")
+ 
+ d = {}
+ 
+@@ -21,13 +21,10 @@
+             continue
+ 
+         coords, tz = line.split('\t')[1:3]
+-        lat_sign, lat_val, long_sign, long_val = 
COORDS_RE.search(coords).groups()
++        lat_deg, lat_min, lat_sec, long_deg, long_min, long_sec = 
COORDS_RE.search(coords).groups()
+ 
+-        lat_str = lat_sign + lat_val[0:2] + "." + lat_val[2:]
+-        long_str = long_sign + long_val[0:3] + "." + long_val[3:]
+-
+-        lat = float(lat_str)
+-        long = float(long_str)
++        lat = float(lat_deg + str((int(lat_min) / 60.0) + ((int(lat_sec) if 
lat_sec else 0) / 3600.0))[1:])
++        long = float(long_deg + str((int(long_min) / 60.0) + ((int(long_sec) 
if long_sec else 0) / 3600.0))[1:])
+ 
+         d[tz] = [lat, long]
+ 

Reply via email to