On Sun, Nov 11, 2012 at 12:43 AM, Peter Cock <[email protected]>wrote:
> On Sat, Nov 10, 2012 at 11:24 PM, Peter Cock <[email protected]> > wrote: > > > > I think part of the problem could be in numpy/distutils/misc_util.py > > where there is no code to detect MSCV 10, > > > > def msvc_runtime_library(): > > "Return name of MSVC runtime library if Python was built with MSVC > >= 7" > > msc_pos = sys.version.find('MSC v.') > > if msc_pos != -1: > > msc_ver = sys.version[msc_pos+6:msc_pos+10] > > lib = {'1300' : 'msvcr70', # MSVC 7.0 > > '1310' : 'msvcr71', # MSVC 7.1 > > '1400' : 'msvcr80', # MSVC 8 > > '1500' : 'msvcr90', # MSVC 9 (VS 2008) > > }.get(msc_ver, None) > > else: > > lib = None > > return lib > > > > > https://github.com/numpy/numpy/blob/master/numpy/distutils/misc_util.py#L353 > > > > Under Python 3.3, we have: > > > > Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48) [MSC v.1600 > > 32 bit (Intel)] on win32 > > Type "help", "copyright", "credits" or "license" for more information. > >>>> import sys > >>>> sys.version > > '3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48) [MSC v.1600 32 bit > (Intel)]' > > > > i.e. It looks to me like that dictionary needs another entry for key > '1600'. > > > > Adding this line seems to help, > > '1600' : 'msvcr100', # MSVC 10 (aka 2010) > > Now my compile gets further, but runs into another issue: > > File "c:\python33\lib\distutils\command\config.py", line 246, in try_link > libraries, library_dirs, lang) > File > "C:\Downloads\numpy-1.7.0b2\build\py3k\numpy\distutils\command\config.py", > line 146, in _link > generate_manifest(self) > File > "C:\Downloads\numpy-1.7.0b2\build\py3k\numpy\distutils\mingw32ccompiler.py", > line 562, in generate_manifest > check_embedded_msvcr_match_linked(msver) > File > "C:\Downloads\numpy-1.7.0b2\build\py3k\numpy\distutils\mingw32ccompiler.py", > line 541, in check_embedded_msvcr_match_linked > "(%d)" % (int(msver), maj)) > ValueError: Discrepancy between linked msvcr (10) and the one about to > be embedded (1) > > My hunch was version something about the new three digit version > number is breaking things... which appears to be breaking here: > > def check_embedded_msvcr_match_linked(msver): > """msver is the ms runtime version used for the MANIFEST.""" > # check msvcr major version are the same for linking and > # embedding > msvcv = msvc_runtime_library() > if msvcv: > maj = int(msvcv[5:6]) > if not maj == int(msver): > raise ValueError( > "Discrepancy between linked msvcr " \ > "(%d) and the one about to be embedded " \ > "(%d)" % (int(msver), maj)) > > > https://github.com/numpy/numpy/blob/master/numpy/distutils/mingw32ccompiler.py#L530 > > As you can see, to get the major version number from the > string it looks at the first digit. When the string was something > like "81" or "90" that was fine, but now it is "100". Instead it > should look at all the digits up to the final one, i.e. use: > > maj = int(msvcv[5:-1]) > > Now (finally), I get an understandable (but hopefully wrong) > error message from trying to build NumPy 1.7.0b2 under > Python 3.3 on Windows XP, > > File "numpy\core\setup.py", line 646, in get_mathlib_info > st = config_cmd.try_link('int main(void) { return 0;}') > File "c:\python33\lib\distutils\command\config.py", line 246, in try_link > libraries, library_dirs, lang) > File > "C:\Downloads\numpy-1.7.0b2\build\py3k\numpy\distutils\command\config.py", > line 146, in _link > generate_manifest(self) > File > "C:\Downloads\numpy-1.7.0b2\build\py3k\numpy\distutils\mingw32ccompiler.py", > line 568, in generate_manifest > manxml = msvc_manifest_xml(ma, mi) > File > "C:\Downloads\numpy-1.7.0b2\build\py3k\numpy\distutils\mingw32ccompiler.py", > line 484, in msvc_manifest_xml > % (maj, min)) > ValueError: Version 10,0 of MSVCRT not supported yet > > Presumably those two changes I have described are worth > committing to the trunk anyway? I can prepare a patch or > pull request, but currently I've been working on this Windows > box remotely and I'd prefer to wait until next week when I > can do it directly on the machine concerned. > Those changes look correct, a PR would be great. Fixing the next error also seems straightforward; around line 465 of mingw32ccompiler a check is needed for 10.0 (not sure which one) and then a line like _MSVCRVER_TO_FULLVER['10'] = "10.0.xxxxx.x" needs to be added. Ralf > Files affected: > numpy/distutils/misc_util.py function msvc_runtime_library > numpy/distutils/mingw32ccompiler.py function > check_embedded_msvcr_match_linked > > Peter > _______________________________________________ > NumPy-Discussion mailing list > [email protected] > http://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
