diff mbox series

[for-9.1,4/9] Bump minimum glib version to v2.66

Message ID 20240328140607.2433889-5-thuth@redhat.com (mailing list archive)
State New, archived
Headers show
Series Switch to glib URI parsing code | expand

Commit Message

Thomas Huth March 28, 2024, 2:06 p.m. UTC
Now that we dropped support for CentOS 8 and Ubuntu 20.04, we can
look into bumping the glib version to a new minimum for further
clean-ups. According to repology.org, available versions are:

 CentOS Stream 9:       2.66.7
 Debian 11:             2.66.8
 Fedora 38:             2.74.1
 Freebsd:               2.78.4
 Homebrew:              2.80.0
 Openbsd:               2.78.4
 OpenSuse leap 15.5:    2.70.5
 pkgsrc_current:        2.78.4
 Ubuntu 22.04:          2.72.1

Thus it should be safe to bump the minimum glib version to 2.66 now.
Version 2.66 comes with new functions for URI parsing which will
allow further clean-ups in the following patches.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 meson.build              | 16 +---------------
 include/glib-compat.h    | 27 ++-------------------------
 qga/commands-posix-ssh.c |  4 ++--
 3 files changed, 5 insertions(+), 42 deletions(-)

Comments

Paolo Bonzini April 12, 2024, 10:16 a.m. UTC | #1
On Thu, Mar 28, 2024 at 3:06 PM Thomas Huth <thuth@redhat.com> wrote:
>
> Now that we dropped support for CentOS 8 and Ubuntu 20.04, we can
> look into bumping the glib version to a new minimum for further
> clean-ups. According to repology.org, available versions are:
>
>  CentOS Stream 9:       2.66.7
>  Debian 11:             2.66.8
>  Fedora 38:             2.74.1
>  Freebsd:               2.78.4
>  Homebrew:              2.80.0
>  Openbsd:               2.78.4
>  OpenSuse leap 15.5:    2.70.5
>  pkgsrc_current:        2.78.4
>  Ubuntu 22.04:          2.72.1
>
> Thus it should be safe to bump the minimum glib version to 2.66 now.
> Version 2.66 comes with new functions for URI parsing which will
> allow further clean-ups in the following patches.

Missing:

diff --git a/qga/commands-posix-ssh.c b/qga/commands-posix-ssh.c
index b0e0b1d674f..cc1f5a708e4 100644
--- a/qga/commands-posix-ssh.c
+++ b/qga/commands-posix-ssh.c
@@ -288,7 +288,6 @@ qmp_guest_ssh_get_authorized_keys(
 }

 #ifdef QGA_BUILD_UNIT_TEST
-#if GLIB_CHECK_VERSION(2, 60, 0)
 static const strList test_key2 = {
     .value = (char *)"algo key2 comments"
 };
@@ -484,11 +483,4 @@ int main(int argc, char *argv[])

     return g_test_run();
 }
-#else
-int main(int argc, char *argv[])
-{
-    g_test_message("test skipped, needs glib >= 2.60");
-    return 0;
-}
-#endif /* GLIB_2_60 */
 #endif /* BUILD_UNIT_TEST */

Paolo
Thomas Huth April 12, 2024, 10:58 a.m. UTC | #2
On 12/04/2024 12.16, Paolo Bonzini wrote:
> On Thu, Mar 28, 2024 at 3:06 PM Thomas Huth <thuth@redhat.com> wrote:
>>
>> Now that we dropped support for CentOS 8 and Ubuntu 20.04, we can
>> look into bumping the glib version to a new minimum for further
>> clean-ups. According to repology.org, available versions are:
>>
>>   CentOS Stream 9:       2.66.7
>>   Debian 11:             2.66.8
>>   Fedora 38:             2.74.1
>>   Freebsd:               2.78.4
>>   Homebrew:              2.80.0
>>   Openbsd:               2.78.4
>>   OpenSuse leap 15.5:    2.70.5
>>   pkgsrc_current:        2.78.4
>>   Ubuntu 22.04:          2.72.1
>>
>> Thus it should be safe to bump the minimum glib version to 2.66 now.
>> Version 2.66 comes with new functions for URI parsing which will
>> allow further clean-ups in the following patches.
> 
> Missing:
> 
> diff --git a/qga/commands-posix-ssh.c b/qga/commands-posix-ssh.c
> index b0e0b1d674f..cc1f5a708e4 100644
> --- a/qga/commands-posix-ssh.c
> +++ b/qga/commands-posix-ssh.c
> @@ -288,7 +288,6 @@ qmp_guest_ssh_get_authorized_keys(
>   }
> 
>   #ifdef QGA_BUILD_UNIT_TEST
> -#if GLIB_CHECK_VERSION(2, 60, 0)
>   static const strList test_key2 = {
>       .value = (char *)"algo key2 comments"
>   };
> @@ -484,11 +483,4 @@ int main(int argc, char *argv[])
> 
>       return g_test_run();
>   }
> -#else
> -int main(int argc, char *argv[])
> -{
> -    g_test_message("test skipped, needs glib >= 2.60");
> -    return 0;
> -}
> -#endif /* GLIB_2_60 */
>   #endif /* BUILD_UNIT_TEST */

