[Python-checkins] cpython (merge default -> default): merge heads

benjamin.peterson python-checkins at python.org
Thu Aug 9 02:23:06 CEST 2012


http://hg.python.org/cpython/rev/b3e56aa3cc99
changeset:   78469:b3e56aa3cc99
parent:      78468:e2df976b8a33
parent:      78467:4ee4cceda047
user:        Benjamin Peterson <benjamin at python.org>
date:        Wed Aug 08 17:22:57 2012 -0700
summary:
  merge heads

files:
  Lib/test/regrtest.py      |   8 +++++---
  Lib/test/test_array.py    |  14 ++++++++++++--
  Misc/NEWS                 |   3 +++
  Modules/_testcapimodule.c |   2 +-
  setup.py                  |  21 +++++++++++++++++++++
  5 files changed, 42 insertions(+), 6 deletions(-)


diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -440,8 +440,11 @@
             args, kwargs = json.loads(a)
             try:
                 result = runtest(*args, **kwargs)
+            except KeyboardInterrupt:
+                result = INTERRUPTED, ''
             except BaseException as e:
-                result = INTERRUPTED, e.__class__.__name__
+                traceback.print_exc()
+                result = CHILD_ERROR, str(e)
             sys.stdout.flush()
             print()   # Force a newline (just in case)
             print(json.dumps(result))
@@ -684,8 +687,7 @@
                 sys.stdout.flush()
                 sys.stderr.flush()
                 if result[0] == INTERRUPTED:
-                    assert result[1] == 'KeyboardInterrupt'
-                    raise KeyboardInterrupt   # What else?
+                    raise KeyboardInterrupt
                 if result[0] == CHILD_ERROR:
                     raise Exception("Child error on {}: {}".format(test, result[1]))
                 test_index += 1
diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py
--- a/Lib/test/test_array.py
+++ b/Lib/test/test_array.py
@@ -1029,9 +1029,19 @@
     smallerexample = '\x01\u263a\x00\ufefe'
     biggerexample = '\x01\u263a\x01\ufeff'
     outside = str('\x33')
-    minitemsize = 4
+    minitemsize = 2
 
     def test_unicode(self):
+        try:
+            import ctypes
+            sizeof_wchar = ctypes.sizeof(ctypes.c_wchar)
+        except ImportError:
+            import sys
+            if sys.platform == 'win32':
+                sizeof_wchar = 2
+            else:
+                sizeof_wchar = 4
+
         self.assertRaises(TypeError, array.array, 'b', 'foo')
 
         a = array.array('u', '\xa0\xc2\u1234')
@@ -1041,7 +1051,7 @@
         a.fromunicode('\x11abc\xff\u1234')
         s = a.tounicode()
         self.assertEqual(s, '\xa0\xc2\u1234 \x11abc\xff\u1234')
-        self.assertEqual(a.itemsize, 4)
+        self.assertEqual(a.itemsize, sizeof_wchar)
 
         s = '\x00="\'a\\b\x80\xff\u0000\u0001\u1234'
         a = array.array('u', s)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -312,6 +312,9 @@
 Build
 -----
 
+- Issue #11715: Fix multiarch detection without having Debian development
+  tools (dpkg-dev) installed.
+
 - Issue #15037: Build OS X installers with local copy of ncurses 5.9 libraries
   to avoid curses.unget_wch bug present in older versions of ncurses such as
   those shipped with OS X.
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -1210,7 +1210,7 @@
     int result;
     PyObject *return_value = NULL;
 
-    char buffers[32][8];
+    double buffers[8][4]; /* double ensures alignment where necessary */
 
     if (!PyArg_ParseTuple(args, "OOyO:parse_tuple_and_keywords",
         &sub_args, &sub_kwargs,
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -379,6 +379,27 @@
     def add_multiarch_paths(self):
         # Debian/Ubuntu multiarch support.
         # https://wiki.ubuntu.com/MultiarchSpec
+        cc = sysconfig.get_config_var('CC')
+        tmpfile = os.path.join(self.build_temp, 'multiarch')
+        if not os.path.exists(self.build_temp):
+            os.makedirs(self.build_temp)
+        ret = os.system(
+            '%s -print-multiarch > %s 2> /dev/null' % (cc, tmpfile))
+        multiarch_path_component = ''
+        try:
+            if ret >> 8 == 0:
+                with open(tmpfile) as fp:
+                    multiarch_path_component = fp.readline().strip()
+        finally:
+            os.unlink(tmpfile)
+
+        if multiarch_path_component != '':
+            add_dir_to_list(self.compiler.library_dirs,
+                            '/usr/lib/' + multiarch_path_component)
+            add_dir_to_list(self.compiler.include_dirs,
+                            '/usr/include/' + multiarch_path_component)
+            return
+
         if not find_executable('dpkg-architecture'):
             return
         opt = ''

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list