diff options
author | Bas Westerbaan <bas@westerbaan.name> | 2013-01-28 12:27:46 +0100 |
---|---|---|
committer | Bas Westerbaan <bas@westerbaan.name> | 2013-01-28 12:27:46 +0100 |
commit | 2627b6ae9f0606b388a3a3ec0110d1fdb33d082e (patch) | |
tree | e8525d1f5b4eff6e8ef504f676af42a8d4064419 /setup.py | |
parent | 6a28b28c6314158ee099c95d452406278cdb93b0 (diff) | |
download | msgpack-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.py | 17 |
1 files changed, 12 insertions, 5 deletions
@@ -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) |