Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package entangle for openSUSE:Factory 
checked in at 2026-05-27 16:14:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/entangle (Old)
 and      /work/SRC/openSUSE:Factory/.entangle.new.1937 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "entangle"

Wed May 27 16:14:17 2026 rev:17 rq:1355205 version:3.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/entangle/entangle.changes        2022-03-01 
17:04:57.488355560 +0100
+++ /work/SRC/openSUSE:Factory/.entangle.new.1937/entangle.changes      
2026-05-27 16:14:34.791054897 +0200
@@ -1,0 +2,6 @@
+Tue May 26 14:11:32 UTC 2026 - Marcus Meissner <[email protected]>
+
+- fix build against current gtk3. patch extracted froom upstream
+  entangle-fix-new-gtk.patch 
+
+-------------------------------------------------------------------

New:
----
  entangle-fix-new-gtk.patch

----------(New B)----------
  New:- fix build against current gtk3. patch extracted froom upstream
  entangle-fix-new-gtk.patch 
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ entangle.spec ++++++
--- /var/tmp/diff_new_pack.DDsTS4/_old  2026-05-27 16:14:36.287116531 +0200
+++ /var/tmp/diff_new_pack.DDsTS4/_new  2026-05-27 16:14:36.287116531 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package entangle
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -28,6 +28,8 @@
 Source2:        %{name}.keyring
 # from upstream git
 Patch0:         fix-new-meson.patch
+# extract from upstream git
+Patch1:         entangle-fix-new-gtk.patch
 BuildRequires:  gtk-doc
 BuildRequires:  hicolor-icon-theme
 BuildRequires:  intltool


