From 37fc2cf5ba8919cef407199ee540aad4b1a9a2b6 Mon Sep 17 00:00:00 2001
From: Guido Trotter <ultrotter@google.com>
Date: Sat, 31 Oct 2009 17:38:08 -0400
Subject: [PATCH] configure: check for socat and its escape feature

Currently we use a static value for the socat path, or we trust the
user-provided one. With this patch we still trust any user provided
value, but if none is passed we check for socat on the machine we're
being configured on. This allows us also to check if we can or cannot
use the escape= feature in socat.

If the user has forced the path in, he can also pass --with-socat-escape
in order to force the escape functionality to be used, even if a check
is not done.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 Makefile.am  |  1 +
 configure.ac | 39 +++++++++++++++++++++++++++++++++++----
 2 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index cbfa69c1c..87af4e64e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -411,6 +411,7 @@ lib/_autoconf.py: Makefile stamp-directories
 	  echo "KVM_PATH = '$(KVM_PATH)'"; \
 	  echo "KVM_MIGRATION_PORT = '$(KVM_MIGRATION_PORT)'"; \
 	  echo "SOCAT_PATH = '$(SOCAT_PATH)'"; \
+	  echo "SOCAT_ESCAPE = '$(SOCAT_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 3ba28cd9f..c681e034b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -122,11 +122,16 @@ AC_SUBST(KVM_MIGRATION_PORT, $kvm_migration_port)
 AC_ARG_WITH([socat-path],
   [AS_HELP_STRING([--with-socat-path=PATH],
     [absolute path to the socat binary]
-    [ (default is /usr/bin/socat)]
+    [ (default is to let configure search for it)]
   )],
-  [socat_path="$withval"],
-  [socat_path="/usr/bin/socat"])
-AC_SUBST(SOCAT_PATH, $socat_path)
+  [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],
@@ -173,6 +178,32 @@ 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
+
+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])])])
+fi
+
+AC_SUBST([SOCAT_PATH], [$SOCAT])
+if test "x$with_socat_escape" = xyes
+then
+  AC_SUBST([SOCAT_ESCAPE], [1])
+fi
+
 # Check for Python
 AM_PATH_PYTHON(2.4)
 
-- 
GitLab