summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2012-08-09 00:22:57 (GMT)
committerBenjamin Peterson <benjamin@python.org>2012-08-09 00:22:57 (GMT)
commit652e758fc41c953c5235f389e7dbb481bc915f0a (patch)
tree2c87e935f9bbfe79d391ccfd31e32bc126a4327f
parent1a1367b821ee6e724cc4d66934f93d84d8544161 (diff)
parent9d512ab97f642215c16eace1705f585f41eb4162 (diff)
downloadcpython-652e758fc41c953c5235f389e7dbb481bc915f0a.zip
cpython-652e758fc41c953c5235f389e7dbb481bc915f0a.tar.gz
cpython-652e758fc41c953c5235f389e7dbb481bc915f0a.tar.bz2
merge heads
-rwxr-xr-xLib/test/regrtest.py8
-rwxr-xr-xLib/test/test_array.py14
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/_testcapimodule.c2
-rw-r--r--setup.py21
5 files changed, 42 insertions, 6 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 15d7d0b..c9ef0ff 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -440,8 +440,11 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
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 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
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
index 9385339..eb6d77f 100755
--- a/Lib/test/test_array.py
+++ b/Lib/test/test_array.py
@@ -1029,9 +1029,19 @@ class UnicodeTest(StringTest):
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 @@ class UnicodeTest(StringTest):
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
index 9b53ce9..53975f0 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -312,6 +312,9 @@ Tests
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
index ca526bd..ce58651 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -1210,7 +1210,7 @@ parse_tuple_and_keywords(PyObject *self, PyObject *args)
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
index bc1e1bb..7f863a4 100644
--- a/setup.py
+++ b/setup.py
@@ -379,6 +379,27 @@ class PyBuildExt(build_ext):
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 = ''