package/ola: fix check for google.protobuf
authorYann E. MORIN <yann.morin.1998@free.fr>
Tue, 14 Jan 2014 21:36:05 +0000 (22:36 +0100)
committerPeter Korsgaard <peter@korsgaard.com>
Tue, 14 Jan 2014 22:36:59 +0000 (23:36 +0100)
Fix the google.protobuf check in an upstreamable way.

As suggested by Arnout, use an autoconf ac_cv_have_* variable
so we can pass it on the command line. This is generic behaviour
for a lot of autoconf internals, so it makes sense to do it this
way.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Arnout Vandecappelle <arnout@mind.be>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/ola/ola-0002-fix-check-for-google.protobuf.patch [deleted file]
package/ola/ola-0002-move-python-sub-check-to-configure.ac.patch [new file with mode: 0644]
package/ola/ola-0003-fix-check-for-python-module-for-cross-compilation.patch [new file with mode: 0644]
package/ola/ola.mk

diff --git a/package/ola/ola-0002-fix-check-for-google.protobuf.patch b/package/ola/ola-0002-fix-check-for-google.protobuf.patch
deleted file mode 100644 (file)
index f0bc465..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-configure: do not check for google.protobuf
-
-The check for google.protobuf is inherently flawed for cross-compilation,
-as it uses the host Python to check for target modules.
-
-In Buildroot, our dependencies ensures that google.protobuf is present
-by the time we configure and build ola, so we can just skip the test
-altogether.
-
-We don't need to fake the result of the test: it is used nowhere; the
-test is only here to fail or succeed.
-
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-
-diff -durN ola-0.8.32.orig/configure.ac ola-0.8.32/configure.ac
---- ola-0.8.32.orig/configure.ac       2013-09-29 19:46:48.000000000 +0200
-+++ ola-0.8.32/configure.ac    2014-01-09 19:43:55.342044336 +0100
-@@ -530,7 +530,11 @@
- if test "${enable_python_libs}" = "yes"; then
-  AM_PATH_PYTHON(2.6)
-- AX_PYTHON_MODULE("google.protobuf", "fatal")
-+# AX_PYTHON_MODULE is inherently broken for cross-compilation
-+# since it executes the host Python to check for target modules.
-+# In Buildroot, we do not need to check for google.protobuf,
-+# since our dependencies ensure it is available.
-+# AX_PYTHON_MODULE("google.protobuf", "fatal")
- fi
- # Maybe build the logic sniffer tools
diff --git a/package/ola/ola-0002-move-python-sub-check-to-configure.ac.patch b/package/ola/ola-0002-move-python-sub-check-to-configure.ac.patch
new file mode 100644 (file)
index 0000000..1a79035
--- /dev/null
@@ -0,0 +1,48 @@
+commit 673a7602a6bf7a6aa8a8461ebd9362d59f6e21df
+Author: Yann E. MORIN <yann.morin.1998@free.fr>
+Date:   Tue Jan 14 21:37:51 2014 +0100
+
+    configure: move python sub-check to configure.ac
+    
+    We do not want to re-test the python name for each Python module
+    we want to check for.
+    
+    Even if we only check for one Python module right now, this is
+    good practice overall.
+    
+    Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+---
+Sent upstream, awaiting for response...
+
+diff --git a/config/ax_python_module.m4 b/config/ax_python_module.m4
+index bd70a06..96dd1ab 100644
+--- a/config/ax_python_module.m4
++++ b/config/ax_python_module.m4
+@@ -25,11 +25,6 @@
+ AU_ALIAS([AC_PYTHON_MODULE], [AX_PYTHON_MODULE])
+ AC_DEFUN([AX_PYTHON_MODULE],[
+-    if test -z $PYTHON;
+-    then
+-        PYTHON="python"
+-    fi
+-    PYTHON_NAME=`basename $PYTHON`
+     AC_MSG_CHECKING($PYTHON_NAME module: $1)
+       $PYTHON -c "import $1" 2>/dev/null
+       if test $? -eq 0;
+diff --git a/configure.ac b/configure.ac
+index 1efedf1..5f6f604 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -530,6 +530,10 @@ AM_CONDITIONAL(INSTALL_RDM_TESTS, test "${enable_rdm_tests}" = "yes")
+ if test "${enable_python_libs}" = "yes"; then
+  AM_PATH_PYTHON(2.6)
++ if test -z $PYTHON; then
++  PYTHON="python"
++ fi
++ PYTHON_NAME=`basename $PYTHON`
+  AX_PYTHON_MODULE("google.protobuf", "fatal")
+ fi
diff --git a/package/ola/ola-0003-fix-check-for-python-module-for-cross-compilation.patch b/package/ola/ola-0003-fix-check-for-python-module-for-cross-compilation.patch
new file mode 100644 (file)
index 0000000..436974d
--- /dev/null
@@ -0,0 +1,81 @@
+commit ea985068c2d699ffb5b353de090f7ded713c08a7
+Author: Yann E. MORIN <yann.morin.1998@free.fr>
+Date:   Tue Jan 14 21:38:27 2014 +0100
+
+    configure: add option for user to override checks for Python modules
+    
+    The check for google.protobuf is inherently flawed for cross-compilation,
+    as it uses the host Python to check for target modules.
+    
+    In this case, it is not possible to check for a Pyhon modules altogether,
+    and we need to rely on the user to properly tell us whether we do or do
+    not have google.protobuf.
+    
+    This is done by adding am autoconf cache variable:
+        ac_cv_have_pymod_google_protobuf
+    
+    which can be set to:
+      - yes     : force the test to be true
+      - no      : force the test to be false
+      - (empty) : let the test decide
+    
+    This is then used in AX_PYTHON_MODULE to override the test.
+    
+    Currently, only the google.protobuf Python module is checked for, but
+    the same could be done later on of other Python modules that may be
+    added in the future, of course.
+    
+    Fixes configure-errors like:
+        http://autobuild.buildroot.net/results/e63/e634d5f0cee3967caffaa6e7ada8c0968e3eff63/build-end.log
+    
+    Also fixes some under-quotation in the python module check.
+    
+    Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+---
+Sent upstream, awaiting for response...
+
+diff --git a/config/ax_python_module.m4 b/config/ax_python_module.m4
+index 96dd1ab..2910e88 100644
+--- a/config/ax_python_module.m4
++++ b/config/ax_python_module.m4
+@@ -25,20 +25,17 @@
+ AU_ALIAS([AC_PYTHON_MODULE], [AX_PYTHON_MODULE])
+ AC_DEFUN([AX_PYTHON_MODULE],[
+-    AC_MSG_CHECKING($PYTHON_NAME module: $1)
+       $PYTHON -c "import $1" 2>/dev/null
+       if test $? -eq 0;
+       then
+-              AC_MSG_RESULT(yes)
+-              eval AS_TR_CPP(HAVE_PYMOD_$1)=yes
++              eval AS_TR_CPP([HAVE_PYMOD_$1])=yes
+       else
+-              AC_MSG_RESULT(no)
+-              eval AS_TR_CPP(HAVE_PYMOD_$1)=no
++              eval AS_TR_CPP([HAVE_PYMOD_$1])=no
+               #
+               if test -n "$2"
+               then
+-                      AC_MSG_ERROR(failed to find required module $1)
+-                      exit 1
++                      AC_MSG_ERROR([failed to find required module $1])
+               fi
+       fi
++      AC_MSG_RESULT([AS_TR_CPP([HAVE_PYMOD_$1])])
+ ])
+diff --git a/configure.ac b/configure.ac
+index 5f6f604..5994d06 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -534,7 +534,9 @@ if test "${enable_python_libs}" = "yes"; then
+   PYTHON="python"
+  fi
+  PYTHON_NAME=`basename $PYTHON`
+- AX_PYTHON_MODULE("google.protobuf", "fatal")
++ AC_CACHE_CHECK([$PYTHON_NAME module: google.protobuf],
++    [ac_cv_have_pymod_google_protobuf],
++    [AX_PYTHON_MODULE([google.protobuf], [fatal])])
+ fi
+ # Maybe build the logic sniffer tools
index 843ec0b42ed8d93d1a4c7df972827023acc5fbaa..a503bc342577f2ed9a23eec49b7c848e8132f638 100644 (file)
@@ -18,6 +18,7 @@ OLA_AUTORECONF = YES
 OLA_DEPENDENCIES = protobuf util-linux host-bison host-flex
 
 OLA_CONF_OPT = \
+       ac_cv_have_pymod_google_protobuf=yes \
        --disable-gcov \
        --disable-tcmalloc \
        --disable-unittests \