OLD | NEW |
(Empty) | |
| 1 # |
| 2 # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The S
Cons Foundation |
| 3 # |
| 4 # Permission is hereby granted, free of charge, to any person obtaining |
| 5 # a copy of this software and associated documentation files (the |
| 6 # "Software"), to deal in the Software without restriction, including |
| 7 # without limitation the rights to use, copy, modify, merge, publish, |
| 8 # distribute, sublicense, and/or sell copies of the Software, and to |
| 9 # permit persons to whom the Software is furnished to do so, subject to |
| 10 # the following conditions: |
| 11 # |
| 12 # The above copyright notice and this permission notice shall be included |
| 13 # in all copies or substantial portions of the Software. |
| 14 # |
| 15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY |
| 16 # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE |
| 17 # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| 18 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
| 19 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
| 20 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
| 21 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| 22 |
| 23 __revision__ = "src/engine/SCons/Tool/MSCommon/netframework.py 5134 2010/08/16 2
3:02:40 bdeegan" |
| 24 |
| 25 __doc__ = """ |
| 26 """ |
| 27 |
| 28 import os |
| 29 import re |
| 30 |
| 31 from common import read_reg, debug |
| 32 |
| 33 # Original value recorded by dcournapeau |
| 34 _FRAMEWORKDIR_HKEY_ROOT = r'Software\Microsoft\.NETFramework\InstallRoot' |
| 35 # On SGK's system |
| 36 _FRAMEWORKDIR_HKEY_ROOT = r'Software\Microsoft\Microsoft SDKs\.NETFramework\v2.0
\InstallationFolder' |
| 37 |
| 38 def find_framework_root(): |
| 39 # XXX: find it from environment (FrameworkDir) |
| 40 try: |
| 41 froot = read_reg(_FRAMEWORKDIR_HKEY_ROOT) |
| 42 debug("Found framework install root in registry: %s" % froot) |
| 43 except WindowsError, e: |
| 44 debug("Could not read reg key %s" % _FRAMEWORKDIR_HKEY_ROOT) |
| 45 return None |
| 46 |
| 47 if not os.path.exists(froot): |
| 48 debug("%s not found on fs" % froot) |
| 49 return None |
| 50 |
| 51 return froot |
| 52 |
| 53 def query_versions(): |
| 54 froot = find_framework_root() |
| 55 if froot: |
| 56 contents = os.listdir(froot) |
| 57 |
| 58 l = re.compile('v[0-9]+.*') |
| 59 versions = [e for e in contents if l.match(e)] |
| 60 |
| 61 def versrt(a,b): |
| 62 # since version numbers aren't really floats... |
| 63 aa = a[1:] |
| 64 bb = b[1:] |
| 65 aal = aa.split('.') |
| 66 bbl = bb.split('.') |
| 67 # sequence comparison in python is lexicographical |
| 68 # which is exactly what we want. |
| 69 # Note we sort backwards so the highest version is first. |
| 70 return cmp(bbl,aal) |
| 71 |
| 72 versions.sort(versrt) |
| 73 else: |
| 74 versions = [] |
| 75 |
| 76 return versions |
| 77 |
| 78 # Local Variables: |
| 79 # tab-width:4 |
| 80 # indent-tabs-mode:nil |
| 81 # End: |
| 82 # vim: set expandtab tabstop=4 shiftwidth=4: |
OLD | NEW |