Rev 3758: Work around bug #276868 by blacklisting pyrex 0.9.4.1 for that extension in http://bzr.arbash-meinel.com/branches/bzr/1.8-dev/block_pyrex_0.9.4.1

John Arbash Meinel john at arbash-meinel.com
Wed Oct 1 23:11:16 BST 2008


At http://bzr.arbash-meinel.com/branches/bzr/1.8-dev/block_pyrex_0.9.4.1

------------------------------------------------------------
revno: 3758
revision-id: john at arbash-meinel.com-20081001221115-loptk3y40vt7e0uv
parent: pqm at pqm.ubuntu.com-20081001123103-9powbklax4nmw09j
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: block_pyrex_0.9.4.1
timestamp: Wed 2008-10-01 17:11:15 -0500
message:
  Work around bug #276868 by blacklisting pyrex 0.9.4.1 for that extension
-------------- next part --------------
=== modified file 'NEWS'
--- a/NEWS	2008-10-01 12:31:03 +0000
+++ b/NEWS	2008-10-01 22:11:15 +0000
@@ -18,6 +18,13 @@
     * ``bzr+http//`` will now optionally load plugins and write logs on the
       server. (Marius Kruger)
 
+    * ``bzrlib._dirstate_helpers_c.pyx`` does not compile correctly with
+      Pyrex 0.9.4.1 (it generates C code which causes segfaults). We
+      explicitly blacklist that version of the compiler for that
+      extension. Packaged versions will include .c files created with
+      pyrex >= 0.9.6 so it doesn't effect releases, only users running
+      from the source tree. (John Arbash Meinel, #276868)
+
   FEATURES
 
     * bzr is now compatible with python-2.6. python-2.6 is not yet officially

=== modified file 'setup.py'
--- a/setup.py	2008-09-26 05:14:51 +0000
+++ b/setup.py	2008-10-01 22:11:15 +0000
@@ -175,6 +175,8 @@
     from distutils.command.build_ext import build_ext
 else:
     have_pyrex = True
+    from Pyrex.Compiler.Version import version as pyrex_version
+    pyrex_version_info = tuple(map(int, pyrex_version.split('.')))
 
 
 class build_ext_if_possible(build_ext):
@@ -237,7 +239,15 @@
     add_pyrex_extension('bzrlib._walkdirs_win32',
                         define_macros=[('WIN32', None)])
 else:
-    add_pyrex_extension('bzrlib._dirstate_helpers_c')
+    if have_pyrex and pyrex_version_info < (0, 9, 6, 0):
+        # Pyrex 0.9.4.1 fails to compile this extension correctly
+        print 'Cannot build extension "bzrlib._dirstate_helpers_c" using'
+        print 'your version of pyrex "%s". Please upgrade to a version' % (
+            pyrex_version,)
+        print '>= 0.9.6. For now, the non-compiled (python) version will'
+        print 'be used instead.'
+    else:
+        add_pyrex_extension('bzrlib._dirstate_helpers_c')
     add_pyrex_extension('bzrlib._readdir_pyx')
 ext_modules.append(Extension('bzrlib._patiencediff_c', ['bzrlib/_patiencediff_c.c']))
 



More information about the bazaar-commits mailing list