[PATCH] build: Bump minimul glib2 version to 2.66.0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Per our supported platforms the minimum available versions are:

         CentOS Stream 9: 2.68.4
               Debian 11: 2.66.8
               Fedora 39: 2.78.6
      openSUSE Leap 15.6: 2.78.6
            Ubuntu 24.04: 2.72.4
                 FreeBSD: 2.80.5

Bump to 2.66 which is limited by Debian 11. While ideally we'd bump to
2.68 which would give us 'g_strv_builder' and friends 2.66 is enough for
g_ptr_array_steal() which can be used to emulate the former with almost
no extra code.

Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
---
 libvirt.spec.in          |  2 +-
 meson.build              |  2 +-
 src/libvirt_private.syms |  4 --
 src/qemu/qemu_agent.c    |  2 +-
 src/qemu/qemu_monitor.c  |  2 +-
 src/util/glibcompat.c    | 94 ----------------------------------------
 src/util/glibcompat.h    | 18 --------
 src/util/vireventglib.c  | 12 ++---
 8 files changed, 10 insertions(+), 126 deletions(-)

diff --git a/libvirt.spec.in b/libvirt.spec.in
index f397b95b79..c5585a72c0 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -357,7 +357,7 @@ BuildRequires: gcc
     %if %{with_libxl}
 BuildRequires: xen-devel
     %endif
-BuildRequires: glib2-devel >= 2.58
+BuildRequires: glib2-devel >= 2.66
 BuildRequires: libxml2-devel
 BuildRequires: readline-devel
 BuildRequires: pkgconfig(bash-completion) >= 2.0
diff --git a/meson.build b/meson.build
index 1b0b717901..52fef8c0fb 100644
--- a/meson.build
+++ b/meson.build
@@ -1004,7 +1004,7 @@ else
   endif
 endif

-glib_version = '2.58.0'
+glib_version = '2.66.0'
 glib_dep = dependency('glib-2.0', version: '>=' + glib_version)
 gobject_dep = dependency('gobject-2.0', version: '>=' + glib_version)
 if host_machine.system() == 'windows'
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index ee90fb2b84..2fe0a07944 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1879,10 +1879,6 @@ virStorageSourceUpdatePhysicalSize;


 # util/glibcompat.h
-vir_g_fsync;
-vir_g_source_unref;
-vir_g_strdup_printf;
-vir_g_strdup_vprintf;
 vir_g_string_replace;


diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index 22359f8518..43fca86f10 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -448,7 +448,7 @@ qemuAgentUnregister(qemuAgent *agent)
 {
     if (agent->watch) {
         g_source_destroy(agent->watch);
-        vir_g_source_unref(agent->watch, agent->context);
+        g_source_unref(agent->watch);
         agent->watch = NULL;
     }
 }
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index ec2f166785..e0b1bf1d37 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -745,7 +745,7 @@ qemuMonitorUnregister(qemuMonitor *mon)
 {
     if (mon->watch) {
         g_source_destroy(mon->watch);
-        vir_g_source_unref(mon->watch, mon->context);
+        g_source_unref(mon->watch);
         mon->watch = NULL;
     }
 }
diff --git a/src/util/glibcompat.c b/src/util/glibcompat.c
index 98dcfab389..bcb666992a 100644
--- a/src/util/glibcompat.c
+++ b/src/util/glibcompat.c
@@ -63,100 +63,6 @@
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"

