[libvirt PATCH 086/351] meson: add LXC driver build option

Pavel Hrdina phrdina at redhat.com
Thu Jul 16 09:55:22 UTC 2020


Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
---
 configure.ac          |  8 -----
 m4/virt-driver-lxc.m4 | 74 -------------------------------------------
 meson.build           | 34 ++++++++++++++++++++
 meson_options.txt     |  1 +
 4 files changed, 35 insertions(+), 82 deletions(-)
 delete mode 100644 m4/virt-driver-lxc.m4

diff --git a/configure.ac b/configure.ac
index 4725050080f..3139b41a36a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -74,10 +74,6 @@ case $host in
 esac
 
 if test $with_linux = no; then
-    if test "x$with_lxc" != xyes
-    then
-        with_lxc=no
-    fi
     with_dtrace=no
     with_storage_scsi=no
 fi
@@ -90,7 +86,6 @@ AM_CONDITIONAL([WITH_MACOS], [test "$with_macos" = "yes"])
 # Stateful drivers are useful only when building the daemon.
 if test "$with_libvirtd" = "no" ; then
   with_qemu=no
-  with_lxc=no
   with_vbox=no
 fi
 
@@ -112,7 +107,6 @@ LIBVIRT_DRIVER_ARG_QEMU
 LIBVIRT_DRIVER_ARG_OPENVZ
 LIBVIRT_DRIVER_ARG_VMWARE
 LIBVIRT_DRIVER_ARG_VBOX
-LIBVIRT_DRIVER_ARG_LXC
 LIBVIRT_DRIVER_ARG_VZ
 LIBVIRT_DRIVER_ARG_TEST
 LIBVIRT_DRIVER_ARG_NETWORK
@@ -122,7 +116,6 @@ LIBVIRT_DRIVER_CHECK_QEMU
 LIBVIRT_DRIVER_CHECK_OPENVZ
 LIBVIRT_DRIVER_CHECK_VMWARE
 LIBVIRT_DRIVER_CHECK_VBOX
-LIBVIRT_DRIVER_CHECK_LXC
 LIBVIRT_DRIVER_CHECK_VZ
 LIBVIRT_DRIVER_CHECK_TEST
 LIBVIRT_DRIVER_CHECK_NETWORK
@@ -324,7 +317,6 @@ LIBVIRT_DRIVER_RESULT_QEMU
 LIBVIRT_DRIVER_RESULT_OPENVZ
 LIBVIRT_DRIVER_RESULT_VMWARE
 LIBVIRT_DRIVER_RESULT_VBOX
-LIBVIRT_DRIVER_RESULT_LXC
 LIBVIRT_DRIVER_RESULT_VZ
 LIBVIRT_DRIVER_RESULT_TEST
 LIBVIRT_DRIVER_RESULT_NETWORK
