Prepare for linking with glib by probing for it at configure
time. Per supported platforms target, the min glib versions on
relevant distros are:
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.
This aligns with the minimum version required by qemu too.
We must disable the bad-function-cast warning as various GLib APIs
and macros will trigger this.
Reviewed-by: Ján Tomko <jtomko(a)redhat.com>
Reviewed-by: Pavel Hrdina <phrdina(a)redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
.travis.yml | 1 +
configure.ac | 2 ++
libvirt.spec.in | 1 +
m4/virt-compile-warnings.m4 | 2 ++
m4/virt-glib.m4 | 36 ++++++++++++++++++++++++++++++++++++
mingw-libvirt.spec.in | 2 ++
6 files changed, 44 insertions(+)
create mode 100644 m4/virt-glib.m4
diff --git a/.travis.yml b/.travis.yml
index e475af34cf..478909d3bb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,6 +13,7 @@ addons:
- rpcgen
- xz
- yajl
+ - glib
matrix:
include:
diff --git a/configure.ac b/configure.ac
index f6bf4fb60a..9b4e6fdd6d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -311,6 +311,7 @@ LIBVIRT_CHECK_DLOPEN
LIBVIRT_CHECK_FIREWALLD
LIBVIRT_CHECK_FIREWALLD_ZONE
LIBVIRT_CHECK_FUSE
+LIBVIRT_CHECK_GLIB
LIBVIRT_CHECK_GLUSTER
LIBVIRT_CHECK_GNUTLS
LIBVIRT_CHECK_HAL
@@ -1007,6 +1008,7 @@ LIBVIRT_RESULT_DLOPEN
LIBVIRT_RESULT_FIREWALLD
LIBVIRT_RESULT_FIREWALLD_ZONE
LIBVIRT_RESULT_FUSE
+LIBVIRT_RESULT_GLIB
LIBVIRT_RESULT_GLUSTER
LIBVIRT_RESULT_GNUTLS
LIBVIRT_RESULT_HAL
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 7f5183f341..dcad08cb5f 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -273,6 +273,7 @@ BuildRequires: systemd-units
%if %{with_libxl}
BuildRequires: xen-devel
%endif
+BuildRequires: glib2-devel >= 2.48
BuildRequires: libxml2-devel
BuildRequires: libxslt
BuildRequires: readline-devel
diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4
index 4f9eee121c..1dbe1abe27 100644
--- a/m4/virt-compile-warnings.m4
+++ b/m4/virt-compile-warnings.m4
@@ -67,6 +67,8 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
# > to handle the code effectively.
# Source:
https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
dontwarn="$dontwarn -Wdisabled-optimization"
+ # Various valid glib APIs/macros trigger this warning
+ dontwarn="$dontwarn -Wbad-function-cast"
# Broken in 6.0 and later
#
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69602
diff --git a/m4/virt-glib.m4 b/m4/virt-glib.m4
new file mode 100644
index 0000000000..5a5bc19660
--- /dev/null
+++ b/m4/virt-glib.m4
@@ -0,0 +1,36 @@
+dnl The glib.so library
+dnl
+dnl Copyright (C) 2016 Red Hat, Inc.
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Lesser General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2.1 of the License, or (at your option) any later version.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Lesser General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public
+dnl License along with this library. If not, see
+dnl <
http://www.gnu.org/licenses/>.
+dnl
+
+AC_DEFUN([LIBVIRT_ARG_GLIB], [
+ LIBVIRT_ARG_WITH([GLIB], [glib-2.0 location], [check])
+])
+
+AC_DEFUN([LIBVIRT_CHECK_GLIB],[
+ GLIB_REQUIRED=2.48.0
+
+ LIBVIRT_CHECK_PKG([GLIB], [glib-2.0], [$GLIB_REQUIRED])
+
+ if test "$with_glib" = "no" ; then
+ AC_MSG_ERROR([glib-2.0 >= $GLIB_REQUIRED is required for libvirt])
+ fi
+])
+
+AC_DEFUN([LIBVIRT_RESULT_GLIB], [
+ LIBVIRT_RESULT_LIB([GLIB])
+])
diff --git a/mingw-libvirt.spec.in b/mingw-libvirt.spec.in
index a20c4b7d74..c29f3eeed2 100644
--- a/mingw-libvirt.spec.in
+++ b/mingw-libvirt.spec.in
@@ -52,6 +52,8 @@ BuildRequires: mingw32-gcc
BuildRequires: mingw64-gcc
BuildRequires: mingw32-binutils
BuildRequires: mingw64-binutils
+BuildRequires: mingw32-glib2 >= 2.48
+BuildRequires: mingw64-glib2 >= 2.48
BuildRequires: mingw32-libgpg-error
BuildRequires: mingw64-libgpg-error
BuildRequires: mingw32-libgcrypt
--
2.21.0