summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2003-02-28 17:21:39 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2003-02-28 17:21:39 (GMT)
commit3f5fcc8acce9fa620fe29d15980850e433f1d5c9 (patch)
treec0e81780a6516e2b6935b7b4df29d6b0e9c7b95c
parentedaa071eb45cecbcf4d74b886bfac1ac2a780916 (diff)
downloadcpython-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.c6
-rw-r--r--setup.py8
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