Indeed! And there seems to be another GLIB_CHECK_VERSION(2,62,0) check in 
util/error-report.c which we likely can clean up now, too!

  Thomas
Paolo Bonzini April 12, 2024, 12:01 p.m. UTC | #3
On 4/12/24 12:58, Thomas Huth wrote:
> On 12/04/2024 12.16, Paolo Bonzini wrote:
>> On Thu, Mar 28, 2024 at 3:06 PM Thomas Huth <thuth@redhat.com> wrote:
>>>
>>> Now that we dropped support for CentOS 8 and Ubuntu 20.04, we can
>>> look into bumping the glib version to a new minimum for further
>>> clean-ups. According to repology.org, available versions are:
>>>
>>>   CentOS Stream 9:       2.66.7
>>>   Debian 11:             2.66.8
>>>   Fedora 38:             2.74.1
>>>   Freebsd:               2.78.4
>>>   Homebrew:              2.80.0
>>>   Openbsd:               2.78.4
>>>   OpenSuse leap 15.5:    2.70.5
>>>   pkgsrc_current:        2.78.4
>>>   Ubuntu 22.04:          2.72.1
>>>
>>> Thus it should be safe to bump the minimum glib version to 2.66 now.
>>> Version 2.66 comes with new functions for URI parsing which will
>>> allow further clean-ups in the following patches.
>>
>> Missing:
>>
>> diff --git a/qga/commands-posix-ssh.c b/qga/commands-posix-ssh.c
>> index b0e0b1d674f..cc1f5a708e4 100644
>> --- a/qga/commands-posix-ssh.c
>> +++ b/qga/commands-posix-ssh.c
>> @@ -288,7 +288,6 @@ qmp_guest_ssh_get_authorized_keys(
>>   }
>>
>>   #ifdef QGA_BUILD_UNIT_TEST
>> -#if GLIB_CHECK_VERSION(2, 60, 0)
>>   static const strList test_key2 = {
>>       .value = (char *)"algo key2 comments"
>>   };
>> @@ -484,11 +483,4 @@ int main(int argc, char *argv[])
>>
>>       return g_test_run();
>>   }
>> -#else
>> -int main(int argc, char *argv[])
>> -{
>> -    g_test_message("test skipped, needs glib >= 2.60");
>> -    return 0;
>> -}
>> -#endif /* GLIB_2_60 */
>>   #endif /* BUILD_UNIT_TEST */
> 
> Indeed! And there seems to be another GLIB_CHECK_VERSION(2,62,0) check 
> in util/error-report.c which we likely can clean up now, too!

Ok, I'll squash the above and

diff --git a/util/error-report.c b/util/error-report.c
index 6e44a557321..1b17c11de19 100644
--- a/util/error-report.c
+++ b/util/error-report.c
@@ -172,18 +172,8 @@ static void print_loc(void)
  static char *
  real_time_iso8601(void)
  {
-#if GLIB_CHECK_VERSION(2,62,0)
      g_autoptr(GDateTime) dt = g_date_time_new_now_utc();
-    /* ignore deprecation warning, since GLIB_VERSION_MAX_ALLOWED is 2.56 */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
      return g_date_time_format_iso8601(dt);
-#pragma GCC diagnostic pop
-#else
-    GTimeVal tv;
-    g_get_current_time(&tv);
-    return g_time_val_to_iso8601(&tv);
-#endif
  }
  
  /*

then.  As an aside, we probably can also drop:

             /*
              * gtk_widget_set_double_buffered() was deprecated in 3.14.
              * It is required for opengl rendering on X11 though.  A
              * proper replacement (native opengl support) is only
              * available in 3.16+.  Silence the warning if possible.
              */
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
             gtk_widget_set_double_buffered(vc->gfx.drawing_area, FALSE);
#pragma GCC diagnostic pop


and


