diff options
-rw-r--r-- | abs/core/libxml2/PKGBUILD | 14 | ||||
-rw-r--r-- | abs/core/libxml2/libxml2-2.9.8-python3-unicode-errors.patch | 34 |
2 files changed, 44 insertions, 4 deletions
diff --git a/abs/core/libxml2/PKGBUILD b/abs/core/libxml2/PKGBUILD index 594b4ef..c369048 100644 --- a/abs/core/libxml2/PKGBUILD +++ b/abs/core/libxml2/PKGBUILD @@ -4,18 +4,20 @@ # Contributor: John Proctor <jproctor@prium.net> pkgname=libxml2 -pkgver=2.9.9 -pkgrel=1 +pkgver=2.9.10 +pkgrel=2 pkgdesc='XML parsing library, version 2' url='http://www.xmlsoft.org/' arch=(x86_64) license=(MIT) depends=(zlib readline ncurses xz icu) makedepends=(python2 python git) -_commit=f8a8c1f59db355b46962577e7b74f1a1e8149dc6 # tags/v2.9.9^0 -source=("git+https://git.gnome.org/browse/libxml2#commit=$_commit" +_commit=41a34e1f4ffae2ce401600dbb5fe43f8fe402641 # tags/v2.9.10^0 +source=("git+https://gitlab.gnome.org/GNOME/libxml2.git#commit=$_commit" + libxml2-2.9.8-python3-unicode-errors.patch https://www.w3.org/XML/Test/xmlts20130923.tar.gz) sha256sums=('SKIP' + '37eb81a8ec6929eed1514e891bff2dd05b450bcf0c712153880c485b7366c17c' '9b61db9f5dbffa545f4b8d78422167083a8568c59bd1129f94138f936cf6fc1f') pkgver() { @@ -26,6 +28,10 @@ pkgver() { prepare() { mkdir build-py{2,3} cd $pkgname + + # From https://src.fedoraproject.org/rpms/libxml2/tree/master + patch -Np1 -i ../libxml2-2.9.8-python3-unicode-errors.patch + NOCONFIGURE=1 ./autogen.sh } diff --git a/abs/core/libxml2/libxml2-2.9.8-python3-unicode-errors.patch b/abs/core/libxml2/libxml2-2.9.8-python3-unicode-errors.patch new file mode 100644 index 0000000..e87dcde --- /dev/null +++ b/abs/core/libxml2/libxml2-2.9.8-python3-unicode-errors.patch @@ -0,0 +1,34 @@ +Index: libxml2-2.9.5/python/libxml.c +=================================================================== +--- libxml2-2.9.5.orig/python/libxml.c ++++ libxml2-2.9.5/python/libxml.c +@@ -1620,6 +1620,7 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU + PyObject *message; + PyObject *result; + char str[1000]; ++ unsigned char *ptr = (unsigned char *)str; + + #ifdef DEBUG_ERROR + printf("libxml_xmlErrorFuncHandler(%p, %s, ...) called\n", ctx, msg); +@@ -1636,12 +1637,20 @@ libxml_xmlErrorFuncHandler(ATTRIBUTE_UNU + str[999] = 0; + va_end(ap); + ++#if PY_MAJOR_VERSION >= 3 ++ /* Ensure the error string doesn't start at UTF8 continuation. */ ++ while (*ptr && (*ptr & 0xc0) == 0x80) ++ ptr++; ++#endif ++ + list = PyTuple_New(2); + PyTuple_SetItem(list, 0, libxml_xmlPythonErrorFuncCtxt); + Py_XINCREF(libxml_xmlPythonErrorFuncCtxt); +- message = libxml_charPtrConstWrap(str); ++ message = libxml_charPtrConstWrap(ptr); + PyTuple_SetItem(list, 1, message); + result = PyEval_CallObject(libxml_xmlPythonErrorFuncHandler, list); ++ /* Forget any errors caused in the error handler. */ ++ PyErr_Clear(); + Py_XDECREF(list); + Py_XDECREF(result); + } |