fixed a couple of errors with the c extensions build process on windows
authorArmin Ronacher <armin.ronacher@active-4.com>
Fri, 19 Oct 2007 13:49:56 +0000 (15:49 +0200)
committerArmin Ronacher <armin.ronacher@active-4.com>
Fri, 19 Oct 2007 13:49:56 +0000 (15:49 +0200)
--HG--
branch : trunk

jinja/_speedups.c
setup.py

index d2aaa36501a34f979c402a7eb4d28b60dd2f2519..c3ee18ed323599e00e6b86e45b7df78ddea58353 100644 (file)
@@ -437,7 +437,7 @@ static PyTypeObject BaseContextType = {
        0,                              /* tp_dictoffset */
        (initproc)BaseContext_init,     /* tp_init */
        0,                              /* tp_alloc */
-       PyType_GenericNew               /* tp_new */
+       0                               /* tp_new */
 };
 
 static PyMethodDef module_methods[] = {
@@ -452,6 +452,7 @@ init_speedups(void)
 {
        PyObject *module;
 
+       BaseContextType.tp_new = (newfunc)PyType_GenericNew;
        if (PyType_Ready(&BaseContextType) < 0)
                return;
 
index cae23c7a72fe07b3b64cb4095a81caf264ea33d7..d8246902e8da572520b1c6e32d523a5bfe341ced 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -6,7 +6,7 @@ import ez_setup
 ez_setup.use_setuptools()
 
 from distutils.command.build_ext import build_ext
-from distutils.errors import CCompilerError
+from distutils.errors import CCompilerError, DistutilsError
 from setuptools import setup, Extension, Feature
 from inspect import getdoc
 
@@ -22,8 +22,17 @@ def list_files(path):
 
 class optional_build_ext(build_ext):
 
+    def run(self):
+        try:
+            build_ext.run(self)
+        except DistutilsError, e:
+            self.compiler = None
+            self._setup_error = e
+
     def build_extension(self, ext):
         try:
+            if self.compiler is None:
+                raise self._setup_error
             build_ext.build_extension(self, ext)
         except CCompilerError, e:
             print '=' * 79