-#undef g_fsync
-#undef g_strdup_printf
-#undef g_strdup_vprintf
-
-
-/* Drop when min glib >= 2.63.0 */
-gint
-vir_g_fsync(gint fd)
-{
-#ifdef G_OS_WIN32
-    return _commit(fd);
-#else
-    return fsync(fd);
-#endif
-}
-
-
-/* Due to a bug in glib, g_strdup_printf() nor g_strdup_vprintf()
- * abort on OOM.  It's fixed in glib's upstream. Provide our own
- * implementation until the fix gets distributed. */
-char *
-vir_g_strdup_printf(const char *msg, ...)
-{
-    va_list args;
-    char *ret;
-    va_start(args, msg);
-    ret = g_strdup_vprintf(msg, args);
-    if (!ret)
-        abort();
-    va_end(args);
-    return ret;
-}
-
-
-char *
-vir_g_strdup_vprintf(const char *msg, va_list args)
-{
-    char *ret;
-    ret = g_strdup_vprintf(msg, args);
-    if (!ret)
-        abort();
-    return ret;
-}
-
-
-/*
- * If the last reference to a GSource is released in a non-main
- * thread we're exposed to a race condition that causes a
- * crash:
- *
- *    https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1358
- *
- * Thus we're using an idle func to release our ref...
- *
- * ...but this imposes a significant performance penalty on
- * I/O intensive workloads which are sensitive to the iterations
- * of the event loop, so avoid the workaround if we know we have
- * new enough glib.
- *
- * The function below is used from a header file definition.
- *
- * Drop when min glib >= 2.64.0
- */
-#if GLIB_CHECK_VERSION(2, 64, 0)
-void vir_g_source_unref(GSource *src, GMainContext *ctx G_GNUC_UNUSED)
-{
-    g_source_unref(src);
-}
-#else
-
-static gboolean
-virEventGLibSourceUnrefIdle(gpointer data)
-{
-    GSource *src = data;
-
-    g_source_unref(src);
-
-    return FALSE;
-}
-
-void vir_g_source_unref(GSource *src, GMainContext *ctx)
-{
-    GSource *idle = g_idle_source_new();
-
-    g_source_set_callback(idle, virEventGLibSourceUnrefIdle, src, NULL);
-
-    g_source_attach(idle, ctx);
-
-    g_source_unref(idle);
-}
-
-#endif
-
-
 /**
  * Adapted (to pass syntax check) from 'g_string_replace' from
  * glib-2.81.1. Drop once minimum glib is bumped to 2.68.
diff --git a/src/util/glibcompat.h b/src/util/glibcompat.h
index 474ff95bc5..a3d01089e6 100644
--- a/src/util/glibcompat.h
+++ b/src/util/glibcompat.h
@@ -42,24 +42,6 @@

 #endif /* GLib < 2.67.0 */

-
-gint vir_g_fsync(gint fd);
-char *vir_g_strdup_printf(const char *msg, ...)
-    G_GNUC_PRINTF(1, 2);
-char *vir_g_strdup_vprintf(const char *msg, va_list args)
-    G_GNUC_PRINTF(1, 0);
-
-#if !GLIB_CHECK_VERSION(2, 64, 0)
-# define g_strdup_printf vir_g_strdup_printf
-# define g_strdup_vprintf vir_g_strdup_vprintf
-#endif
-
-#undef g_fsync
-#define g_fsync vir_g_fsync
-
-void vir_g_source_unref(GSource *src, GMainContext *ctx);
-
-
 /* Drop once we require glib-2.68 at minimum */
 guint
 vir_g_string_replace(GString *string,
diff --git a/src/util/vireventglib.c b/src/util/vireventglib.c
index 023dc37445..6c54f62123 100644
--- a/src/util/vireventglib.c
+++ b/src/util/vireventglib.c
@@ -213,7 +213,7 @@ virEventGLibHandleUpdate(int watch,
         if (data->source != NULL) {
             VIR_DEBUG("Removed old handle source=%p", data->source);
             g_source_destroy(data->source);
-            vir_g_source_unref(data->source, NULL);
+            g_source_unref(data->source);
         }

         data->source = virEventGLibAddSocketWatch(
@@ -227,7 +227,7 @@ virEventGLibHandleUpdate(int watch,

         VIR_DEBUG("Removed old handle source=%p", data->source);
         g_source_destroy(data->source);
-        vir_g_source_unref(data->source, NULL);
+        g_source_unref(data->source);
         data->source = NULL;
         data->events = 0;
     }
@@ -276,7 +276,7 @@ virEventGLibHandleRemove(int watch)

     if (data->source != NULL) {
         g_source_destroy(data->source);
-        vir_g_source_unref(data->source, NULL);
+        g_source_unref(data->source);
         data->source = NULL;
         data->events = 0;
     }
@@ -409,7 +409,7 @@ virEventGLibTimeoutUpdate(int timer,
     if (interval >= 0) {
         if (data->source != NULL) {
             g_source_destroy(data->source);
-            vir_g_source_unref(data->source, NULL);
+            g_source_unref(data->source);
         }

         data->interval = interval;
@@ -419,7 +419,7 @@ virEventGLibTimeoutUpdate(int timer,
             goto cleanup;

         g_source_destroy(data->source);
-        vir_g_source_unref(data->source, NULL);
+        g_source_unref(data->source);
         data->source = NULL;
     }

@@ -468,7 +468,7 @@ virEventGLibTimeoutRemove(int timer)

     if (data->source != NULL) {
         g_source_destroy(data->source);
-        vir_g_source_unref(data->source, NULL);
+        g_source_unref(data->source);
         data->source = NULL;
     }

-- 
2.48.1




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux