From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Subject: [PATCH v4 12/15] autoconf: xen: peg the xenstored preference onto the top level config Date: Tue, 29 Apr 2014 18:12:05 -0700 Message-ID: <1398820328-15132-13-git-send-email-mcgrof@do-not-panic.com> References: <1398820328-15132-1-git-send-email-mcgrof@do-not-panic.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta4.messagelabs.com ([85.158.143.247]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1WfJ5H-0000fU-0F for xen-devel@lists.xenproject.org; Wed, 30 Apr 2014 01:13:15 +0000 Received: by mail-pa0-f51.google.com with SMTP id fb1so1081673pad.38 for ; Tue, 29 Apr 2014 18:13:10 -0700 (PDT) In-Reply-To: <1398820328-15132-1-git-send-email-mcgrof@do-not-panic.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Keir Fraser , Ian Campbell , Tim Deegan , "Luis R. Rodriguez" , Ian Jackson , Jan Beulich List-Id: xen-devel@lists.xenproject.org From: "Luis R. Rodriguez" This lets us easily look what xenstored we have on the build system and use it with autoconf for file generation. Although you can now specify your preference to disable ocaml tools the we can only make a general build flag available if coming from the parent configure.ac You can only use: ./configure --with-xenstored=cxenstored ./configure --with-xenstored=oxenstored And by default oxenstored will be used, but only if you have ocaml dependencies. Enabling cxenstored will then disable ocamltools. This lets us simplify the legacy init script a bit but it should help us simplify our systemd service files even more. Cc: Ian Campbell Cc: Ian Jackson Cc: Jan Beulich Cc: Keir Fraser Cc: Tim Deegan Signed-off-by: Luis R. Rodriguez --- config/Toplevel.mk.in | 3 ++ config/xen-environment-header.in | 3 ++ config/xen-environment-scripts.in | 3 ++ configure.ac | 1 + m4/expand_config.m4 | 61 +++++++++++++++++++++++++++++++++++ stubdom/configure.ac | 1 + tools/configure.ac | 11 +++++++ tools/hotplug/Linux/init.d/xencommons | 6 ---- 8 files changed, 83 insertions(+), 6 deletions(-) diff --git a/config/Toplevel.mk.in b/config/Toplevel.mk.in index fc2754c..bea9d96 100644 --- a/config/Toplevel.mk.in +++ b/config/Toplevel.mk.in @@ -23,3 +23,6 @@ XENFIRMWAREDIR := @XENFIRMWAREDIR@ XEN_CONFIG_DIR := @XEN_CONFIG_DIR@ XEN_SCRIPT_DIR := @XEN_SCRIPT_DIR@ + +XENSTORED := @XENSTORED@ +XENSTORE := @XENSTORE@ diff --git a/config/xen-environment-header.in b/config/xen-environment-header.in index 7dd7a53..3ee8e32 100644 --- a/config/xen-environment-header.in +++ b/config/xen-environment-header.in @@ -11,3 +11,6 @@ #define XEN_LOCK_DIR "@XEN_LOCK_DIR@" #define XEN_RUN_DIR "@XEN_RUN_DIR@" #define XEN_PAGING_DIR "@XEN_PAGING_DIR@" + +#define XENSTORED @XENSTORED@ +#define XENSTORE @XENSTORE@ diff --git a/config/xen-environment-scripts.in b/config/xen-environment-scripts.in index 9623231..a17e0e9 100644 --- a/config/xen-environment-scripts.in +++ b/config/xen-environment-scripts.in @@ -13,3 +13,6 @@ XEN_LOG_DIR="@XEN_LOG_DIR@" XEN_LIB_STORED="@XEN_LIB_STORED@" XEN_RUN_DIR="@XEN_RUN_DIR@" XEN_PAGING_DIR="@XEN_PAGING_DIR@" + +XENSTORED="@XENSTORED@" +XENSTORE="@XENSTORE@" diff --git a/configure.ac b/configure.ac index 3f26a39..f5faa4f 100644 --- a/configure.ac +++ b/configure.ac @@ -16,6 +16,7 @@ AC_CANONICAL_HOST m4_include([m4/features.m4]) m4_include([m4/subsystem.m4]) m4_include([m4/expand_config.m4]) +m4_include([m4/ocaml.m4]) AX_XEN_EXPAND_CONFIG() diff --git a/m4/expand_config.m4 b/m4/expand_config.m4 index 717fcd1..40d9707 100644 --- a/m4/expand_config.m4 +++ b/m4/expand_config.m4 @@ -58,4 +58,65 @@ AC_SUBST(XEN_RUN_DIR) XEN_PAGING_DIR=/var/lib/xen/xenpaging AC_SUBST(XEN_PAGING_DIR) + +AC_DEFUN([AX_XEN_OCAML_XENSTORE_CHECK], [ + AC_PROG_OCAML + AC_PROG_FINDLIB + AS_IF([test "x$OCAMLC" = "xno" || test "x$OCAMLFIND" = "xno"], [ + AC_MSG_ERROR([Missing ocaml dependencies for oxenstored, try installing ocaml ocaml-compiler-libs ocaml-runtime ocaml-findlib]) + ]) +]) + +AC_DEFUN([AX_XEN_OCAML_XENSTORE_DEFAULTS], [ + xenstore="oxenstored" + xenstored=$SBINDIR/oxenstored + AC_PROG_OCAML + AC_PROG_FINDLIB + AS_IF([test "x$OCAMLC" = "xno" || test "x$OCAMLFIND" = "xno"], [ + xenstore="cxenstored" + xenstored=$SBINDIR/xenstored + ]) +]) + +AS_IF([test "x$XENSTORE" = "x"], [ +AC_ARG_WITH([xenstored], + AS_HELP_STRING([--with-xenstored@<:@=cxenstored|cxenstored@:>@], + [This lets you choose which xenstore daemon you want, you have + two options: the original xenstored written in C (cxenstored) + or the newer and robust one written in Ocaml (oxenstored). + The oxenstored daemon is the default but will but can only + be used if you have ocaml library / build dependencies solved, + if you have not specified a preference and do not have ocaml + dependencies resolved we'll enable the C xenstored for you. If + you ask for oxenstored we'll complain until you resolve those + dependencies]), + [ + AS_IF([test "x$withval" = "xcxenstored"], [ + xenstore="cxenstored" + xenstored=$SBINDIR/xenstored + ]) + AS_IF([test "x$withval" = "xoxenstored"], [ + xenstore="oxenstored" + xenstored=$SBINDIR/oxenstored + AX_XEN_OCAML_XENSTORE_CHECK() + ]) + AS_IF([test "x$withval" != "xoxenstored" && test "x$withval" != "xcxenstored"], [ + AC_MSG_ERROR([Unsupported xenstored specified, supported types: oxenstored cxenstored]) + ]) + ], + [ + AX_XEN_OCAML_XENSTORE_DEFAULTS() + ]) +]) + +XENSTORE=$xenstore +AC_SUBST(XENSTORE) + +AS_IF([test "x$XENSTORED" = "x"], [ + XENSTORED=$xenstored +]) +AC_SUBST(XENSTORED) + +AS_IF([test "x$XENSTORE" != "xcxenstored" && test "x$XENSTORE" != "xoxenstored"], + [AC_MSG_ERROR([Invalid xenstore: $XENSTORE])]) ]) diff --git a/stubdom/configure.ac b/stubdom/configure.ac index d6b0fbf..3c30004 100644 --- a/stubdom/configure.ac +++ b/stubdom/configure.ac @@ -17,6 +17,7 @@ m4_include([../m4/path_or_fail.m4]) m4_include([../m4/depends.m4]) m4_include([../m4/fetcher.m4]) m4_include([../m4/expand_config.m4]) +m4_include([../m4/ocaml.m4]) AX_XEN_EXPAND_CONFIG() diff --git a/tools/configure.ac b/tools/configure.ac index c7674a0..ac984a3 100644 --- a/tools/configure.ac +++ b/tools/configure.ac @@ -152,6 +152,17 @@ AC_PROG_INSTALL AC_PATH_PROG([BISON], [bison]) AC_PATH_PROG([FLEX], [flex]) AX_PATH_PROG_OR_FAIL([PERL], [perl]) +AS_IF([test "x$xapi" = "xy"], [ + AX_PATH_PROG_OR_FAIL([CURL], [curl-config]) + AX_PATH_PROG_OR_FAIL([XML], [xml2-config]) +]) + +case $XENSTORE in + "cxenstored") ocamltools=n;; + "oxenstored") ocamltools=y;; + *) AC_MSG_ERROR([xenstore: $xenstore]);; +esac + AS_IF([test "x$ocamltools" = "xy"], [ AC_PROG_OCAML AC_PROG_FINDLIB diff --git a/tools/hotplug/Linux/init.d/xencommons b/tools/hotplug/Linux/init.d/xencommons index 7195413..cbe2903 100644 --- a/tools/hotplug/Linux/init.d/xencommons +++ b/tools/hotplug/Linux/init.d/xencommons @@ -80,12 +80,6 @@ do_start () { if [ -n "$XENSTORED" ] ; then echo -n Starting $XENSTORED... $XENSTORED --pid-file /var/run/xenstored.pid $XENSTORED_ARGS - elif [ -x ${SBINDIR}/oxenstored ] ; then - echo -n Starting oxenstored... - ${SBINDIR}/oxenstored --pid-file /var/run/xenstored.pid $XENSTORED_ARGS - elif [ -x ${SBINDIR}/xenstored ] ; then - echo -n Starting C xenstored... - ${SBINDIR}/xenstored --pid-file /var/run/xenstored.pid $XENSTORED_ARGS else echo "No xenstored found" exit 1 -- 1.9.0