Как создать gevent на python под cygwin?

Я хочу последовательно использовать python в различных средах. Одной из таких сред является cygwin. Одним из компонентов, которые я хочу использовать, является gevent (http://www.gevent.org/intro.html). Под cygwin у меня работает python 2.7 (создан локально, с описанным здесь изменением одной строки, которое требуется для его сборки: http://www.gossamer-threads.com/lists/python/python/976956).

gevent требует libevent (http://libevent.org/).

libevent, похоже, отлично работает под cygwin (./configure && make && make install).

Однако при сборке gevent (pip install gevent) происходит сбой, потому что libevent создает статические библиотеки (такие как /usr/local/lib/libevent.a), а сборке gevent требуются общие библиотеки. Таким образом:

gcc -shared -Wl,--enable-auto-image-base build/temp.cygwin-1.7.13-i686-2.7/gevent/core.o -L/usr/local/lib/python2.7/config -levent -lpython2.7 -o build/lib.cygwin-1.7.13-i686-2.7/gevent/core.dll

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -levent

Между тем, если я попытаюсь заставить gevent связать статически (CFLAGS='-static' pip install gevent), -levent по-прежнему не работает, наряду с многочисленными предупреждениями о том, как разыменование указателя с каламбуром типа нарушит правила строгого сглаживания и некоторые дополнительные сбои ld :

gevent/core.c:21835: предупреждение: разыменование указателя с каламбуром типа нарушит строгие правила псевдонимов

....
gevent/core.c:21836: warning: dereferencing type-punned pointer will break strict-aliasing rules

gcc -shared -Wl,--enable-auto-image-base -static build/temp.cygwin-1.7.13-i686-2.7/gevent/core.o -L/usr/local/lib/python2.7/config -levent -lpython2.7 -o build/lib.cygwin-1.7.13-i686-2.7/gevent/core.dll

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -levent

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -lpython2.7

... so...

Я думаю, что мне нужно сказать libevent собрать .dll вместо .a, но Makefile libevent на самом деле не имеет цели .a, и мне не ясно, как должны измениться используемые абстракции для достижения этого.

Итак, делаем шаг назад: как установить gevent под python 2.7 под cygwin?


person rdm    schedule 09.04.2012    source источник


Ответы (1)


Можете ли вы попробовать бета-версию с http://code.google.com/p/gevent/downloads/list ?

Он не требует никаких внешних зависимостей.

person Denis Bilenko    schedule 09.04.2012
comment
Вроде собрал и установил правильно. Спасибо! (Насколько эта бета-версия далека от стабильной?) - person rdm; 10.04.2012