diff options
author | Neal Norwitz <nnorwitz@gmail.com> | 2003-02-28 17:21:39 (GMT) |
---|---|---|
committer | Neal Norwitz <nnorwitz@gmail.com> | 2003-02-28 17:21:39 (GMT) |
commit | 3f5fcc8acce9fa620fe29d15980850e433f1d5c9 (patch) | |
tree | c0e81780a6516e2b6935b7b4df29d6b0e9c7b95c | |
parent | edaa071eb45cecbcf4d74b886bfac1ac2a780916 (diff) | |
download | cpython-3f5fcc8acce9fa620fe29d15980850e433f1d5c9.zip cpython-3f5fcc8acce9fa620fe29d15980850e433f1d5c9.tar.gz cpython-3f5fcc8acce9fa620fe29d15980850e433f1d5c9.tar.bz2 |
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.
-rw-r--r-- | Modules/_iconv_codec.c | 6 | ||||
-rw-r--r-- | 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; } @@ -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 |