++++++ entangle-fix-new-gtk.patch ++++++
diff --git a/src/backend/meson.build b/src/backend/meson.build
index c4c28e6..547c570 100644
--- a/src/backend/meson.build
+++ b/src/backend/meson.build
@@ -121,6 +121,7 @@ entangle_backend_sources += entangle_backend_enum_sources
 entangle_backend_deps = [
   glib_dep,
   gio_dep,
+  girepository_dep,
   gthread_dep,
   gdk_pixbuf_dep,
   gst_dep,
@@ -133,10 +134,13 @@ entangle_backend_deps = [
   libraw_dep,
 ]
 
+entangle_backend_cflags = warning_cflags
+
 entangle_backend = shared_library(
   'entangle_backend',
   sources: entangle_backend_sources,
   dependencies: entangle_backend_deps,
+  c_args: entangle_backend_cflags,
   version: '0.0.0',
   install: true,
   install_dir: entangle_libdir,
diff --git a/src/entangle-main.c b/src/entangle-main.c
index 970bfee..bfc0f4a 100644
--- a/src/entangle-main.c
+++ b/src/entangle-main.c
@@ -21,7 +21,11 @@
 #include <locale.h>
 #include <stdio.h>
 
+#if GIREPOSITORY_MAJOR_VERSION >= 2
+#include <girepository/girepository.h>
+#else
 #include <girepository.h>
+#endif
 #include <glib/gi18n.h>
 #include <gst/gst.h>
 #include <gtk/gtk.h>
@@ -80,7 +84,14 @@ main(int argc, char **argv)
     gst_init(NULL, NULL);
 
     if (ins) {
+#if GIREPOSITORY_MAJOR_VERSION >= 2
+        GStrv args = g_strsplit(ins, ",", 2);
+
+        gi_repository_dump(args[0], args[1], NULL);
+        g_strfreev(args);
+#else
         g_irepository_dump(ins, NULL);
+#endif
         return 0;
     }
 
diff --git a/src/frontend/entangle-application.c 
b/src/frontend/entangle-application.c
index 3e3e1af..efd817d 100644
--- a/src/frontend/entangle-application.c
+++ b/src/frontend/entangle-application.c
@@ -33,6 +33,12 @@
 #include "entangle-preferences-display.h"
 #include "entangle-preferences.h"
 
+#if GIREPOSITORY_MAJOR_VERSION >= 2
+#include <girepository/girepository.h>
+#else
+#include <girepository.h>
+#endif
+
 /**
  * SECTION:entangle-application
  * @Short_description: Global application state base class
@@ -55,6 +61,7 @@ struct _EntangleApplication
     EntangleHelpAbout *about;
     EntangleCameraSupport *devices;
 
+    GIRepository *giRepository;
     PeasEngine *pluginEngine;
     PeasExtensionSet *pluginExt;
 };
@@ -149,6 +156,7 @@ entangle_application_finalize(GObject *object)
         g_object_unref(app->pluginEngine);
     if (app->pluginExt)
         g_object_unref(app->pluginExt);
+    g_clear_object(&app->giRepository);
 
     G_OBJECT_CLASS(entangle_application_parent_class)->finalize(object);
 }
@@ -470,7 +478,15 @@ entangle_application_init(EntangleApplication *app)
     app->activeCameras = entangle_camera_list_new_active();
     app->supportedCameras = entangle_camera_list_new_supported();
 
-    g_irepository_require(g_irepository_get_default(), "Peas", "1.0", 0, NULL);
+#if GIREPOSITORY_MAJOR_VERSION >= 2
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+    app->giRepository = gi_repository_dup_default();
+#pragma GCC diagnostic pop
+    gi_repository_require(app->giRepository, "Peas", "1.0", 0, NULL);
+#else
+    app->giRepository = g_object_ref(g_irepository_get_default());
+    g_irepository_require(app->giRepository, "Peas", "1.0", 0, NULL);
+#endif
 
     userdir =
         g_build_filename(g_get_user_config_dir(), "entangle/plugins", NULL);
diff --git a/src/frontend/meson.build b/src/frontend/meson.build
index 1ed9d75..9b938ef 100644
--- a/src/frontend/meson.build
+++ b/src/frontend/meson.build
@@ -90,6 +90,7 @@ entangle_frontend_sources += entangle_frontend_enum_sources
 entangle_frontend_deps = [
   gthread_dep,
   gmodule_dep,
+  gio_unix_dep,
   gtk_dep,
   gst_dep,
   pango_dep,
@@ -107,7 +108,7 @@ entangle_frontend_cflags = [
     '-DPKGDATADIR="' + entangle_pkgdatadir + '"',
     '-DLIBDIR="' + entangle_libdir + '"',
     '-DVERSION="' + meson.project_version() + '"',
-]
+] + girepository_cflags + warning_cflags
 
 entangle_frontend = shared_library(
   'entangle_frontend',
diff --git a/src/meson.build b/src/meson.build
index b82bd3a..c9e3312 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -23,7 +23,7 @@ entangle_cflags = [
     '-DDATADIR="' + entangle_datadir + '"',
     '-DLOCALE_DIR="' + entangle_localedir + '"',
     '-DGETTEXT_PACKAGE="entangle"',
-]
+] + girepository_cflags + warning_cflags
 
 entangle = executable(
   'entangle',
diff --git a/meson.build b/meson.build
index 6fc628a..19e4fff 100644
--- a/meson.build
+++ b/meson.build
@@ -7,7 +7,7 @@ project(
     'c_std=gnu99',
     'warning_level=1',
   ],
-  meson_version: '>= 0.49.0'
+  meson_version: '>= 0.56.0'
 )
 
 pod2man = find_program('pod2man')
@@ -21,9 +21,11 @@ pango_min_version = '>= 1.40.11'
 gphoto2_min_version = '>= 2.5.0'
 gudev_min_version = '>= 145'
 gobject_introspection_min_version = '>= 1.54.0'
+girepository2_min_version = '>= 2.86'
 lcms2_min_version = '>= 2.0'
 libpeas_min_version = '>= 1.2.0'
 gexiv2_min_version = '>= 0.10'
+gexiv2_016_min_version = '>= 0.16'
 xext_min_version = '>= 1.3.0'
 libraw_min_version = '>= 0.9.0'
 gst_min_version = '>= 1.0.0'
@@ -33,6 +35,7 @@ 
add_global_arguments('-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_38', language :
 
 glib_dep = dependency('glib-2.0', version: glib_min_version)
 gio_dep = dependency('gio-2.0', version: glib_min_version)
+gio_unix_dep = dependency('gio-unix-2.0', version: glib_min_version)
 gthread_dep = dependency('gthread-2.0', version: glib_min_version)
 gmodule_dep = dependency('gmodule-2.0', version: glib_min_version)
 gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0', version: gdk_pixbuf_min_version)
@@ -41,11 +44,15 @@ pango_dep = dependency('pango', version: pango_min_version)
 pango_cairo_dep = dependency('pangocairo', version: pango_min_version)
 gphoto2_dep = dependency('libgphoto2', version: gphoto2_min_version)
 gudev_dep = dependency('gudev-1.0', version: gudev_min_version)
-gobject_introspection_dep = dependency('gobject-introspection-1.0', version: 
gobject_introspection_min_version)
 lcms2_dep = dependency('lcms2', version: lcms2_min_version)
 libpeas_dep = dependency('libpeas-1.0', version: libpeas_min_version)
 libpeas_gtk_dep = dependency('libpeas-gtk-1.0', version: libpeas_min_version)
-gexiv2_dep = dependency('gexiv2', version: gexiv2_min_version)
+gexiv2_dep = dependency('gexiv2-0.16', version: gexiv2_016_min_version, 
required: false)
+gexiv2_gi_name = 'GExiv2-0.16'
+if not gexiv2_dep.found()
+    gexiv2_dep = dependency('gexiv2', version: gexiv2_min_version)
+    gexiv2_gi_name = 'GExiv2-0.10'
+endif
 xext_dep = dependency('xext', version: xext_min_version)
 # Cannot use pkg-config file as it includes a bogus '-fopenmp' arg in Libs
 # which in turn confuses g-ir-scanner
@@ -54,6 +61,41 @@ libraw_dep = cc.find_library('raw_r')
 gst_dep = dependency('gstreamer-1.0', version: gst_min_version)
 gst_video_dep = dependency('gstreamer-video-1.0', version: gst_min_version)
 
+# libpeas1 switched to girepository-2.0. This is an API break as the
+# girepository.h header uses different function prefix. We can thus
+# detect 'g_irepository_get_type' (from gobject-introspection) vs
+# 'gi_repository_get_type' (from glib)
+
+with_girepository2 = false
+gi1_test_code = '''
+    #include <libpeas/peas.h>
+
+    int main(void) {
+      g_irepository_get_type();
+      return 0;
+    }
+'''
+gi2_test_code = '''
+    #include <libpeas/peas.h>
+
+    int main(void) {
+      gi_repository_get_type();
+      return 0;
+    }
+'''
+
+if cc.compiles(gi2_test_code, dependencies: [libpeas_dep], args: ['-Werror', 
'-O2'])
+    girepository_dep = dependency('girepository-2.0', version: 
girepository2_min_version)
+    girepository_cflags = ['-DGIREPOSITORY_MAJOR_VERSION=2']
+else
+    if cc.compiles(gi1_test_code, dependencies: [libpeas_dep], args: 
['-Werror', '-O2'])
+        girepository_dep = dependency('gobject-introspection-1.0', version: 
gobject_introspection_min_version)
+        girepository_cflags = ['-DGIREPOSITORY_MAJOR_VERSION=1']
+    else
+        error('Cannot determine if libpeas1 uses girepository-1.0 or 
girepository-2.0')
+    endif
+endif
+
 gnome = import('gnome')
 i18n = import('i18n')
 
@@ -149,7 +191,7 @@ check_cflags = [
   '-Wunused-function',
   '-Wunused-label',
   '-Wunused-local-typedefs',
-  '-Wunused-macros',
+  '-Wno-unused-macros',
   '-Wunused-parameter',
   '-Wunused-result',
   '-Wunused-value',
@@ -169,7 +211,7 @@ check_cflags = [
   '-Wjump-misses-init',
   '-Wframe-larger-than=40096',
   '-O2',
-  '-Wp,-D_FORTIFY_SOURCE=2',
+  '-D_FORTIFY_SOURCE=2',
   '-fstack-protector-all',
   '--param=ssp-buffer-size=4',
   '-fexceptions',
@@ -181,23 +223,21 @@ check_cflags = [
   '-Wno-suggest-attribute=const',
 ]
 
-cflags = []
+warning_cflags = []
 foreach cflag: check_cflags
   if cc.has_argument(cflag)
-    cflags += [cflag]
+    warning_cflags += [cflag]
   endif
 endforeach
 
 werror_option = get_option('enable-werror')
 if werror_option
   if cc.has_argument('-Werror')
-    cflags += ['-Werror']
+    warning_cflags += ['-Werror']
   endif
 endif
 
 
-add_project_arguments(cflags, language: 'c')
-
 entangle_prefix = get_option('prefix')
 entangle_bindir = join_paths(entangle_prefix, get_option('bindir'))
 entangle_libdir = join_paths(entangle_prefix, get_option('libdir'))
@@ -209,7 +249,7 @@ entangle_schemadir = join_paths(entangle_datadir, 
'glib-2.0', 'schemas')
 entangle_pluginlibdir = join_paths(entangle_libdir, 'entangle', 'plugins')
 entangle_plugindatadir = join_paths(entangle_datadir, 'entangle', 'plugins')
 
-po_dir = join_paths(meson.source_root(), 'po')
+po_dir = join_paths(meson.project_source_root(), 'po')
 
 subdir('src')
 subdir('po')
@@ -218,13 +258,13 @@ subdir('docs')
 
 test(
     'syntax-check',
-    find_program('@0@/build-aux/syntax-check'.format(meson.source_root())),
+    
find_program('@0@/build-aux/syntax-check'.format(meson.project_source_root())),
     suite: 'style',
     env: [
-        'MESON_SOURCE_ROOT=@0@'.format(meson.source_root()),
+        'MESON_SOURCE_ROOT=@0@'.format(meson.project_source_root()),
     ],
 )
 
 
 meson.add_install_script('meson_post_install.py')
-meson.add_dist_script('build-aux/extra-dist', meson.source_root(), 
meson.build_root())
+meson.add_dist_script('build-aux/extra-dist', meson.project_source_root(), 
meson.project_build_root())

Reply via email to