uvloop/Makefile

108 lines
2.3 KiB
Makefile
Raw Normal View History

2016-05-08 04:30:27 +00:00
.PHONY: compile clean all distclean test debug sdist clean-libuv
.PHONY: release sdist-libuv docs
2015-11-03 23:49:23 +00:00
all: clean compile
2015-11-01 17:00:43 +00:00
clean:
2016-05-08 04:30:27 +00:00
rm -fr dist/ doc/_build/
2016-04-14 16:53:08 +00:00
rm -fr uvloop/*.c uvloop/*.html uvloop/*.so build *.egg-info
rm -fr uvloop/handles/*.html uvloop/includes/*.html
find . -name '__pycache__' | xargs rm -rf
2015-11-01 17:00:43 +00:00
clean-libuv:
2015-11-03 23:49:23 +00:00
git -C vendor/libuv clean -dfX
2016-05-05 17:06:10 +00:00
sdist-libuv: clean-libuv
/bin/sh vendor/libuv/autogen.sh
distclean: clean clean-libuv
compile: clean
echo "DEF DEBUG = 0" > uvloop/__debug.pxi
cython -3 uvloop/loop.pyx; rm uvloop/__debug.*
@echo "$$UVLOOP_BUILD_PATCH_SCRIPT" | python
2016-04-18 20:53:17 +00:00
python setup.py build_ext --inplace
debug: clean
echo "DEF DEBUG = 1" > uvloop/__debug.pxi
cython -3 -a -p uvloop/loop.pyx; rm uvloop/__debug.*
@echo "$$UVLOOP_BUILD_PATCH_SCRIPT" | python
2016-04-18 20:53:17 +00:00
python setup.py build_ext --inplace
2015-11-10 22:41:22 +00:00
2016-05-08 04:30:27 +00:00
docs: compile
2016-05-09 19:27:42 +00:00
cd docs && python -m sphinx -a -b html . _build/html
2016-05-08 04:30:27 +00:00
2015-11-10 22:41:22 +00:00
test:
2016-04-18 20:53:17 +00:00
PYTHONASYNCIODEBUG=1 python -m unittest discover -s tests
python -m unittest discover -s tests
2016-05-05 17:06:10 +00:00
sdist: clean compile test sdist-libuv
2016-04-18 20:53:17 +00:00
python setup.py sdist
release: clean compile test sdist-libuv
2016-04-18 20:53:17 +00:00
python setup.py sdist upload
# Script to patch Cython 'async def' coroutines to have a 'tp_iter' slot,
# which makes them compatible with 'yield from' without the
# `asyncio.coroutine` decorator.
define UVLOOP_BUILD_PATCH_SCRIPT
import re
with open('uvloop/loop.c', 'rt') as f:
src = f.read()
src = re.sub(
r'''
\s* offsetof\(__pyx_CoroutineObject,\s*gi_weakreflist\),
\s* 0,
\s* 0,
\s* __pyx_Coroutine_methods,
\s* __pyx_Coroutine_memberlist,
\s* __pyx_Coroutine_getsets,
''',
r'''
offsetof(__pyx_CoroutineObject, gi_weakreflist),
__Pyx_Coroutine_await, /* tp_iter */
0,
__pyx_Coroutine_methods,
__pyx_Coroutine_memberlist,
__pyx_Coroutine_getsets,
''',
src, flags=re.X)
# Fix a segfault in Cython.
src = re.sub(
r'''
\s* __Pyx_Coroutine_get_qualname\(__pyx_CoroutineObject\s+\*self\)
\s* {
\s* Py_INCREF\(self->gi_qualname\);
''',
r'''
__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self)
{
if (self->gi_qualname == NULL) { return __pyx_empty_unicode; }
Py_INCREF(self->gi_qualname);
''',
src, flags=re.X)
with open('uvloop/loop.c', 'wt') as f:
f.write(src)
endef
export UVLOOP_BUILD_PATCH_SCRIPT