DanielStutzbach / blist

A list-like type with better asymptotic performance and similar performance on small lists
Other
310 stars 36 forks source link

build problem under Windows 7 64-bit Anaconda distribution compiling with MinGW #55

Closed lyonj closed 10 years ago

lyonj commented 10 years ago

I am having problems installing blist from source on Windows 7 (64-bit) with an Anaconda 1.7 Python distribution (compiler is MinGW gcc). The Python header files are installed and I can compile other C extensions. I get the same error building from source or using pip. The output of the pip installer is below.

Downloading/unpacking blist Running setup.py egg_info for package blist

warning: no files found matching 'blist.rst'

Installing collected packages: blist Running setup.py install for blist building '_blist' extension C:\Anaconda\Scripts\gcc.bat -DMS_WIN64 -mdll -O -Wall -DBLIST_FLOAT_RADIX_SORT=1 -IC:\Anaconda\include -IC:\Anaconda\PC -c _blist.c -o build\temp.win-amd64-2.7\Release_blist.o _blist.c: In function 'py_blist_ass_subscript': _blist.c:6019:46: warning: unknown conversion type character 'z' in format [-Wformat] _blist.c:6019:46: warning: unknown conversion type character 'z' in format [-Wformat] _blist.c:6019:46: warning: too many arguments for format [-Wformat-extra-args] C:\Anaconda\Scripts\gcc.bat -DMS_WIN64 -shared -s build \temp.win-amd64-2.7\Release_blist.o build\temp.win-amd64-2.7\Release _blist.def -LC:\Anaconda\libs -LC:\Anaconda\PCbuild\amd64 -lpython27 -lmsvcr90 -o build\lib.win-amd64-2.7_blist.pyd build\temp.win-amd64-2.7\Release_blist.o:_blist.c:(.text+0x704a): undefined reference to __imp__PyTrash_thread_destroy_chain' build\temp.win-amd64-2.7\Release\_blist.o:_blist.c:(.text+0x7057): undefined reference toimpPyTrash_thread_deposit_object' collect2.exe: error: ld returned 1 exit status error: command 'gcc' failed with exit status 1 Complete output from command C:\Anaconda\python.exe -c "import setuptools;file='c:\sandbox\scratch\pip_build_lyonj\blist \setup.py';exec(compile(open(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record c:\sandbox\scratch\pip-ysnrt1-record \install-record.txt --single-version-externally-managed: running install

running build

running build_py

creating build

creating build\lib.win-amd64-2.7

copying blist.py -> build\lib.win-amd64-2.7

copying _sortedlist.py -> build\lib.win-amd64-2.7

copying _sorteddict.py -> build\lib.win-amd64-2.7

copying _btuple.py -> build\lib.win-amd64-2.7

running build_ext

building '_blist' extension

creating build\temp.win-amd64-2.7

creating build\temp.win-amd64-2.7\Release

C:\Anaconda\Scripts\gcc.bat -DMS_WIN64 -mdll -O -Wall -DBLIST_FLOAT_RADIX_SORT=1 -IC:\Anaconda\include -IC:\Anaconda\PC -c _blist.c -o build\temp.win-amd64-2.7\Release_blist.o

_blist.c: In function 'py_blist_ass_subscript':

_blist.c:6019:46: warning: unknown conversion type character 'z' in format [-Wformat]

_blist.c:6019:46: warning: unknown conversion type character 'z' in format [-Wformat]

_blist.c:6019:46: warning: too many arguments for format [-Wformat-extra-args]

writing build\temp.win-amd64-2.7\Release_blist.def

C:\Anaconda\Scripts\gcc.bat -DMS_WIN64 -shared -s build\temp.win-amd64-2.7 \Release_blist.o build\temp.win-amd64-2.7\Release_blist.def -LC:\Anaconda \libs -LC:\Anaconda\PCbuild\amd64 -lpython27 -lmsvcr90 -o build \lib.win-amd64-2.7_blist.pyd

build\temp.win-amd64-2.7\Release_blist.o:_blist.c:(.text+0x704a): undefined reference to `impPyTrash_thread_destroy_chain'

build\temp.win-amd64-2.7\Release_blist.o:_blist.c:(.text+0x7057): undefined reference to `impPyTrash_thread_deposit_object'

collect2.exe: error: ld returned 1 exit status

error: command 'gcc' failed with exit status 1


Cleaning up... Command C:\Anaconda\python.exe -c "import setuptools;file='c:\sandbox \scratch\pip_build_lyonj\blist\setup.py';exec(compile(open (file).read().replace('\r\n', '\n'), file, 'exec'))" install --record c:\sandbox\scratch\pip-ysnrt1-record\install-record.txt --single-version-externally-managed failed with error code 1 in c:\sandbox \scratch\pip_build_lyonj\blist Storing complete log in C:\Users\lyonj\pip\pip.log

ghost commented 10 years ago

I am having the same problem. Did you ever find a solution?

lyonj commented 10 years ago

The author is aware of the problem and asked that I put in this ticket so he could track it. I haven't seen any updates.

slavasav commented 10 years ago

Same problem here, please let know if you need any more logs.

mwishek commented 10 years ago

+1 - please take a look and see if this can be resolved.

DanielStutzbach commented 10 years ago

I found the problem. The problem is that your installed Python libraries and your installed Python headers. Normally, mixing libraries and headers within the 2.7.x series is safe, which is why most extensions work fine. However, http://hg.python.org/cpython/rev/5a2ef447b80d introduced an incompatible change in a macro that blist calls.

You need to either upgrade your installed libraries 2.7.4 or greater, or downgrade your installed headers to 2.7.3 or lower. Replacing include/object.h with the one at the following link might be sufficient, but I haven't tested it.

http://hg.python.org/cpython/raw-file/40b684215b4f/Include/object.h

Hope that helps!