Issue 3012: disutils fails with GNU ld (GNU Binutils) 2.18.50.20080523 (original) (raw)
I just upgraded my cygwin installation to the latest versions. Which seems to include GNU ld (GNU Binutils) 2.18.50.20080523 and GNU dllwrap (GNU Binutils) 2.18.50.20080523
It seems that their version notation is now Major.Minor.Micro.Date The problem is that in 'cygwincompiler.py' it does:
result = re.search('(\d+\.\d+(\.\d+)*)',out_string)
if result:
ld_version = StrictVersion(result.group(1))
Which matches the full version string. However "StrictVersion" only supports A.B.CdE formats. So the .Date breaks the parser.
My workaround was to change the regex to be: result = re.search('(\d+.\d+(.\d+)?)(.\d+)*',out_string)
So it will still match an unlimited number of '.DDD' as it used to, but now it only preserves the first 3 to pass to StrictVersion.
This may not be the correct fix, as a better fix might be to use something else instead of StrictVersion (since these version numbers explicitly don't match what StrictVersion expects.)