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] +
