Fix EnsurePythonVersion's handling of alphanumeric version strings.
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 29 Aug 2003 04:39:46 +0000 (04:39 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 29 Aug 2003 04:39:46 +0000 (04:39 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@783 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/CHANGES.txt
src/engine/SCons/Script/SConscript.py
test/EnsureVersion.py

index 0b1b03ed8ec5c4f3ca8648e78cdd125757129109..3aad3c1d6ed9faf7ec8a3203ca479440900aeca7 100644 (file)
@@ -28,6 +28,8 @@ RELEASE X.XX - XXX
   - Support #include when there's no space before the opening quote
     or angle bracket.
 
+  - Accomodate alphanumeric version strings in EnsurePythonVersion().
+
 
 
 RELEASE 0.92 - Wed, 20 Aug 2003 03:45:28 -0500
index ee53a63ae78c77b5295030e58a48fd0cdbaef34d..0f9daa7799ce430536f192d29051fbee8807b6a9 100644 (file)
@@ -49,6 +49,7 @@ import SCons.Node.Alias
 
 import os
 import os.path
+import re
 import string
 import sys
 import traceback
@@ -453,11 +454,16 @@ class Options(SCons.Options.Options):
     def __init__(self, files=None, args=arguments):
         SCons.Options.Options.__init__(self, files, args)
 
-def CheckVersion(major,minor,version_string):
+def CheckVersion(major, minor, version_string):
     """Return 0 if 'major' and 'minor' are greater than the version
     in 'version_string', and 1 otherwise."""
-    version = string.split(string.split(version_string, ' ')[0], '.')
-    if major > int(version[0]) or (major == int(version[0]) and minor > int(version[1])):
+    try:
+        v_major, v_minor, v_micro, release, serial = sys.version_info
+    except AttributeError:
+        version = string.split(string.split(version_string, ' ')[0], '.')
+        v_major = int(version[0])
+        v_minor = int(re.match('\d+', version[1]).group())
+    if major > v_major or (major == v_major and minor > v_minor):
         return 0
     else:
         return 1
index d24e010e89c24edeeb123a7a8b40d05dde159dae..c4005e07da37464cdc86468792500c85545b6873 100644 (file)
@@ -76,4 +76,46 @@ sys.exit(0)
 
     test.run(status=2)
 
+test.write('SConstruct', """\
+import sys
+delattr(sys, 'version_info')
+sys.version = '2.3b1 (#0, Feb 24 2003, 19:13:11)\\n'
+EnsurePythonVersion(1,3)
+sys.exit(0)
+""")
+
+test.run()
+
+test.write('SConstruct', """\
+import sys
+delattr(sys, 'version_info')
+sys.version = '2.3+ (#0, Feb 24 2003, 19:13:11)\\n'
+EnsurePythonVersion(2,2)
+sys.exit(0)
+""")
+
+test.run()
+
+test.write('SConstruct', """\
+import sys
+delattr(sys, 'version_info')
+sys.version = '2.3b1 (#0, Feb 24 2003, 19:13:11)\\n'
+EnsurePythonVersion(2,3)
+sys.exit(0)
+""")
+
+test.run()
+
+test.write('SConstruct', """\
+import sys
+delattr(sys, 'version_info')
+sys.version = '2.3b1 (#0, Feb 24 2003, 19:13:11)\\n'
+EnsurePythonVersion(2,4)
+sys.exit(0)
+""")
+
+test.run(status=2)
+
+
+
 test.pass_test()