diff options
author | tron <tron> | 2014-11-03 19:39:07 +0000 |
---|---|---|
committer | tron <tron> | 2014-11-03 19:39:07 +0000 |
commit | 43c14a04b1e695d3af6388b6d3c725594df4a867 (patch) | |
tree | 5667930e659bf4dec4f31d40349d11db64579dc8 | |
parent | 8f79f8c969d6ada81e7883072dbefdefa5faea8d (diff) | |
download | pkgsrc-43c14a04b1e695d3af6388b6d3c725594df4a867.tar.gz |
Pullup ticket #4538 - requested by drochner
textproc/libxml2: security update
textproc/py-libxml2: security update
Revisions pulled up:
- textproc/libxml2/Makefile 1.132-1.133
- textproc/libxml2/PLIST 1.45
- textproc/libxml2/distinfo 1.104-1.105
- textproc/libxml2/patches/patch-ba 1.3
- textproc/libxml2/patches/patch-parser.c deleted
- textproc/libxml2/patches/patch-xzlib.c deleted
- textproc/py-libxml2/Makefile 1.50
- textproc/py-libxml2/distinfo 1.31
- textproc/py-libxml2/patches/patch-ab 1.3
- textproc/py-libxml2/patches/patch-ac 1.2
- textproc/py-libxml2/patches/patch-drv_libxml2.py deleted
---
Module Name: pkgsrc
Committed By: drochner
Date: Fri Oct 17 15:46:47 UTC 2014
Modified Files:
pkgsrc/textproc/libxml2: Makefile PLIST distinfo
Removed Files:
pkgsrc/textproc/libxml2/patches: patch-parser.c patch-xzlib.c
Log Message:
update to 2.9.2
-security fixes:
-Fix for CVE-2014-3660 billion laugh variant
-CVE-2014-0191 Do not fetch external parameter entities (was patched
in pkgsrc)
-many bugfixes, doc fixes, cleanup
-added cmake macro
---
Module Name: pkgsrc
Committed By: drochner
Date: Mon Oct 20 19:11:23 UTC 2014
Modified Files:
pkgsrc/textproc/py-libxml2: Makefile distinfo
pkgsrc/textproc/py-libxml2/patches: patch-ab patch-ac
Removed Files:
pkgsrc/textproc/py-libxml2/patches: patch-drv_libxml2.py
Log Message:
sync w/ base pkg
---
Module Name: pkgsrc
Committed By: drochner
Date: Tue Oct 28 18:55:57 UTC 2014
Modified Files:
pkgsrc/textproc/libxml2: Makefile distinfo
Added Files:
pkgsrc/textproc/libxml2/patches: patch-ba
Log Message:
pull in two patches from upstream to fix regressions:
-catalog initialization problem
-problem with entity expansion
This hopefully fixes build failures in KDE3 packages, reported by Joerg.
bump PKGREV
-rw-r--r-- | textproc/libxml2/Makefile | 6 | ||||
-rw-r--r-- | textproc/libxml2/PLIST | 3 | ||||
-rw-r--r-- | textproc/libxml2/distinfo | 11 | ||||
-rw-r--r-- | textproc/libxml2/patches/patch-ba | 27 | ||||
-rw-r--r-- | textproc/libxml2/patches/patch-parser.c | 28 | ||||
-rw-r--r-- | textproc/libxml2/patches/patch-xzlib.c | 54 | ||||
-rw-r--r-- | textproc/py-libxml2/Makefile | 4 | ||||
-rw-r--r-- | textproc/py-libxml2/distinfo | 13 | ||||
-rw-r--r-- | textproc/py-libxml2/patches/patch-ab | 180 | ||||
-rw-r--r-- | textproc/py-libxml2/patches/patch-ac | 6 | ||||
-rw-r--r-- | textproc/py-libxml2/patches/patch-drv_libxml2.py | 40 |
11 files changed, 52 insertions, 320 deletions
diff --git a/textproc/libxml2/Makefile b/textproc/libxml2/Makefile index 587f77e78c1..eaa75dfaf0b 100644 --- a/textproc/libxml2/Makefile +++ b/textproc/libxml2/Makefile @@ -1,7 +1,7 @@ -# $NetBSD: Makefile,v 1.130 2014/07/18 10:29:37 ryoon Exp $ +# $NetBSD: Makefile,v 1.130.2.1 2014/11/03 19:39:07 tron Exp $ -DISTNAME= libxml2-2.9.1 -PKGREVISION= 2 +DISTNAME= libxml2-2.9.2 +PKGREVISION= 1 CATEGORIES= textproc MASTER_SITES= ftp://xmlsoft.org/libxml2/ \ http://xmlsoft.org/sources/ diff --git a/textproc/libxml2/PLIST b/textproc/libxml2/PLIST index 593be8e00f1..6cceb695996 100644 --- a/textproc/libxml2/PLIST +++ b/textproc/libxml2/PLIST @@ -1,4 +1,4 @@ -@comment $NetBSD: PLIST,v 1.44 2013/05/26 09:22:14 adam Exp $ +@comment $NetBSD: PLIST,v 1.44.12.1 2014/11/03 19:39:07 tron Exp $ bin/xml2-config bin/xmlcatalog bin/xmllint @@ -49,6 +49,7 @@ include/libxml2/libxml/xmlwriter.h include/libxml2/libxml/xpath.h include/libxml2/libxml/xpathInternals.h include/libxml2/libxml/xpointer.h +lib/cmake/libxml2/libxml2-config.cmake lib/libxml2.la lib/pkgconfig/libxml-2.0.pc lib/xml2Conf.sh diff --git a/textproc/libxml2/distinfo b/textproc/libxml2/distinfo index 418c6eea7a3..61f8f350e01 100644 --- a/textproc/libxml2/distinfo +++ b/textproc/libxml2/distinfo @@ -1,8 +1,8 @@ -$NetBSD: distinfo,v 1.103 2014/05/10 22:45:42 spz Exp $ +$NetBSD: distinfo,v 1.103.4.1 2014/11/03 19:39:07 tron Exp $ -SHA1 (libxml2-2.9.1.tar.gz) = eb3e2146c6d68aea5c2a4422ed76fe196f933c21 -RMD160 (libxml2-2.9.1.tar.gz) = 257285d9ac070ed9f58666b7bd7c4653651c871b -Size (libxml2-2.9.1.tar.gz) = 5172503 bytes +SHA1 (libxml2-2.9.2.tar.gz) = f46a37ea6d869f702e03f393c376760f3cbee673 +RMD160 (libxml2-2.9.2.tar.gz) = 969b4ed8782f455fd4a6ca1c1b4ffa7651090070 +Size (libxml2-2.9.2.tar.gz) = 5444991 bytes SHA1 (patch-aa) = 589a279df1a5fac8b1b2dbd0018a1bbf0c5ab169 SHA1 (patch-ab) = 11567fe9a3fde42f3901fd4ab4620bf845fe634b SHA1 (patch-ac) = 101cd554fd22e8e9817e21591240eb784b1219b5 @@ -10,6 +10,5 @@ SHA1 (patch-ad) = cd45da492b02cce9983c46762839f68b8b1e0177 SHA1 (patch-ae) = 2823276343f65c7d244d22e548faa6a517445819 SHA1 (patch-ag) = 19afd69713298ecbd247ba733a7c0c13464ae572 SHA1 (patch-aj) = 988c30b4b09a1cbaf9e7db02bb8981da0f1beaa7 -SHA1 (patch-parser.c) = 06b448b1e627cbe5400524f5f980faa87b9ad4fe +SHA1 (patch-ba) = 78097bb871cc614c8d95a53d825542d23e113192 SHA1 (patch-threads.c) = 70bb0a779dff6611f755128d609f82360a492f9a -SHA1 (patch-xzlib.c) = 1fa0b97f3fb52c40c4df3933f269b9b0bbadb0ff diff --git a/textproc/libxml2/patches/patch-ba b/textproc/libxml2/patches/patch-ba new file mode 100644 index 00000000000..6fd1746e9b6 --- /dev/null +++ b/textproc/libxml2/patches/patch-ba @@ -0,0 +1,27 @@ +$NetBSD: patch-ba,v 1.3.2.2 2014/11/03 19:39:07 tron Exp $ + +https://git.gnome.org/browse/libxml2/commit/?id=f65128f38289d77ff322d63aef2858cc0a819c34 +https://git.gnome.org/browse/libxml2/commit/?id=72a46a519ce7326d9a00f0b6a7f2a8e958cd1675 + +--- parser.c.orig 2014-10-16 05:57:40.000000000 +0000 ++++ parser.c +@@ -7235,7 +7235,8 @@ xmlParseReference(xmlParserCtxtPtr ctxt) + * far more secure as the parser will only process data coming from + * the document entity by default. + */ +- if ((ent->checked == 0) && ++ if (((ent->checked == 0) || ++ ((ent->children == NULL) && (ctxt->options & XML_PARSE_NOENT))) && + ((ent->etype != XML_EXTERNAL_GENERAL_PARSED_ENTITY) || + (ctxt->options & (XML_PARSE_NOENT | XML_PARSE_DTDVALID)))) { + unsigned long oldnbent = ctxt->nbentities; +@@ -14830,9 +14831,6 @@ xmlInitParser(void) { + #ifdef LIBXML_XPATH_ENABLED + xmlXPathInit(); + #endif +-#ifdef LIBXML_CATALOG_ENABLED +- xmlInitializeCatalog(); +-#endif + xmlParserInitialized = 1; + #ifdef LIBXML_THREAD_ENABLED + } diff --git a/textproc/libxml2/patches/patch-parser.c b/textproc/libxml2/patches/patch-parser.c deleted file mode 100644 index 27171cb344f..00000000000 --- a/textproc/libxml2/patches/patch-parser.c +++ /dev/null @@ -1,28 +0,0 @@ -$NetBSD: patch-parser.c,v 1.1 2014/05/10 22:45:42 spz Exp $ - -Do not fetch external parameter entities (CVE-2014-0191) -https://git.gnome.org/browse/libxml2/commit/?id=9cd1c3cfbd32655d60572c0a413e017260c854df - ---- parser.c.orig 2013-04-16 13:39:18.000000000 +0000 -+++ parser.c -@@ -2595,6 +2595,20 @@ xmlParserHandlePEReference(xmlParserCtxt - xmlCharEncoding enc; - - /* -+ * Note: external parsed entities will not be loaded, it is -+ * not required for a non-validating parser, unless the -+ * option of validating, or substituting entities were -+ * given. Doing so is far more secure as the parser will -+ * only process data coming from the document entity by -+ * default. -+ */ -+ if ((entity->etype == XML_EXTERNAL_PARAMETER_ENTITY) && -+ ((ctxt->options & XML_PARSE_NOENT) == 0) && -+ ((ctxt->options & XML_PARSE_DTDVALID) == 0) && -+ (ctxt->validate == 0)) -+ return; -+ -+ /* - * handle the extra spaces added before and after - * c.f. http://www.w3.org/TR/REC-xml#as-PE - * this is done independently. diff --git a/textproc/libxml2/patches/patch-xzlib.c b/textproc/libxml2/patches/patch-xzlib.c deleted file mode 100644 index 3fe047ec935..00000000000 --- a/textproc/libxml2/patches/patch-xzlib.c +++ /dev/null @@ -1,54 +0,0 @@ -$NetBSD: patch-xzlib.c,v 1.1 2013/11/25 23:30:23 wiz Exp $ - -Fix bug in gzip decompression. -https://bugzilla.gnome.org/show_bug.cgi?id=712528 - ---- xzlib.c.orig 2013-02-27 05:08:52.000000000 +0000 -+++ xzlib.c -@@ -245,6 +245,20 @@ xz_avail(xz_statep state) - return 0; - } - -+#ifdef HAVE_ZLIB_H -+static int -+xz_avail_zstrm(xz_statep state) -+{ -+ int ret; -+ state->strm.avail_in = state->zstrm.avail_in; -+ state->strm.next_in = state->zstrm.next_in; -+ ret = xz_avail(state); -+ state->zstrm.avail_in = (uInt) state->strm.avail_in; -+ state->zstrm.next_in = (Bytef *) state->strm.next_in; -+ return ret; -+} -+#endif -+ - static int - is_format_xz(xz_statep state) - { -@@ -314,6 +328,10 @@ is_format_lzma(xz_statep state) - #define NEXT() ((strm->avail_in == 0 && xz_avail(state) == -1) ? -1 : \ - (strm->avail_in == 0 ? -1 : \ - (strm->avail_in--, *(strm->next_in)++))) -+/* Same thing, but from zstrm */ -+#define NEXTZ() ((strm->avail_in == 0 && xz_avail_zstrm(state) == -1) ? -1 : \ -+ (strm->avail_in == 0 ? -1 : \ -+ (strm->avail_in--, *(strm->next_in)++))) - - /* Get a four-byte little-endian integer and return 0 on success and the value - in *ret. Otherwise -1 is returned and *ret is not modified. */ -@@ -324,10 +342,10 @@ gz_next4(xz_statep state, unsigned long - unsigned long val; - z_streamp strm = &(state->zstrm); - -- val = NEXT(); -- val += (unsigned) NEXT() << 8; -- val += (unsigned long) NEXT() << 16; -- ch = NEXT(); -+ val = NEXTZ(); -+ val += (unsigned) NEXTZ() << 8; -+ val += (unsigned long) NEXTZ() << 16; -+ ch = NEXTZ(); - if (ch == -1) - return -1; - val += (unsigned long) ch << 24; diff --git a/textproc/py-libxml2/Makefile b/textproc/py-libxml2/Makefile index 398af118ff2..960435d4281 100644 --- a/textproc/py-libxml2/Makefile +++ b/textproc/py-libxml2/Makefile @@ -1,6 +1,6 @@ -# $NetBSD: Makefile,v 1.49 2014/03/13 11:08:52 jperkin Exp $ +# $NetBSD: Makefile,v 1.49.6.1 2014/11/03 19:39:08 tron Exp $ -DISTNAME= libxml2-2.9.1 +DISTNAME= libxml2-2.9.2 PKGNAME= ${PYPKGPREFIX}-${DISTNAME} CATEGORIES= textproc python MASTER_SITES= ftp://xmlsoft.org/libxml2/ diff --git a/textproc/py-libxml2/distinfo b/textproc/py-libxml2/distinfo index a24d897ddfd..68cac4e7388 100644 --- a/textproc/py-libxml2/distinfo +++ b/textproc/py-libxml2/distinfo @@ -1,9 +1,8 @@ -$NetBSD: distinfo,v 1.30 2013/10/03 07:52:32 prlw1 Exp $ +$NetBSD: distinfo,v 1.30.8.1 2014/11/03 19:39:08 tron Exp $ -SHA1 (libxml2-2.9.1.tar.gz) = eb3e2146c6d68aea5c2a4422ed76fe196f933c21 -RMD160 (libxml2-2.9.1.tar.gz) = 257285d9ac070ed9f58666b7bd7c4653651c871b -Size (libxml2-2.9.1.tar.gz) = 5172503 bytes +SHA1 (libxml2-2.9.2.tar.gz) = f46a37ea6d869f702e03f393c376760f3cbee673 +RMD160 (libxml2-2.9.2.tar.gz) = 969b4ed8782f455fd4a6ca1c1b4ffa7651090070 +Size (libxml2-2.9.2.tar.gz) = 5444991 bytes SHA1 (patch-aa) = 54ce6f91dd29144f22247d15093d6d273f5f433b -SHA1 (patch-ab) = 793db9f20df8bba2fbee61abf4239a879c182aa7 -SHA1 (patch-ac) = b2e8fac8221ae9fb00b3de33441dd83cd7422204 -SHA1 (patch-drv_libxml2.py) = 95b8b71bb619c25f092019a0f950b4416cd80738 +SHA1 (patch-ab) = fcf0c129f6c6a563806882271d16f57c1bc61d54 +SHA1 (patch-ac) = 4d14006810239491ecda6967dee2087eb382ba08 diff --git a/textproc/py-libxml2/patches/patch-ab b/textproc/py-libxml2/patches/patch-ab index ef8f655b0b8..4b81d00a231 100644 --- a/textproc/py-libxml2/patches/patch-ab +++ b/textproc/py-libxml2/patches/patch-ab @@ -1,37 +1,11 @@ -$NetBSD: patch-ab,v 1.2 2013/10/03 07:52:32 prlw1 Exp $ +$NetBSD: patch-ab,v 1.2.8.1 2014/11/03 19:39:08 tron Exp $ - Fix build under Mac OS X (reorder os.path.join(ROOT,'include') ) -- White space changes for python 3 indentation (commit 4b61cf61) ---- setup.py.orig 2013-10-02 21:20:43.000000000 +0000 +--- setup.py.orig 2014-10-16 07:35:21.000000000 +0000 +++ setup.py -@@ -6,14 +6,14 @@ import sys, os - from distutils.core import setup, Extension - - # Below ROOT, we expect to find include, include/libxml2, lib and bin. --# On *nix, it is not needed (but should not harm), -+# On *nix, it is not needed (but should not harm), - # on Windows, it is set by configure.js. --ROOT = r'/usr' -+ROOT = r'/usr' - - # Thread-enabled libxml2 - with_threads = 1 - --# If this flag is set (windows only), -+# If this flag is set (windows only), - # a private copy of the dlls are included in the package. - # If this flag is not set, the libxml2 and libxslt - # dlls must be found somewhere in the PATH at runtime. -@@ -51,15 +51,15 @@ else: - libraryPrefix = '' - platformLibs = ["m","z"] - --# those are examined to find -+# those are examined to find - # - libxml2/libxml/tree.h --# - iconv.h -+# - iconv.h +@@ -56,10 +56,10 @@ else: + # - iconv.h # - libxslt/xsltconfig.h includes_dir = [ +os.path.join(ROOT,'include'), @@ -42,149 +16,3 @@ $NetBSD: patch-ab,v 1.2 2013/10/03 07:52:32 prlw1 Exp $ HOME ]; -@@ -67,7 +67,7 @@ xml_includes="" - for dir in includes_dir: - if not missing(dir + "/libxml2/libxml/tree.h"): - xml_includes=dir + "/libxml2" -- break; -+ break; - - if xml_includes == "": - print("failed to find headers for libxml2: update includes_dir") -@@ -77,7 +77,7 @@ iconv_includes="" - for dir in includes_dir: - if not missing(dir + "/iconv.h"): - iconv_includes=dir -- break; -+ break; - - if iconv_includes == "": - print("failed to find headers for libiconv: update includes_dir") -@@ -90,22 +90,22 @@ os.path.join(ROOT,'lib'), - - xml_files = ["libxml2-api.xml", "libxml2-python-api.xml", - "libxml.c", "libxml.py", "libxml_wrap.h", "types.c", -- "xmlgenerator.py", "README", "TODO", "drv_libxml2.py"] -+ "xmlgenerator.py", "README", "TODO", "drv_libxml2.py"] - - xslt_files = ["libxslt-api.xml", "libxslt-python-api.xml", - "libxslt.c", "libxsl.py", "libxslt_wrap.h", -- "xsltgenerator.py"] -+ "xsltgenerator.py"] - - if missing("libxml2-py.c") or missing("libxml2.py"): - try: -- try: -- import xmlgenerator -- except: -- import generator -+ try: -+ import xmlgenerator -+ except: -+ import generator - except: -- print("failed to find and generate stubs for libxml2, aborting ...") -- print(sys.exc_info()[0], sys.exc_info()[1]) -- sys.exit(1) -+ print("failed to find and generate stubs for libxml2, aborting ...") -+ print(sys.exc_info()[0], sys.exc_info()[1]) -+ sys.exit(1) - - head = open("libxml.py", "r") - generated = open("libxml2class.py", "r") -@@ -116,7 +116,7 @@ if missing("libxml2-py.c") or missing("l - else: - result.write(line) - for line in generated.readlines(): -- result.write(line) -+ result.write(line) - head.close() - generated.close() - result.close() -@@ -126,39 +126,39 @@ if missing("libxslt-py.c") or missing("l - if missing("xsltgenerator.py") or missing("libxslt-api.xml"): - print("libxslt stub generator not found, libxslt not built") - else: -- try: -- import xsltgenerator -- except: -- print("failed to generate stubs for libxslt, aborting ...") -- print(sys.exc_info()[0], sys.exc_info()[1]) -- else: -- head = open("libxsl.py", "r") -- generated = open("libxsltclass.py", "r") -- result = open("libxslt.py", "w") -- for line in head.readlines(): -+ try: -+ import xsltgenerator -+ except: -+ print("failed to generate stubs for libxslt, aborting ...") -+ print(sys.exc_info()[0], sys.exc_info()[1]) -+ else: -+ head = open("libxsl.py", "r") -+ generated = open("libxsltclass.py", "r") -+ result = open("libxslt.py", "w") -+ for line in head.readlines(): - if WITHDLLS: - result.write(altImport(line)) - else: - result.write(line) -- for line in generated.readlines(): -- result.write(line) -- head.close() -- generated.close() -- result.close() -- with_xslt=1 -+ for line in generated.readlines(): -+ result.write(line) -+ head.close() -+ generated.close() -+ result.close() -+ with_xslt=1 - else: - with_xslt=1 - - if with_xslt == 1: - xslt_includes="" - for dir in includes_dir: -- if not missing(dir + "/libxslt/xsltconfig.h"): -- xslt_includes=dir + "/libxslt" -- break; -+ if not missing(dir + "/libxslt/xsltconfig.h"): -+ xslt_includes=dir + "/libxslt" -+ break; - - if xslt_includes == "": -- print("failed to find headers for libxslt: update includes_dir") -- with_xslt = 0 -+ print("failed to find headers for libxslt: update includes_dir") -+ with_xslt = 0 - - - descr = "libxml2 package" -@@ -194,11 +194,11 @@ if with_xslt == 1: - - - extens=[Extension('libxml2mod', c_files, include_dirs=includes, -- library_dirs=libdirs, -- libraries=libs, define_macros=macros)] -+ library_dirs=libdirs, -+ libraries=libs, define_macros=macros)] - if with_xslt == 1: - extens.append(Extension('libxsltmod', xslt_c_files, include_dirs=includes, -- library_dirs=libdirs, -+ library_dirs=libdirs, - libraries=libs, define_macros=macros)) - - if missing("MANIFEST"): -@@ -208,8 +208,8 @@ if missing("MANIFEST"): - for file in xml_files: - manifest.write(file + "\n") - if with_xslt == 1: -- for file in xslt_files: -- manifest.write(file + "\n") -+ for file in xslt_files: -+ manifest.write(file + "\n") - manifest.close() - - if WITHDLLS: diff --git a/textproc/py-libxml2/patches/patch-ac b/textproc/py-libxml2/patches/patch-ac index e0f0ccd9b0d..845f164f3a7 100644 --- a/textproc/py-libxml2/patches/patch-ac +++ b/textproc/py-libxml2/patches/patch-ac @@ -1,8 +1,8 @@ -$NetBSD: patch-ac,v 1.1 2013/05/28 22:26:13 drochner Exp $ +$NetBSD: patch-ac,v 1.1.12.1 2014/11/03 19:39:08 tron Exp $ fix for Python-2.6 ---- libxml_wrap.h.orig 2013-04-02 02:25:28.000000000 +0000 +--- libxml_wrap.h.orig 2014-10-03 09:00:54.000000000 +0000 +++ libxml_wrap.h @@ -28,7 +28,6 @@ * and don't use Capsule but CObjects @@ -13,8 +13,8 @@ fix for Python-2.6 #define PyBytes_Size PyString_Size #define PyBytes_AsString PyString_AsString @@ -40,7 +39,6 @@ + #define PyCapsule_CheckExact PyCObject_Check #define PyCapsule_GetPointer(o, n) PyCObject_GetDesc((o)) - #endif -#endif diff --git a/textproc/py-libxml2/patches/patch-drv_libxml2.py b/textproc/py-libxml2/patches/patch-drv_libxml2.py deleted file mode 100644 index 700ae4eac23..00000000000 --- a/textproc/py-libxml2/patches/patch-drv_libxml2.py +++ /dev/null @@ -1,40 +0,0 @@ -$NetBSD: patch-drv_libxml2.py,v 1.1 2013/10/03 07:52:32 prlw1 Exp $ - -Python 3 fix -commit 6c9c611b - ---- drv_libxml2.py.orig 2009-07-30 15:24:34.000000000 +0000 -+++ drv_libxml2.py -@@ -34,12 +34,20 @@ TODO - - """ - --__author__ = u"Stéphane Bidoul <sbi@skynet.be>" -+__author__ = "Stéphane Bidoul <sbi@skynet.be>" - __version__ = "0.3" - -+import sys - import codecs --from types import StringType, UnicodeType --StringTypes = (StringType,UnicodeType) -+ -+if sys.version < "3": -+ __author__ = codecs.unicode_escape_decode(__author__)[0] -+ -+ from types import StringType, UnicodeType -+ StringTypes = (StringType,UnicodeType) -+ -+else: -+ StringTypes = (str) - - from xml.sax._exceptions import * - from xml.sax import xmlreader, saxutils -@@ -65,7 +73,7 @@ def _d(s): - - try: - import libxml2 --except ImportError, e: -+except ImportError as e: - raise SAXReaderNotAvailable("libxml2 not available: " \ - "import error was: %s" % e) - |