diff --git a/libvirt.spec.in b/libvirt.spec.in index 521ecebf05..f7c128d809 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -337,7 +337,7 @@ BuildRequires: gcc %if %{with_libxl} BuildRequires: xen-devel %endif -BuildRequires: glib2-devel >= 2.56 +BuildRequires: glib2-devel >= 2.58 BuildRequires: libxml2-devel BuildRequires: readline-devel BuildRequires: pkgconfig(bash-completion) >= 2.0 diff --git a/meson.build b/meson.build index 9cc0620e78..063233e05e 100644 --- a/meson.build +++ b/meson.build @@ -985,7 +985,7 @@ else endif endif -glib_version = '2.56.0' +glib_version = '2.58.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 947294cb2b..1c8f3f902d 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1848,7 +1848,6 @@ virStorageSourceUpdatePhysicalSize; # util/glibcompat.h -vir_g_canonicalize_filename; vir_g_fsync; vir_g_source_unref; vir_g_strdup_printf; diff --git a/src/util/glibcompat.c b/src/util/glibcompat.c index fdc32af5e2..d8912b323b 100644 --- a/src/util/glibcompat.c +++ b/src/util/glibcompat.c @@ -63,136 +63,11 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" -#undef g_canonicalize_filename -#undef g_hash_table_steal_extended #undef g_fsync #undef g_strdup_printf #undef g_strdup_vprintf -gchar * -vir_g_canonicalize_filename(const gchar *filename, - const gchar *relative_to) -{ -#if GLIB_CHECK_VERSION(2, 58, 0) - return g_canonicalize_filename(filename, relative_to); -#else /* ! GLIB_CHECK_VERSION(2, 58, 0) */ - gchar *canon, *start, *p, *q; - guint i; - - g_return_val_if_fail(relative_to == NULL || g_path_is_absolute(relative_to), NULL); - - if (!g_path_is_absolute(filename)) { - gchar *cwd_allocated = NULL; - const gchar *cwd; - - if (relative_to != NULL) - cwd = relative_to; - else - cwd = cwd_allocated = g_get_current_dir(); - - canon = g_build_filename(cwd, filename, NULL); - g_free(cwd_allocated); - } else { - canon = g_strdup(filename); - } - - start = (char *)g_path_skip_root(canon); - - if (start == NULL) { - /* This shouldn't really happen, as g_get_current_dir() should - return an absolute pathname, but bug 573843 shows this is - not always happening */ - g_free(canon); - return g_build_filename(G_DIR_SEPARATOR_S, filename, NULL); - } - - /* POSIX allows double slashes at the start to - * mean something special (as does windows too). - * So, "//" != "/", but more than two slashes - * is treated as "/". - */ - i = 0; - for (p = start - 1; - (p >= canon) && - G_IS_DIR_SEPARATOR(*p); - p--) - i++; - if (i > 2) { - i -= 1; - start -= i; - memmove(start, start+i, strlen(start+i) + 1); - } - - /* Make sure we're using the canonical dir separator */ - p++; - while (p < start && G_IS_DIR_SEPARATOR(*p)) - *p++ = G_DIR_SEPARATOR; - - p = start; - while (*p != 0) { - if (p[0] == '.' && (p[1] == 0 || G_IS_DIR_SEPARATOR(p[1]))) { - memmove(p, p+1, strlen(p+1)+1); - } else if (p[0] == '.' && p[1] == '.' && - (p[2] == 0 || G_IS_DIR_SEPARATOR(p[2]))) { - q = p + 2; - /* Skip previous separator */ - p = p - 2; - if (p < start) - p = start; - while (p > start && !G_IS_DIR_SEPARATOR(*p)) - p--; - if (G_IS_DIR_SEPARATOR(*p)) - *p++ = G_DIR_SEPARATOR; - memmove(p, q, strlen(q)+1); - } else { - /* Skip until next separator */ - while (*p != 0 && !G_IS_DIR_SEPARATOR(*p)) - p++; - - if (*p != 0) { - /* Canonicalize one separator */ - *p++ = G_DIR_SEPARATOR; - } - } - - /* Remove additional separators */ - q = p; - while (*q && G_IS_DIR_SEPARATOR(*q)) - q++; - - if (p != q) - memmove(p, q, strlen(q) + 1); - } - - /* Remove trailing slashes */ - if (p > start && G_IS_DIR_SEPARATOR(*(p-1))) - *(p-1) = 0; - - return canon; -#endif /* ! GLIB_CHECK_VERSION(2, 58, 0) */ -} - - -gboolean -vir_g_hash_table_steal_extended(GHashTable *hash_table, - gconstpointer lookup_key, - gpointer *stolen_key, - gpointer *stolen_value) -{ -#if GLIB_CHECK_VERSION(2, 58, 0) - return g_hash_table_steal_extended(hash_table, lookup_key, stolen_key, stolen_value); -#else /* ! GLIB_CHECK_VERSION(2, 58, 0) */ - if (!(g_hash_table_lookup_extended(hash_table, lookup_key, stolen_key, stolen_value))) - return FALSE; - - g_hash_table_steal(hash_table, lookup_key); - - return TRUE; -#endif /* ! GLIB_CHECK_VERSION(2, 58, 0) */ -} - - /* Drop when min glib >= 2.63.0 */ gint vir_g_fsync(gint fd) diff --git a/src/util/glibcompat.h b/src/util/glibcompat.h index 178fea3cf3..2542b4d5dc 100644 --- a/src/util/glibcompat.h +++ b/src/util/glibcompat.h @@ -68,15 +68,6 @@ #endif /* GLib < 2.67.0 */ -gchar * vir_g_canonicalize_filename(const gchar *filename, - const gchar *relative_to); - -gboolean -vir_g_hash_table_steal_extended(GHashTable *hash_table, - gconstpointer lookup_key, - gpointer *stolen_key, - gpointer *stolen_value); -#define g_hash_table_steal_extended vir_g_hash_table_steal_extended gint vir_g_fsync(gint fd); char *vir_g_strdup_printf(const char *msg, ...) @@ -89,7 +80,6 @@ char *vir_g_strdup_vprintf(const char *msg, va_list args) # define g_strdup_vprintf vir_g_strdup_vprintf #endif -#define g_canonicalize_filename vir_g_canonicalize_filename #undef g_fsync #define g_fsync vir_g_fsync