classification
Title: Can't build Python extension with mingw32 on Windows
Type: behavior Stage:
Components: Extension Modules Versions: Python 3.3
process
Status: open Resolution:
Dependencies: 12641 Superseder:
Assigned To: Nosy List: adityaatluri, amaury.forgeotdarc, cmcqueen1975, loewis, python-dev, rpetrov
Priority: normal Keywords:

Created on 2012-07-10 04:52 by cmcqueen1975, last changed 2013-08-04 14:24 by rpetrov.

Files
File name Uploaded Description Edit
log.txt adityaatluri, 2013-06-14 08:38
Messages (10)
msg165159 - (view) Author: Craig McQueen (cmcqueen1975) Date: 2012-07-10 04:52
I'm trying this with my 'cobs' Python package:

    c:\Python33\python.exe setup.py build --compiler=mingw32 bdist_msi

With Python 3.3 beta, it fails with an exception:

    ValueError: Unknown MS Compiler version 1600

It works with Python 3.2.
msg165160 - (view) Author: Roundup Robot (python-dev) Date: 2012-07-10 05:07
New changeset eee92b9ac4ad by Martin v. Löwis in branch 'default':
Issue #15315: Support VS 2010 in distutils cygwincompiler.
http://hg.python.org/cpython/rev/eee92b9ac4ad
msg165161 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2012-07-10 05:08
This should now be fixed in the repository. It would be good if you could manually apply the change to your installation, and report whether it works.
msg165174 - (view) Author: Craig McQueen (cmcqueen1975) Date: 2012-07-10 07:54
That's definitely an improvement. It gets further, but on my PC, the compile fails:

...
c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe: cannot find -lmsvcr100
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1

I'll have to see if I can get the required library I guess.
msg165176 - (view) Author: Craig McQueen (cmcqueen1975) Date: 2012-07-10 08:12
I downloaded the latest MinGW, and now it tells me:

...
c:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python33\include -IC:\Python33\PC -c python3/src/_cobs_ext.c -o bui
ld\temp.win32-3.3\Release\python3\src\_cobs_ext.o
cc1.exe: error: unrecognized command line option '-mno-cygwin'
error: command 'gcc' failed with exit status 1
msg165177 - (view) Author: Craig McQueen (cmcqueen1975) Date: 2012-07-10 08:17
It sounds as though the option '-mno-cygwin' is related to issue #12641.

Does that mean I need to find a version of MinGW that is old enough to support the option '-mno-cygwin', but new enough to include a library for msvcr100?
msg165179 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2012-07-10 09:09
I'm not a Cygwin user myself, so it would be good if you could figure this out somehow. Feel free to ask on Cygwin lists how this is supposed to work. Our requirement is that the resulting pyd needs to link with msvcr100.dll. It may well be that *no* version of Cygwin ever supported this, in which case we should drop Cygwin support from Python 3.3.
msg165212 - (view) Author: Craig McQueen (cmcqueen1975) Date: 2012-07-10 23:48
I've succeeded in building an extension for Python 3.3 (at least, on Windows XP, 32-bit; haven't tried any 64-bit), by the hack of copying libmsvcr100.a from a recent MinGW release (20120426) into an older MinGW release (20101030).

I haven't looked at MinGW releases to see if I can find one that supports both the -mno-cygwin option and msvcr100.

I guess the best solution for this is to resolve issue #12641 for Python 3.3.
msg191106 - (view) Author: Aditya Atluri (adityaatluri) Date: 2013-06-14 08:38
I have found a hack for the issue.
First, install Microsoft Visual C++ 2010 Redistributable Package.
Second, copy the msvcr100.dll to C:\Python33\libs.

Reason: During compilation, the directory for linking is C:\Python44\libs. Both -lpython and -lmsvcr100 are pointed to the same location. So, they have to be in the same directory.

I have another problem here.
The log is attached. Is there a change in functions and objects in building extensions in C from 2.7 and 3.3?
msg191115 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2013-06-14 10:19
Aditya, python3 changed the API to create modules. See issue18210.
History
Date User Action Args
2013-08-04 14:24:23rpetrovsetnosy: + rpetrov
2013-06-14 10:19:08amaury.forgeotdarcsetnosy: + amaury.forgeotdarc
messages: + msg191115
2013-06-14 08:38:20adityaatlurisetfiles: + log.txt
nosy: + adityaatluri
messages: + msg191106

2012-09-11 22:57:40ezio.melottisetdependencies: + Remove -mno-cygwin from distutils
type: behavior
2012-07-10 23:48:18cmcqueen1975setmessages: + msg165212
2012-07-10 09:09:44loewissetmessages: + msg165179
2012-07-10 08:17:19cmcqueen1975setmessages: + msg165177
2012-07-10 08:12:59cmcqueen1975setmessages: + msg165176
2012-07-10 07:54:07cmcqueen1975setmessages: + msg165174
2012-07-10 05:08:22loewissetnosy: + loewis
messages: + msg165161
2012-07-10 05:07:33python-devsetnosy: + python-dev
messages: + msg165160
2012-07-10 04:52:02cmcqueen1975create