diff --git a/m4/virt-driver-lxc.m4 b/m4/virt-driver-lxc.m4
deleted file mode 100644
index d2951b596a6..00000000000
--- a/m4/virt-driver-lxc.m4
+++ /dev/null
@@ -1,74 +0,0 @@
-dnl The LXC driver
-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_DRIVER_ARG_LXC], [
-  LIBVIRT_ARG_WITH_FEATURE([LXC], [Linux Container], [check])
-])
-
-AC_DEFUN([LIBVIRT_DRIVER_CHECK_LXC], [
-  if test "$with_libvirtd" = "no" ; then
-    with_lxc=no
-  fi
-
-  if test "$with_lxc" = "yes" || test "$with_lxc" = "check"; then
-    AC_LINK_IFELSE([
-      AC_LANG_PROGRAM([[
-        #include <sched.h>
-        #include <linux/loop.h>
-        #include <sys/epoll.h>
-      ]], [[
-        unshare(!(LO_FLAGS_AUTOCLEAR + EPOLL_CLOEXEC));
-      ]])
-    ], [
-      with_lxc=yes
-      AC_DEFINE([HAVE_DECL_LO_FLAGS_AUTOCLEAR], [1],
-        [Define to 1 if you have the declaration of `LO_FLAGS_AUTOCLEAR',
-         and to 0 if you don't.])
-    ], [
-      if test "$with_lxc" = "check"; then
-        with_lxc=no
-        AC_MSG_NOTICE([Required kernel features were not found, disabling LXC])
-      else
-        AC_MSG_ERROR([Required kernel features for LXC were not found])
-      fi
-    ])
-
-    AC_LINK_IFELSE([
-      AC_LANG_PROGRAM([[
-        #include <sched.h>
-        #include <linux/loop.h>
-        #include <sys/epoll.h>
-      ]], [[
-        unshare(!(LOOP_CTL_GET_FREE));
-      ]])
-    ], [
-      AC_DEFINE([HAVE_DECL_LOOP_CTL_GET_FREE], [1],
-        [Define to 1 if you have the declaration of `LOOP_CTL_GET_FREE',
-         and to 0 if you don't.])
-    ])
-  fi
-  if test "$with_lxc" = "yes" ; then
-    AC_DEFINE_UNQUOTED([WITH_LXC], 1, [whether LXC driver is enabled])
-  fi
-  AM_CONDITIONAL([WITH_LXC], [test "$with_lxc" = "yes"])
-])
-
-AC_DEFUN([LIBVIRT_DRIVER_RESULT_LXC], [
-  LIBVIRT_RESULT([LXC], [$with_lxc])
-])
diff --git a/meson.build b/meson.build
index 813da0ff79e..2ed93e857d0 100644
--- a/meson.build
+++ b/meson.build
@@ -1650,6 +1650,39 @@ elif get_option('driver_libxl').enabled()
   error('libvirtd is required for libxenlight')
 endif
 
+if not get_option('driver_lxc').disabled() and host_machine.system() == 'linux' and conf.has('WITH_LIBVIRTD')
+  lxc_support_code = '''
+#include <sched.h>
+#include <linux/loop.h>
+#include <sys/epoll.h>
+
+void main(void) {
+    unshare(!(LO_FLAGS_AUTOCLEAR + EPOLL_CLOEXEC));
+}
+  '''
+  if cc.compiles(lxc_support_code, name: 'lxc support', args: '-D_GNU_SOURCE')
+    conf.set('WITH_LXC', 1)
+    conf.set('HAVE_DECL_LO_FLAGS_AUTOCLEAR', 1)
+  elif get_option('driver_lxc').enabled()
+    error('Required kernel features for LXC were not found')
+  endif
+
+  lxc_get_free_code = '''
+#include <sched.h>
+#include <linux/loop.h>
+#include <sys/epoll.h>
+
+void main(void) {
+    unshare(!(LOOP_CTL_GET_FREE));
+}
+  '''
+  if cc.compiles(lxc_get_free_code)
+    conf.set('HAVE_DECL_LOOP_CTL_GET_FREE', 1)
+  endif
+elif get_option('driver_lxc').enabled()
+  error('linux and remote_driver are required for LXC')
+endif
+
 
 # define top include directory
 
@@ -1671,6 +1704,7 @@ configure_file(output: 'meson-config.h', configuration: conf)
 
 driver_summary = {
   'libxl': conf.has('WITH_LIBXL'),
+  'LXC': conf.has('WITH_LXC'),
   'ESX': conf.has('WITH_ESX'),
   'Hyper-V': conf.has('WITH_HYPERV'),
   'Bhyve': conf.has('WITH_BHYVE'),
diff --git a/meson_options.txt b/meson_options.txt
index 5329fd4cd05..ccc0a209378 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -52,5 +52,6 @@ option('driver_esx', type: 'feature', value: 'enabled', description: 'esx driver
 option('driver_hyperv', type: 'feature', value: 'auto', description: 'Hyper-V driver')
 option('driver_libvirtd', type: 'feature', value: 'auto', description: 'libvirtd driver')
 option('driver_libxl', type: 'feature', value: 'auto', description: 'libxenlight driver')
+option('driver_lxc', type: 'feature', value: 'auto', description: 'Linux Container driver')
 option('driver_remote', type: 'feature', value: 'enabled', description: 'remote driver')
 option('remote_default_mode', type: 'combo', choices: ['legacy', 'direct'], value: 'legacy', description: 'remote driver default mode')
-- 
2.26.2




More information about the libvir-list mailing list