From: Denis Laxalde <denis.laxalde@logilab.fr>
Date: Mon, 24 Mar 2014 15:00:22 +0100
Subject: Fix NumPy version comparison

It did not work for, e.g., 1.8.1~rc1.
---
 waftools/python_cfg.py |   19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/waftools/python_cfg.py b/waftools/python_cfg.py
index 20f301e..0c0077a 100644
--- a/waftools/python_cfg.py
+++ b/waftools/python_cfg.py
@@ -78,20 +78,19 @@ def check_numpy_version(self, minver=None):
     """Check if the numpy module is found matching a given minimum version.
     minver should be a tuple, eg. to check for numpy >= 1.4 pass (1,4,0) as minver.
     """
+    from distutils.version import LooseVersion
     if not self.env['PYTHON']:
         self.fatal('load python tool first')
-    assert minver is None or isinstance(minver, tuple)
-    cmd = self.env['PYTHON'] + ['-c', 'import numpy; print(numpy.__version__)']
-    res = self.cmd_and_log(cmd)
-    npyver_tuple = tuple(map(int, res.strip().split('.')))
-    result = minver is None or npyver_tuple >= minver
-
-    npyver = '.'.join(map(str, npyver_tuple))
     if minver is None:
         self.msg('Checking for numpy version', npyver)
-    else:
-        minver_str = '.'.join(map(str, minver))
-        self.msg('Checking for numpy version', npyver_tuple, ">= %s" % (minver_str,) and 'GREEN' or 'YELLOW')
+        return
+    assert isinstance(minver, tuple)
+    cmd = self.env['PYTHON'] + ['-c', 'import numpy; print(numpy.__version__)']
+    res = self.cmd_and_log(cmd)
+    npyver = res.strip()
+    minver_str = '.'.join(map(str, minver))
+    result = LooseVersion(npyver) >= LooseVersion(minver_str)
+    self.msg('Checking for numpy version', npyver, ">= %s" % (minver_str,) and 'GREEN' or 'YELLOW')
 
     if not result:
         self.fatal('The NumPy version is too old, expecting %r' % (minver,))
