[PyObjC-svn] r2349 - in trunk/pyobjc/pyobjc-core: . Lib/PyObjCTools Modules/objc Modules/objc/test PyObjCTest

[email protected] Tue, 24 Nov 2009 07:28:54 -0600
Newsgroups gmane.comp.python.pyobjc.cvs
Message-ID <[email protected]>
Author: ronaldoussoren
Date: Tue Nov 24 07:28:53 2009
New Revision: 2349

Log:
* Bump version number to 2.2
* Ensure the binary distribution can be build with Python 2.6.4


Modified:
   trunk/pyobjc/pyobjc-core/Lib/PyObjCTools/TestSupport.py
   trunk/pyobjc/pyobjc-core/Modules/objc/pyobjc.h
   trunk/pyobjc/pyobjc-core/Modules/objc/test/block.m
   trunk/pyobjc/pyobjc-core/NEWS.txt
   trunk/pyobjc/pyobjc-core/PyObjCTest/test_blocks.py
   trunk/pyobjc/pyobjc-core/setup.py

Modified: trunk/pyobjc/pyobjc-core/Lib/PyObjCTools/TestSupport.py
==============================================================================
--- trunk/pyobjc/pyobjc-core/Lib/PyObjCTools/TestSupport.py	(original)
+++ trunk/pyobjc/pyobjc-core/Lib/PyObjCTools/TestSupport.py	Tue Nov 24 07:28:53 2009
@@ -94,6 +94,26 @@
         return False
     return True
 
+def onlyIf(expr, message=None):
+    """
+    Usage::
+
+        class Tests (unittest.TestCase):
+
+            @onlyIf(1 == 2)
+            def testUnlikely(self):
+                pass
+
+    The test only runs when the argument expression is true
+    """
+    def callback(function):
+        if not expr:
+            if _sys.version_info[:2] >= (2, 7):
+                return _unittest.skip(message)(function)
+            return lambda self: None
+        else:
+            return function
+    return callback
 
 def onlyOn32Bit(function):
     """

Modified: trunk/pyobjc/pyobjc-core/Modules/objc/pyobjc.h
==============================================================================
--- trunk/pyobjc/pyobjc-core/Modules/objc/pyobjc.h	(original)
+++ trunk/pyobjc/pyobjc-core/Modules/objc/pyobjc.h	Tue Nov 24 07:28:53 2009
@@ -5,7 +5,7 @@
  * Central include file for PyObjC. 
  */
 
-#define OBJC_VERSION "2.2b4"
+#define OBJC_VERSION "2.2"
 
 // Loading in AppKit on Mac OS X 10.3 results in
 // a bit less than 1500 classes.

Modified: trunk/pyobjc/pyobjc-core/Modules/objc/test/block.m
==============================================================================
--- trunk/pyobjc/pyobjc-core/Modules/objc/test/block.m	(original)
+++ trunk/pyobjc/pyobjc-core/Modules/objc/test/block.m	Tue Nov 24 07:28:53 2009
@@ -5,7 +5,7 @@
 
 @interface OCTestBlock : NSObject {}
 
-#if PyObjC_BUILD_RELEASE >= 1006
+#if (PyObjC_BUILD_RELEASE >= 1006) && (__GNUC__ >= 4 && __GNUC_MINOR__ >= 2)
 
 -(int(^)(void))getIntBlock;
 -(double(^)(double,double))getFloatBlock;
@@ -17,7 +17,7 @@
 
 @implementation OCTestBlock
 
-#if PyObjC_BUILD_RELEASE >= 1006
+#if PyObjC_BUILD_RELEASE >= 1006 && (__GNUC__ >= 4 && __GNUC_MINOR__ >= 2)
 
 -(int(^)(void))getIntBlock
 {

Modified: trunk/pyobjc/pyobjc-core/NEWS.txt
==============================================================================
--- trunk/pyobjc/pyobjc-core/NEWS.txt	(original)
+++ trunk/pyobjc/pyobjc-core/NEWS.txt	Tue Nov 24 07:28:53 2009
@@ -4,8 +4,10 @@
 
 An overview of the relevant changes in new, and older, releases.
 
-Version 2.2 (...)
------------------
+Version 2.2 (2009-11-24)
+------------------------
+
+- BUGFIX: Ensure PyObjC compiles cleanly with Python 2.6.4.
 
 - BUGFIX: It is now possible to explicitly define ``__getitem__`` (and other
   special methods) if your class implements ``objectForKey:``::

Modified: trunk/pyobjc/pyobjc-core/PyObjCTest/test_blocks.py
==============================================================================
--- trunk/pyobjc/pyobjc-core/PyObjCTest/test_blocks.py	(original)
+++ trunk/pyobjc/pyobjc-core/PyObjCTest/test_blocks.py	Tue Nov 24 07:28:53 2009
@@ -39,9 +39,18 @@
 </signatures>
 ''', globals(), 'PyObjCTest')
 
+# The blocks tests can only run when PyObjC was compiled with
+# GCC 4.2 or later.
+v = OCTestBlock.alloc().init()
+if hasattr(v, 'getIntBlock'):
+    blocksEnabled = True
+else:
+    blocksEnabled = False
+del v
 
 class TestBlocks (TestCase):
     @min_os_level('10.6')
+    @onlyIf(blocksEnabled, "no blocks")
     def testBlockToObjC(self):
         obj = OCTestBlock.alloc().init()
 	
@@ -57,6 +66,7 @@
 	self.failUnlessEqual(lst, [42, 43])
 
     @min_os_level('10.6')
+    @onlyIf(blocksEnabled, "no blocks")
     def testBlockToObjC2(self):
         obj = OCTestBlock.alloc().init()
 	
@@ -69,6 +79,7 @@
 
 
     @min_os_level('10.6')
+    @onlyIf(blocksEnabled, "no blocks")
     def testBlockFromObjC(self):
         obj = OCTestBlock.alloc().init()
 
@@ -80,6 +91,7 @@
         self.failUnlessEqual(value, 42)
 
     @min_os_level('10.6')
+    @onlyIf(blocksEnabled, "no blocks")
     def testBlockFromObjC2(self):
         obj = OCTestBlock.alloc().init()
 

Modified: trunk/pyobjc/pyobjc-core/setup.py
==============================================================================
--- trunk/pyobjc/pyobjc-core/setup.py	(original)
+++ trunk/pyobjc/pyobjc-core/setup.py	Tue Nov 24 07:28:53 2009
@@ -209,11 +209,10 @@
 if not os.path.exists('/usr/include/objc/runtime.h'):
     CFLAGS.append('-DNO_OBJC2_RUNTIME')
 
-else:
-    # Force compilation with the local SDK, compilation of PyObC will result in
-    # a binary that runs on other releases of the OS without using a particular SDK.
-    CFLAGS.extend(['-isysroot', '/'])
-    OBJC_LDFLAGS.extend(['-isysroot', '/'])
+# Force compilation with the local SDK, compilation of PyObC will result in
+# a binary that runs on other releases of the OS without using a particular SDK.
+CFLAGS.extend(['-isysroot', '/'])
+OBJC_LDFLAGS.extend(['-isysroot', '/'])
 
 
 # We're using xml2, check for the flags to use:

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july