When --with-system-qemu is used, it is possible that we cannot find qemu-system-i386 in LIBEXEC_BIN, which can cause error in xencommons init script and xen-qemu-dom0-disk-backend.service systemd service.
Signed-off-by: Ting-Wei Lan <lant...@gmail.com> --- Changed since v1: * Don't repeat qemu-system-i386 everywhere * Use $qemu_xen_path in both init scripts and libxl_dm.c * systemd requires executable path to be absolute so it is handled differently tools/configure | 21 ++++++++++++++++----- tools/configure.ac | 19 ++++++++++++++----- tools/hotplug/Linux/init.d/sysconfig.xencommons.in | 2 +- tools/hotplug/Linux/init.d/xencommons.in | 2 +- .../systemd/xen-qemu-dom0-disk-backend.service.in | 2 +- tools/libxl/libxl_dm.c | 4 ---- 6 files changed, 33 insertions(+), 17 deletions(-) diff --git a/tools/configure b/tools/configure index 2fa7426..c0b3827 100755 --- a/tools/configure +++ b/tools/configure @@ -695,6 +695,8 @@ PREPEND_INCLUDES EXTRA_QEMUU_CONFIGURE_ARGS ovmf_path seabios_path +qemu_xen_systemd +qemu_xen_path qemu_xen rombios qemu_traditional @@ -4142,9 +4144,14 @@ fi if test "${with_system_qemu+set}" = set; then : withval=$with_system_qemu; case $withval in - yes) qemu_xen=n ; qemu_xen_path=qemu ;; - no) qemu_xen=y ; qemu_xen_path= ;; - *) qemu_xen=n ; qemu_xen_path=$withval ;; + yes) + qemu_xen=n ; qemu_xen_path="qemu" + qemu_xen_systemd="/usr/bin/env $qemu_xen_path" ;; + no) + qemu_xen=y ;; + *) + qemu_xen=n ; qemu_xen_path="$withval" ; + qemu_xen_systemd="$qemu_xen_path" ;; esac else @@ -4159,15 +4166,19 @@ else fi -if test "x$qemu_xen" = "xn"; then : +if test "x$qemu_xen" = "xy"; then : + + qemu_xen_path="$LIBEXEC_BIN/qemu-system-i386" + qemu_xen_systemd="$qemu_xen_path" +fi cat >>confdefs.h <<_ACEOF #define QEMU_XEN_PATH "$qemu_xen_path" _ACEOF -fi + diff --git a/tools/configure.ac b/tools/configure.ac index b7f1513..0209c6b 100644 --- a/tools/configure.ac +++ b/tools/configure.ac @@ -183,9 +183,14 @@ AC_ARG_WITH([system-qemu], [Use system supplied qemu PATH or qemu (taken from $PATH) as qemu-xen device model instead of building and installing our own version]),[ case $withval in - yes) qemu_xen=n ; qemu_xen_path=qemu ;; - no) qemu_xen=y ; qemu_xen_path= ;; - *) qemu_xen=n ; qemu_xen_path=$withval ;; + yes) + qemu_xen=n ; qemu_xen_path="qemu" + qemu_xen_systemd="/usr/bin/env $qemu_xen_path" ;; + no) + qemu_xen=y ;; + *) + qemu_xen=n ; qemu_xen_path="$withval" ; + qemu_xen_systemd="$qemu_xen_path" ;; esac ],[ case "$host_cpu" in @@ -196,10 +201,14 @@ AC_ARG_WITH([system-qemu], *) qemu_xen=n;; esac ]) -AS_IF([test "x$qemu_xen" = "xn"], [ - AC_DEFINE_UNQUOTED([QEMU_XEN_PATH], ["$qemu_xen_path"], [Qemu Xen path]) +AS_IF([test "x$qemu_xen" = "xy"], [ + qemu_xen_path="$LIBEXEC_BIN/qemu-system-i386" + qemu_xen_systemd="$qemu_xen_path" ]) +AC_DEFINE_UNQUOTED([QEMU_XEN_PATH], ["$qemu_xen_path"], [Qemu Xen path]) AC_SUBST(qemu_xen) +AC_SUBST(qemu_xen_path) +AC_SUBST(qemu_xen_systemd) AC_ARG_WITH([system-seabios], AS_HELP_STRING([--with-system-seabios@<:@=PATH@:>@], diff --git a/tools/hotplug/Linux/init.d/sysconfig.xencommons.in b/tools/hotplug/Linux/init.d/sysconfig.xencommons.in index c12fc8a..78a2313 100644 --- a/tools/hotplug/Linux/init.d/sysconfig.xencommons.in +++ b/tools/hotplug/Linux/init.d/sysconfig.xencommons.in @@ -39,4 +39,4 @@ #XENBACKENDD_DEBUG=[yes|on|1] # qemu path -#QEMU_XEN=@LIBEXEC_BIN@/qemu-system-i386 +#QEMU_XEN=@qemu_xen_path@ diff --git a/tools/hotplug/Linux/init.d/xencommons.in b/tools/hotplug/Linux/init.d/xencommons.in index a1095c2..18cbf1c 100644 --- a/tools/hotplug/Linux/init.d/xencommons.in +++ b/tools/hotplug/Linux/init.d/xencommons.in @@ -98,7 +98,7 @@ do_start () { test -z "$XENCONSOLED_TRACE" || XENCONSOLED_ARGS=" --log=$XENCONSOLED_TRACE" ${SBINDIR}/xenconsoled --pid-file=$XENCONSOLED_PIDFILE $XENCONSOLED_ARGS echo Starting QEMU as disk backend for dom0 - test -z "$QEMU_XEN" && QEMU_XEN="${LIBEXEC_BIN}/qemu-system-i386" + test -z "$QEMU_XEN" && QEMU_XEN="@qemu_xen_path@" $QEMU_XEN -xen-domid 0 -xen-attach -name dom0 -nographic -M xenpv -daemonize \ -monitor /dev/null -serial /dev/null -parallel /dev/null \ -pidfile $QEMU_PIDFILE diff --git a/tools/hotplug/Linux/systemd/xen-qemu-dom0-disk-backend.service.in b/tools/hotplug/Linux/systemd/xen-qemu-dom0-disk-backend.service.in index 274cec0..acf61a8 100644 --- a/tools/hotplug/Linux/systemd/xen-qemu-dom0-disk-backend.service.in +++ b/tools/hotplug/Linux/systemd/xen-qemu-dom0-disk-backend.service.in @@ -11,7 +11,7 @@ Type=simple PIDFile=@XEN_RUN_DIR@/qemu-dom0.pid ExecStartPre=/bin/grep -q control_d /proc/xen/capabilities ExecStartPre=/bin/mkdir -p @XEN_RUN_DIR@ -ExecStart=@LIBEXEC_BIN@/qemu-system-i386 -xen-domid 0 \ +ExecStart=@qemu_xen_systemd@ -xen-domid 0 \ -xen-attach -name dom0 -nographic -M xenpv -daemonize \ -monitor /dev/null -serial /dev/null -parallel /dev/null \ -pidfile @XEN_RUN_DIR@/qemu-dom0.pid diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index 094a133..5ebbce0 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -36,11 +36,7 @@ const char *libxl__device_model_savefile(libxl__gc *gc, uint32_t domid) static const char *qemu_xen_path(libxl__gc *gc) { -#ifdef QEMU_XEN_PATH return QEMU_XEN_PATH; -#else - return libxl__abs_path(gc, "qemu-system-i386", libxl__private_bindir_path()); -#endif } static int libxl__create_qemu_logfile(libxl__gc *gc, char *name) -- 2.4.3 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel