summaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
authorBas Westerbaan <bas@westerbaan.name>2013-01-28 12:27:46 +0100
committerBas Westerbaan <bas@westerbaan.name>2013-01-28 12:27:46 +0100
commit2627b6ae9f0606b388a3a3ec0110d1fdb33d082e (patch)
treee8525d1f5b4eff6e8ef504f676af42a8d4064419 /setup.py
parent6a28b28c6314158ee099c95d452406278cdb93b0 (diff)
downloadmsgpack-python-2627b6ae9f0606b388a3a3ec0110d1fdb33d082e.tar.gz
setup: automatically fallback to pure Python module
Signed-off-by: Bas Westerbaan <bas@westerbaan.name>
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/setup.py b/setup.py
index ac3eeb5..3d7fc04 100644
--- a/setup.py
+++ b/setup.py
@@ -8,6 +8,9 @@ from setuptools import setup, Extension
from distutils.command.build_ext import build_ext
+class NoCython(Exception):
+ pass
+
try:
import Cython.Compiler.Main as cython_compiler
have_cython = True
@@ -24,10 +27,7 @@ def ensure_source(src):
if not os.path.exists(src):
if not have_cython:
- raise Exception("""\
-Cython is required for building extension from checkout.
-Install Cython >= 0.16 or install msgpack from PyPI.
-""")
+ raise NoCython
cythonize(pyx)
elif (os.path.exists(pyx) and
os.stat(src).st_mtime < os.stat(pyx).st_mtime and
@@ -38,7 +38,14 @@ Install Cython >= 0.16 or install msgpack from PyPI.
class BuildExt(build_ext):
def build_extension(self, ext):
- ext.sources = list(map(ensure_source, ext.sources))
+ try:
+ ext.sources = list(map(ensure_source, ext.sources))
+ except NoCython:
+ print "WARNING"
+ print "Cython is required for building extension from checkout."
+ print "Install Cython >= 0.16 or install msgpack from PyPI."
+ print "Falling back to pure Python implementation."
+ return
return build_ext.build_extension(self, ext)