qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

glib: bump min required glib library version to 2.48

Per supported platforms doc[1], the various min glib on relevant distros is:

RHEL-8: 2.56.1
RHEL-7: 2.50.3
Debian (Buster): 2.58.3
Debian (Stretch): 2.50.3
OpenBSD (Ports): 2.58.3
FreeBSD (Ports): 2.56.3
OpenSUSE Leap 15: 2.54.3
SLE12-SP2: 2.48.2
Ubuntu (Xenial): 2.48.0
macOS (Homebrew): 2.56.0

This suggests that a minimum glib of 2.48 is a reasonable target.

Compared to the previous version bump in

commit e7b3af81597db1a6b55f2c15d030d703c6b2c6ac
Author: Daniel P. Berrangé <berrange@redhat.com>
Date: Fri May 4 15:34:46 2018 +0100

glib: bump min required glib library version to 2.40

This will result in us dropping support for Debian Jessie and
Ubuntu 14.04.

As per the commit message 14.04 was already outside our list
of supported build platforms and an exception was only made
because one of the build hosts used during merge testing was
stuck on 14.04.

Debian Jessie is justified to drop because we only aim to
support at most 2 major versions of Debian at any time. This
means Buster and Stretch at this time.

The g_strv_contains compat code is dropped as this API is
present since 2.44

The g_assert_cmpmem compat code is dropped as this API is
present since 2.46

[1] https://qemu.weilnetz.de/doc/qemu-doc.html#Supported-build-platforms

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

+3 -46
+1 -1
configure
··· 3636 3636 ########################################## 3637 3637 # glib support probe 3638 3638 3639 - glib_req_ver=2.40 3639 + glib_req_ver=2.48 3640 3640 glib_modules=gthread-2.0 3641 3641 if test "$modules" = yes; then 3642 3642 glib_modules="$glib_modules gmodule-export-2.0"
-5
crypto/hmac-glib.c
··· 21 21 [QCRYPTO_HASH_ALG_MD5] = G_CHECKSUM_MD5, 22 22 [QCRYPTO_HASH_ALG_SHA1] = G_CHECKSUM_SHA1, 23 23 [QCRYPTO_HASH_ALG_SHA256] = G_CHECKSUM_SHA256, 24 - /* Support for HMAC SHA-512 in GLib 2.42 */ 25 - #if GLIB_CHECK_VERSION(2, 42, 0) 26 24 [QCRYPTO_HASH_ALG_SHA512] = G_CHECKSUM_SHA512, 27 - #else 28 - [QCRYPTO_HASH_ALG_SHA512] = -1, 29 - #endif 30 25 [QCRYPTO_HASH_ALG_SHA224] = -1, 31 26 [QCRYPTO_HASH_ALG_SHA384] = -1, 32 27 [QCRYPTO_HASH_ALG_RIPEMD160] = -1,
+2 -40
include/glib-compat.h
··· 19 19 /* Ask for warnings for anything that was marked deprecated in 20 20 * the defined version, or before. It is a candidate for rewrite. 21 21 */ 22 - #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_40 22 + #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_48 23 23 24 24 /* Ask for warnings if code tries to use function that did not 25 25 * exist in the defined version. These risk breaking builds 26 26 */ 27 - #define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_40 27 + #define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_48 28 28 29 29 #pragma GCC diagnostic push 30 30 #pragma GCC diagnostic ignored "-Wdeprecated-declarations" ··· 63 63 * without generating warnings. 64 64 */ 65 65 66 - static inline gboolean g_strv_contains_qemu(const gchar *const *strv, 67 - const gchar *str) 68 - { 69 - #if GLIB_CHECK_VERSION(2, 44, 0) 70 - return g_strv_contains(strv, str); 71 - #else 72 - g_return_val_if_fail(strv != NULL, FALSE); 73 - g_return_val_if_fail(str != NULL, FALSE); 74 - 75 - for (; *strv != NULL; strv++) { 76 - if (g_str_equal(str, *strv)) { 77 - return TRUE; 78 - } 79 - } 80 - 81 - return FALSE; 82 - #endif 83 - } 84 - #define g_strv_contains(a, b) g_strv_contains_qemu(a, b) 85 - 86 66 #if defined(_WIN32) && !GLIB_CHECK_VERSION(2, 50, 0) 87 67 /* 88 68 * g_poll has a problem on Windows when using ··· 90 70 */ 91 71 #define g_poll(fds, nfds, timeout) g_poll_fixed(fds, nfds, timeout) 92 72 gint g_poll_fixed(GPollFD *fds, guint nfds, gint timeout); 93 - #endif 94 - 95 - 96 - #ifndef g_assert_cmpmem 97 - #define g_assert_cmpmem(m1, l1, m2, l2) \ 98 - do { \ 99 - gconstpointer __m1 = m1, __m2 = m2; \ 100 - int __l1 = l1, __l2 = l2; \ 101 - if (__l1 != __l2) { \ 102 - g_assertion_message_cmpnum( \ 103 - G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ 104 - #l1 " (len(" #m1 ")) == " #l2 " (len(" #m2 "))", __l1, "==", \ 105 - __l2, 'i'); \ 106 - } else if (memcmp(__m1, __m2, __l1) != 0) { \ 107 - g_assertion_message(G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ 108 - "assertion failed (" #m1 " == " #m2 ")"); \ 109 - } \ 110 - } while (0) 111 73 #endif 112 74 113 75 #pragma GCC diagnostic pop