[libvirt] [PATCH v3 01/19] build: probe for glib-2 library in configure

Daniel P. Berrangé berrange at redhat.com
Thu Oct 10 10:53:55 UTC 2019


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 at redhat.com>
Reviewed-by: Pavel Hrdina <phrdina at redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange at 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




More information about the libvir-list mailing list