Patchwork configure: Insist on a Python 2, not Python 3

login
register
mail settings
Submitter Peter Maydell
Date April 12, 2012, 6:09 p.m.
Message ID <1334254192-26204-1-git-send-email-peter.maydell@linaro.org>
Download mbox | patch
Permalink /patch/152155/
State New
Headers show

Comments

Peter Maydell - April 12, 2012, 6:09 p.m.
Our Python scripts require Python 2 and will fail on Python 3, eg:
  File "/home/petmay01/linaro/qemu-from-laptop/qemu/scripts/qapi-commands.py", line 378
      except getopt.GetoptError, err:
                               ^
  SyntaxError: invalid syntax

Add a check to configure that Python is not a Python 3, so we can
fail with a comprehensible error rather than an obscure one.

Reported-by: Boris Matti <swiftos@lavabit.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 configure |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
Stefan Hajnoczi - April 13, 2012, 9:01 a.m.
On Thu, Apr 12, 2012 at 07:09:52PM +0100, Peter Maydell wrote:
> Our Python scripts require Python 2 and will fail on Python 3, eg:
>   File "/home/petmay01/linaro/qemu-from-laptop/qemu/scripts/qapi-commands.py", line 378
>       except getopt.GetoptError, err:
>                                ^
>   SyntaxError: invalid syntax
> 
> Add a check to configure that Python is not a Python 3, so we can
> fail with a comprehensible error rather than an obscure one.
> 
> Reported-by: Boris Matti <swiftos@lavabit.com>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>  configure |    8 ++++++++
>  1 files changed, 8 insertions(+), 0 deletions(-)

Thanks, applied to the trivial patches tree:
https://github.com/stefanha/qemu/commits/trivial-patches

Stefan

Patch

diff --git a/configure b/configure
index e05f34b..1d5ab07 100755
--- a/configure
+++ b/configure
@@ -1242,6 +1242,14 @@  if ! has $python; then
   exit 1
 fi
 
+# Note that if the Python conditional here evaluates True we will exit
+# with status 1 which is a shell 'false' value.
+if ! "$python" -c 'import sys; sys.exit(sys.version_info[0] >= 3)'; then
+  echo "Python 2 required but '$python' is version 3 or better."
+  echo "Use --python=/path/to/python to specify a Python 2."
+  exit 1
+fi
+
 if test -z "$target_list" ; then
     target_list="$default_target_list"
 else