From 3f5fcc8acce9fa620fe29d15980850e433f1d5c9 Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Fri, 28 Feb 2003 17:21:39 +0000 Subject: Fix SF bug #690012 (among others), iconv_codec stops build Change setup.py to catch all exceptions. - Rename module if the exception was an ImportError - Only warn if the exception was any other error Revert _iconv_codec to raising a RuntimeError. --- Modules/_iconv_codec.c | 6 +++--- setup.py | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Modules/_iconv_codec.c b/Modules/_iconv_codec.c index a26a341..3570f46 100644 --- a/Modules/_iconv_codec.c +++ b/Modules/_iconv_codec.c @@ -674,14 +674,14 @@ init_iconv_codec(void) iconv_t hdl = iconv_open(UNICODE_ENCODING, "ISO-8859-1"); if (hdl == (iconv_t)-1) { - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_RuntimeError, "can't initialize the _iconv_codec module: iconv_open() failed"); return; } res = iconv(hdl, &inptr, &insize, &outptr, &outsize); if (res == (size_t)-1) { - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_RuntimeError, "can't initialize the _iconv_codec module: iconv() failed"); return; } @@ -698,7 +698,7 @@ init_iconv_codec(void) byteswap = 1; else { iconv_close(hdl); - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_RuntimeError, "can't initialize the _iconv_codec module: mixed endianess"); return; } diff --git a/setup.py b/setup.py index ca4bf9f..7c362f5 100644 --- a/setup.py +++ b/setup.py @@ -207,9 +207,10 @@ class PyBuildExt(build_ext): self.get_ext_filename(self.get_ext_fullname(ext.name))) try: imp.load_dynamic(ext.name, ext_filename) - except ImportError, why: + except: - if 1: + exc_type, why, tb = sys.exc_info() + if issubclass(exc_type, ImportError): self.announce('*** WARNING: renaming "%s" since importing it' ' failed: %s' % (ext.name, why), level=3) assert not self.inplace @@ -231,7 +232,8 @@ class PyBuildExt(build_ext): self.announce('unable to remove files (ignored)') else: self.announce('*** WARNING: importing extension "%s" ' - 'failed: %s' % (ext.name, why), level=3) + 'failed with %s: %s' % (ext.name, exc_type, why), + level=3) def get_platform (self): # Get value of sys.platform -- cgit v0.12