3 # Copyright The SCons Foundation
5 # Permission is hereby granted, free of charge, to any person obtaining
6 # a copy of this software and associated documentation files (the
7 # "Software"), to deal in the Software without restriction, including
8 # without limitation the rights to use, copy, modify, merge, publish,
9 # distribute, sublicense, and/or sell copies of the Software, and to
10 # permit persons to whom the Software is furnished to do so, subject to
11 # the following conditions:
13 # The above copyright notice and this permission notice shall be included
14 # in all copies or substantial portions of the Software.
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
17 # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
18 # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 MS Compilers: .Net Framework support
31 from .common
import read_reg
, debug
33 # Original value recorded by dcournapeau
34 _FRAMEWORKDIR_HKEY_ROOT
= r
'Software\Microsoft\.NETFramework\InstallRoot'
36 _FRAMEWORKDIR_HKEY_ROOT
= r
'Software\Microsoft\Microsoft SDKs\.NETFramework\v2.0\InstallationFolder'
38 def find_framework_root():
39 # XXX: find it from environment (FrameworkDir)
41 froot
= read_reg(_FRAMEWORKDIR_HKEY_ROOT
)
42 debug("Found framework install root in registry: %s", froot
)
44 debug("Could not read reg key %s", _FRAMEWORKDIR_HKEY_ROOT
)
47 if not os
.path
.exists(froot
):
48 debug("%s not found on fs", froot
)
54 froot
= find_framework_root()
56 contents
= os
.listdir(froot
)
58 l
= re
.compile('v[0-9]+.*')
59 versions
= [e
for e
in contents
if l
.match(e
)]
62 # since version numbers aren't really floats...
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 (aal
> bbl
) - (aal
< bbl
)
80 # indent-tabs-mode:nil
82 # vim: set expandtab tabstop=4 shiftwidth=4: