commit:     b84ebc44875c02084bdbecc0e3fb45545f650389
Author:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
AuthorDate: Fri Sep  5 10:00:50 2025 +0000
Commit:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
CommitDate: Fri Sep  5 10:02:35 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b84ebc44

sci-geosciences/viking: fix c23 compilation and gpsd dep

- backport upstream's C23 changes
- fix gpsd dependency to allow automatic recompilation

Closes: https://bugs.gentoo.org/949870
Closes: https://bugs.gentoo.org/962237
Signed-off-by: Hans de Graaff <graaff <AT> gentoo.org>

 sci-geosciences/viking/files/viking-1.10-c23.patch |  82 +++++++++++++++++
 sci-geosciences/viking/viking-1.10-r1.ebuild       | 100 +++++++++++++++++++++
 2 files changed, 182 insertions(+)

diff --git a/sci-geosciences/viking/files/viking-1.10-c23.patch 
b/sci-geosciences/viking/files/viking-1.10-c23.patch
new file mode 100644
index 000000000000..d1139fa3eabd
--- /dev/null
+++ b/sci-geosciences/viking/files/viking-1.10-c23.patch
@@ -0,0 +1,82 @@
+From d447c19b6a2fe499fd60aa8969ea91c5cbfda159 Mon Sep 17 00:00:00 2001
+From: Otto Liljalaakso <[email protected]>
+Date: Wed, 29 Jan 2025 00:49:42 +0200
+Subject: [PATCH] C23 compatibility
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In C23, empty paramter list in function declaration actually means that
+function takes parameters. Update to declare parameters for all
+functions that take them, and pass NULL as needed.
+
+Without this change, building with C23 fails with errors like shown
+below. These broke build for Fedora 42, which comes with GCC 15 and
+uses C23 by default.
+
+    vikaggregatelayer.c: In function ‘vik_aggregate_layer_create’:
+    vikaggregatelayer.c:631:27: error: too many arguments to function 
‘vik_aggregate_layer_new’; expected 0, have 1
+      631 |   VikAggregateLayer *rv = vik_aggregate_layer_new (vp);
+          |                           ^~~~~~~~~~~~~~~~~~~~~~~  ~~
+    In file included from viking.h:57:
+    vikaggregatelayer.h:48:20: note: declared here
+       48 | VikAggregateLayer *vik_aggregate_layer_new ();
+          |                    ^~~~~~~~~~~~~~~~~~~~~~~
+    vikaggregatelayer.c: In function ‘aggregate_layer_unmarshall’:
+    vikaggregatelayer.c:680:27: error: too many arguments to function 
‘vik_aggregate_layer_new’; expected 0, have 1
+      680 |   VikAggregateLayer *rv = vik_aggregate_layer_new(vvp);
+          |                           ^~~~~~~~~~~~~~~~~~~~~~~ ~~~
+    vikaggregatelayer.h:48:20: note: declared here
+       48 | VikAggregateLayer *vik_aggregate_layer_new ();
+          |                    ^~~~~~~~~~~~~~~~~~~~~~~
+    vikaggregatelayer.c: At top level:
+    vikaggregatelayer.c:700:20: error: conflicting types for 
‘vik_aggregate_layer_new’; have ‘VikAggregateLayer *(VikViewport *)’ {aka 
‘struct _VikAggregateLayer *(struct _VikViewport *)’}
+      700 | VikAggregateLayer *vik_aggregate_layer_new (VikViewport *vvp)
+          |                    ^~~~~~~~~~~~~~~~~~~~~~~
+    vikaggregatelayer.h:48:20: note: previous declaration of 
‘vik_aggregate_layer_new’ with type ‘VikAggregateLayer *(void)’ {aka ‘struct 
_VikAggregateLayer *(void)’}
+       48 | VikAggregateLayer *vik_aggregate_layer_new ();
+          |                    ^~~~~~~~~~~~~~~~~~~~~~~
+---
+ src/vikaggregatelayer.h | 2 +-
+ src/viklayerspanel.c    | 2 +-
+ test/test_file_load.c   | 2 +-
+ test/vik2vik.c          | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/vikaggregatelayer.h b/src/vikaggregatelayer.h
+index fe726600..38061152 100644
+--- a/src/vikaggregatelayer.h
++++ b/src/vikaggregatelayer.h
+@@ -45,7 +45,7 @@ GType vik_aggregate_layer_get_type ();
+ typedef struct _VikAggregateLayer VikAggregateLayer;
+ 
+ void vik_aggregate_layer_uninit ();
+-VikAggregateLayer *vik_aggregate_layer_new ();
++VikAggregateLayer *vik_aggregate_layer_new ( VikViewport *vvp );
+ void vik_aggregate_layer_add_layer ( VikAggregateLayer *val, VikLayer *l, 
gboolean allow_reordering );
+ void vik_aggregate_layer_insert_layer ( VikAggregateLayer *val, VikLayer *l, 
VikLayer *crt_layer, gboolean allow_reordering );
+ void vik_aggregate_layer_move_layer ( VikAggregateLayer *val, GtkTreeIter 
*child_iter, gboolean up );
+diff --git a/src/viklayerspanel.c b/src/viklayerspanel.c
+index 2ac4b33e..cc513885 100644
+--- a/src/viklayerspanel.c
++++ b/src/viklayerspanel.c
+@@ -659,7 +659,7 @@ static void vik_layers_panel_init ( VikLayersPanel *vlp )
+   vlp->hbox = gtk_hbox_new ( TRUE, 2 );
+   vlp->vt = vik_treeview_new ( );
+ 
+-  vlp->toplayer = vik_aggregate_layer_new ();
++  vlp->toplayer = vik_aggregate_layer_new ( NULL );
+   vik_layer_rename ( VIK_LAYER(vlp->toplayer), _("Top Layer"));
+   g_signal_connect_swapped ( G_OBJECT(vlp->toplayer), "update", 
G_CALLBACK(layers_panel_emit_update), vlp );
+ 
+diff --git a/test/vik2vik.c b/test/vik2vik.c
+index e53a9746..ff8c8fa1 100644
+--- a/test/vik2vik.c
++++ b/test/vik2vik.c
+@@ -43,5 +43,5 @@ int main(int argc, char *argv[])
+   // Also get lots of warnings about no actual drawing GCs available
+   // but for file processing this seems to be good enough
+   VikLoadType_t lt;
+-  VikAggregateLayer* agg = vik_aggregate_layer_new ();
++  VikAggregateLayer* agg = vik_aggregate_layer_new ( NULL );
+   VikViewport* vp = vik_viewport_new ();

