diff --git a/Makefile.am b/Makefile.am index 6edaff5b907cde8abc480bcad9f9292dd5738ccf..cedd207fcbbc373876587c10f3a224ab045c722b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -416,8 +416,8 @@ lib/_autoconf.py: Makefile stamp-directories echo "FILE_STORAGE_DIR = '$(FILE_STORAGE_DIR)'"; \ echo "IALLOCATOR_SEARCH_PATH = [$(IALLOCATOR_SEARCH_PATH)]"; \ echo "KVM_PATH = '$(KVM_PATH)'"; \ - echo "SOCAT_PATH = '$(SOCAT_PATH)'"; \ - echo "SOCAT_ESCAPE = '$(SOCAT_ESCAPE)'"; \ + echo "SOCAT_PATH = '$(SOCAT)'"; \ + echo "SOCAT_USE_ESCAPE = $(SOCAT_USE_ESCAPE)"; \ echo "LVM_STRIPECOUNT = $(LVM_STRIPECOUNT)"; \ echo "TOOLSDIR = '$(toolsdir)'"; \ echo "GNT_SCRIPTS = [$(foreach i,$(notdir $(gnt_scripts)),'$(i)',)]"; \ diff --git a/configure.ac b/configure.ac index 06a24a99cee7175ead25cea3f2363f0f52eb205c..b47bc6c072ad245df210728f4197076e94ed96c7 100644 --- a/configure.ac +++ b/configure.ac @@ -108,21 +108,6 @@ AC_ARG_WITH([kvm-path], [kvm_path="/usr/bin/kvm"]) AC_SUBST(KVM_PATH, $kvm_path) -# --with-socat-path=... -AC_ARG_WITH([socat-path], - [AS_HELP_STRING([--with-socat-path=PATH], - [absolute path to the socat binary] - [ (default is to let configure search for it)] - )], - [SOCAT="$withval"], - []) - -AC_ARG_WITH([socat-escape], - [AS_HELP_STRING([--with-socat-escape], - [enable escape functionality found in newer socat])], - [], - [check_socat_escape=yes]) - # ---with-lvm-stripecount=... AC_ARG_WITH([lvm-stripecount], [AS_HELP_STRING([--with-lvm-stripecount=NUM], @@ -168,32 +153,37 @@ then AC_MSG_WARN([dot (from the graphviz suite) not found, documentation rebuild not possible]) fi -if test -z "$SOCAT" -a -n "$check_socat_escape" -then -AC_CACHE_CHECK([for socat with the escape feature], [ac_cv_path_SOCAT], - [AC_PATH_PROGS_FEATURE_CHECK(SOCAT, [socat], - [[$ac_path_SOCAT -hh | grep -q escape \ - && ac_cv_path_SOCAT=$ac_path_SOCAT \ - SOCAT=$ac_cv_path_SOCAT \ - with_socat_escape=yes ac_path_SOCAT_found=:]], - [AC_MSG_WARN([no escape feature found])])]) -fi - +# Check for socat +AC_ARG_VAR(SOCAT, [socat path]) +AC_PATH_PROG(SOCAT, [socat], []) if test -z "$SOCAT" then -AC_CACHE_CHECK([for socat], [ac_cv_path_SOCAT], - [AC_PATH_PROGS_FEATURE_CHECK(SOCAT, [socat], - [[ac_cv_path_SOCAT=$ac_path_SOCAT \ - SOCAT=$ac_cv_path_SOCAT ac_path_SOCAT_found=:]], - [AC_MSG_ERROR([socat not found])])]) + AC_MSG_ERROR([socat not found]) fi -AC_SUBST([SOCAT_PATH], [$SOCAT]) -if test "x$with_socat_escape" = xyes +SOCAT_USE_ESCAPE= +AC_ARG_ENABLE([socat-escape], + [AS_HELP_STRING([--enable-socat-escape], + [use escape functionality available in socat >= 1.7 (default: detect + automatically)])], + [[if test "$enableval" = yes; then + SOCAT_USE_ESCAPE=True + else + SOCAT_USE_ESCAPE=False + fi + ]]) + +if test -z "$SOCAT_USE_ESCAPE" then - AC_SUBST([SOCAT_ESCAPE], [1]) + if $SOCAT -hh | grep -w -q escape; then + SOCAT_USE_ESCAPE=True + else + SOCAT_USE_ESCAPE=False + fi fi +AC_SUBST(SOCAT_USE_ESCAPE) + # Check for Python AM_PATH_PYTHON(2.4) diff --git a/lib/constants.py b/lib/constants.py index b3a20a9ab8319c798a8ec74f54e860b77df55b00..0f035ef79eaf4d9564095637e44869ad0df340d0 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -164,7 +164,7 @@ XEN_INITRD = _autoconf.XEN_INITRD KVM_PATH = _autoconf.KVM_PATH SOCAT_PATH = _autoconf.SOCAT_PATH -SOCAT_ESCAPE = _autoconf.SOCAT_ESCAPE +SOCAT_USE_ESCAPE = _autoconf.SOCAT_USE_ESCAPE SOCAT_ESCAPE_CODE = "0x1d" VALUE_DEFAULT = "default" diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py index 262a6feaf70624ac6286687698a954443315d78d..a153d36844bf872281f862d070d84986125be5fe 100644 --- a/lib/hypervisor/hv_kvm.py +++ b/lib/hypervisor/hv_kvm.py @@ -123,7 +123,7 @@ class KVMHypervisor(hv_base.BaseHypervisor): If we have a new-enough socat we can use raw mode with an escape character. """ - if constants.SOCAT_ESCAPE: + if constants.SOCAT_USE_ESCAPE: return "raw,echo=0,escape=%s" % constants.SOCAT_ESCAPE_CODE else: return "echo=0,icanon=0"