#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
     /*
      * check if RBD image is a clone (= has a parent).
      *
      * rbd_get_parent_info is deprecated from Nautilus onwards, but the
      * replacement rbd_get_parent is not present in Luminous and Mimic.
      */
     if (rbd_get_parent_info(s->image, NULL, 0, NULL, 0, NULL, 0) != -ENOENT) {
         return status;
     }
#pragma GCC diagnostic pop


(Nautilus is Ceph 14, it's in all of CentOS Stream 9, Ubuntu 20.04 and
Debian 11) but I have no idea what the replacement would be. :/

Paolo
diff mbox series

Patch

diff --git a/meson.build b/meson.build
index c9c3217ba4..c0aaceffc0 100644
--- a/meson.build
+++ b/meson.build
@@ -865,7 +865,7 @@  have_xen_pci_passthrough = get_option('xen_pci_passthrough') \
 
 # When bumping glib minimum version, please check also whether to increase
 # the _WIN32_WINNT setting in osdep.h according to the value from glib
-glib_req_ver = '>=2.56.0'
+glib_req_ver = '>=2.66.0'
 glib_pc = dependency('glib-2.0', version: glib_req_ver, required: true,
                     method: 'pkg-config')
 glib_cflags = []
@@ -906,20 +906,6 @@  if not cc.compiles('''
         to the right pkg-config files for your build target.''')
 endif
 
-# Silence clang warnings triggered by glib < 2.57.2
-if not cc.compiles('''
-  #include <glib.h>
-  typedef struct Foo {
-    int i;
-  } Foo;
-  static void foo_free(Foo *f)
-  {
-    g_free(f);
-  }
-  G_DEFINE_AUTOPTR_CLEANUP_FUNC(Foo, foo_free)
-  int main(void) { return 0; }''', dependencies: glib_pc, args: ['-Wunused-function', '-Werror'])
-  glib_cflags += cc.get_supported_arguments('-Wno-unused-function')
-endif
 glib = declare_dependency(dependencies: [glib_pc, gmodule],
                           compile_args: glib_cflags,
                           version: glib_pc.version())
diff --git a/include/glib-compat.h b/include/glib-compat.h
index 43a562974d..86be439ba0 100644
--- a/include/glib-compat.h
+++ b/include/glib-compat.h
@@ -19,12 +19,12 @@ 
 /* Ask for warnings for anything that was marked deprecated in
  * the defined version, or before. It is a candidate for rewrite.
  */
-#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_56
+#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_66
 
 /* Ask for warnings if code tries to use function that did not
  * exist in the defined version. These risk breaking builds
  */
-#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_56
+#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_66
 
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
@@ -105,29 +105,6 @@  static inline gpointer g_memdup2_qemu(gconstpointer mem, gsize byte_size)
 }
 #define g_memdup2(m, s) g_memdup2_qemu(m, s)
 
-#if defined(G_OS_UNIX)
-/*
- * Note: The fallback implementation is not MT-safe, and it returns a copy of
- * the libc passwd (must be g_free() after use) but not the content. Because of
- * these important differences the caller must be aware of, it's not #define for
- * GLib API substitution.
- */
-static inline struct passwd *
-g_unix_get_passwd_entry_qemu(const gchar *user_name, GError **error)
-{
-#if GLIB_CHECK_VERSION(2, 64, 0)
-    return g_unix_get_passwd_entry(user_name, error);
-#else
-    struct passwd *p = getpwnam(user_name);
-    if (!p) {
-        g_set_error_literal(error, G_UNIX_ERROR, 0, g_strerror(errno));
-        return NULL;
-    }
-    return (struct passwd *)g_memdup(p, sizeof(*p));
-#endif
-}
-#endif /* G_OS_UNIX */
-
 static inline bool
 qemu_g_test_slow(void)
 {
diff --git a/qga/commands-posix-ssh.c b/qga/commands-posix-ssh.c
index 236f80de44..b0e0b1d674 100644
--- a/qga/commands-posix-ssh.c
+++ b/qga/commands-posix-ssh.c
@@ -35,7 +35,7 @@  test_get_passwd_entry(const gchar *user_name, GError **error)
     return p;
 }
 
-#define g_unix_get_passwd_entry_qemu(username, err) \
+#define g_unix_get_passwd_entry(username, err) \
    test_get_passwd_entry(username, err)
 #endif
 
@@ -45,7 +45,7 @@  get_passwd_entry(const char *username, Error **errp)
     g_autoptr(GError) err = NULL;
     struct passwd *p;
 
-    p = g_unix_get_passwd_entry_qemu(username, &err);
+    p = g_unix_get_passwd_entry(username, &err);
     if (p == NULL) {
         error_setg(errp, "failed to lookup user '%s': %s",
                    username, err->message);