diff --git a/sci-geosciences/viking/viking-1.10-r1.ebuild 
b/sci-geosciences/viking/viking-1.10-r1.ebuild
new file mode 100644
index 000000000000..7fe5568bdfed
--- /dev/null
+++ b/sci-geosciences/viking/viking-1.10-r1.ebuild
@@ -0,0 +1,100 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools xdg-utils
+
+DESCRIPTION="GPS data editor and analyzer"
+HOMEPAGE="https://github.com/viking-gps/viking/";
+SRC_URI="
+       https://github.com/viking-gps/${PN}/archive/${P}.tar.gz
+       doc? ( 
https://github.com/viking-gps/${PN}/releases/download/${P}/${PN}.pdf )"
+S="${WORKDIR}/${PN}-${P}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="doc +exif libexif geoclue gps +magic nls oauth"
+
+COMMONDEPEND="
+       app-arch/bzip2
+       >=dev-tcltk/expect-5.45.4
+       dev-db/sqlite:3
+       dev-libs/expat
+       >=dev-libs/glib-2.44:2
+       >=dev-libs/json-glib-0.16
+       dev-libs/nettle
+       net-misc/curl
+       sys-libs/zlib
+       >=x11-libs/gdk-pixbuf-2.26:2
+       >=x11-libs/gtk+-3.22:3
+       geoclue? ( >=app-misc/geoclue-2.4.4:2.0 )
+       gps? ( >=sci-geosciences/gpsd-3.20:= )
+       exif? ( libexif? ( media-libs/libexif ) !libexif? ( media-libs/gexiv2 ) 
)
+       magic? ( sys-apps/file )
+       oauth? ( net-libs/liboauth )
+"
+RDEPEND="${COMMONDEPEND}
+       sci-geosciences/gpsbabel
+"
+DEPEND="${COMMONDEPEND}
+       app-text/yelp-tools
+       dev-util/intltool
+       dev-util/gtk-doc
+       dev-build/gtk-doc-am
+       dev-libs/libxslt
+       virtual/pkgconfig
+       sys-devel/gettext
+"
+
+PATCHES=( "${FILESDIR}/${P}-terraserver.patch" "${FILESDIR}/${P}-c23.patch" )
+
+src_prepare() {
+       default
+       eautoreconf
+
+       sed -i -e '/Avoid creator line/isrcdir=test' test/check_gpx.sh || die
+}
+
+src_configure() {
+       econf \
+               --disable-deprecations \
+               --with-libcurl \
+               --with-expat \
+               --enable-google \
+               --enable-nettle \
+               --enable-terraserver \
+               --enable-expedia \
+               --enable-openstreetmap \
+               --enable-bluemarble \
+               --enable-geonames \
+               --enable-geocaches \
+               --disable-dem24k \
+               --disable-mapnik \
+               --enable-mbtiles \
+               $(use_enable exif geotag) \
+               $(use_with libexif ) \
+               $(use_enable geoclue) \
+               $(use_enable gps realtime-gps-tracking) \
+               $(use_enable magic) \
+               $(use_enable nls) \
+               $(use_enable oauth)
+}
+
+src_install() {
+       default
+       if use doc; then
+               dodoc "${DISTDIR}"/${PN}.pdf
+       fi
+}
+
+pkg_postinst() {
+       xdg_icon_cache_update
+       xdg_desktop_database_update
+}
+
+pkg_postrm() {
+       xdg_icon_cache_update
+       xdg_desktop_database_update
+}

Reply via email to