Radix cross Linux

The main Radix cross Linux repository contains the build scripts of packages, which have the most complete and common functionality for desktop machines

452 Commits   2 Branches   1 Tag
Index: radix-1.9/Wayland/wayland/1.21.0/Makefile
===================================================================
--- radix-1.9/Wayland/wayland/1.21.0/Makefile	(revision 120)
+++ radix-1.9/Wayland/wayland/1.21.0/Makefile	(revision 121)
@@ -57,7 +57,7 @@
 
 REQUIRES           = libs/expat/2.5.0
 REQUIRES          += libs/libffi/3.4.4
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/Wayland/wayland/1.21.0-ppc32/Makefile
===================================================================
--- radix-1.9/Wayland/wayland/1.21.0-ppc32/Makefile	(revision 120)
+++ radix-1.9/Wayland/wayland/1.21.0-ppc32/Makefile	(revision 121)
@@ -18,7 +18,7 @@
 REQUIRES           = Wayland/wayland/1.21.0
 REQUIRES          += libs/expat/2.5.0-ppc32
 REQUIRES          += libs/libffi/3.4.4-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/Wayland/wayland/1.21.0-x86_32/Makefile
===================================================================
--- radix-1.9/Wayland/wayland/1.21.0-x86_32/Makefile	(revision 120)
+++ radix-1.9/Wayland/wayland/1.21.0-x86_32/Makefile	(revision 121)
@@ -15,7 +15,7 @@
 REQUIRES           = Wayland/wayland/1.21.0
 REQUIRES          += libs/expat/2.5.0-x86_32
 REQUIRES          += libs/libffi/3.4.4-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/X11/app/conky/1.18.3/Makefile
===================================================================
--- radix-1.9/X11/app/conky/1.18.3/Makefile	(revision 120)
+++ radix-1.9/X11/app/conky/1.18.3/Makefile	(revision 121)
@@ -63,7 +63,7 @@
 REQUIRES          += X11/libs/imlib2/1.11.0
 REQUIRES          += X11/libs/cairo/1.17.8
 REQUIRES          += X11/media/pulseaudio/16.1
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/ncurses/6.3
 REQUIRES          += net/curl/7.75.0
 REQUIRES          += dev/lua/5.4.2
Index: radix-1.9/X11/app/gnome-calculator/44.0/Makefile
===================================================================
--- radix-1.9/X11/app/gnome-calculator/44.0/Makefile	(revision 120)
+++ radix-1.9/X11/app/gnome-calculator/44.0/Makefile	(revision 121)
@@ -59,7 +59,7 @@
 REQUIRES          += X11/libs/libadwaita/1.3.2
 REQUIRES          += X11/libs/gtksourceview/5.8.0
 REQUIRES          += libs/libsoup3/3.4.2
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/libgee/0.20.6
 REQUIRES          += libs/dconf/0.40.0
 REQUIRES          += libs/mpc/1.2.1
Index: radix-1.9/X11/app/openbox/3.6.1/Makefile
===================================================================
--- radix-1.9/X11/app/openbox/3.6.1/Makefile	(revision 120)
+++ radix-1.9/X11/app/openbox/3.6.1/Makefile	(revision 121)
@@ -59,7 +59,7 @@
 REQUIRES          += X11/X.org/lib/libXinerama/1.1.5
 REQUIRES          += X11/libs/imlib2/1.11.0
 REQUIRES          += X11/libs/startup-notification/0.12
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/X11/libs/at-spi2-core/2.47.1/Makefile
===================================================================
--- radix-1.9/X11/libs/at-spi2-core/2.47.1/Makefile	(revision 120)
+++ radix-1.9/X11/libs/at-spi2-core/2.47.1/Makefile	(revision 121)
@@ -57,7 +57,7 @@
 
 REQUIRES           = app/dbus/1.13.18
 REQUIRES          += libs/glib2/2.76.0
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += X11/X.org/lib/libXtst/1.2.4
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/libs/at-spi2-core/2.47.1-ppc32/Makefile
===================================================================
--- radix-1.9/X11/libs/at-spi2-core/2.47.1-ppc32/Makefile	(revision 120)
+++ radix-1.9/X11/libs/at-spi2-core/2.47.1-ppc32/Makefile	(revision 121)
@@ -18,7 +18,7 @@
 REQUIRES           = X11/libs/at-spi2-core/2.47.1
 REQUIRES          += app/dbus/1.13.18-ppc32
 REQUIRES          += libs/glib2/2.76.0-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 REQUIRES          += X11/X.org/lib/libXtst/1.2.4-ppc32
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/libs/at-spi2-core/2.47.1-x86_32/Makefile
===================================================================
--- radix-1.9/X11/libs/at-spi2-core/2.47.1-x86_32/Makefile	(revision 120)
+++ radix-1.9/X11/libs/at-spi2-core/2.47.1-x86_32/Makefile	(revision 121)
@@ -15,7 +15,7 @@
 REQUIRES           = X11/libs/at-spi2-core/2.47.1
 REQUIRES          += app/dbus/1.13.18-x86_32
 REQUIRES          += libs/glib2/2.76.0-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 REQUIRES          += X11/X.org/lib/libXtst/1.2.4-x86_32
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/X11/libs/gst-plugins-bad/1.22.0/Makefile
===================================================================
--- radix-1.9/X11/libs/gst-plugins-bad/1.22.0/Makefile	(revision 120)
+++ radix-1.9/X11/libs/gst-plugins-bad/1.22.0/Makefile	(revision 121)
@@ -66,7 +66,7 @@
 REQUIRES          += libs/libgudev/236
 REQUIRES          += libs/sbc/2.0
 REQUIRES          += libs/libwebp/1.2.2
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/libusb/1.0.24
 REQUIRES          += media/gsm/1.0.22
 REQUIRES          += media/libass/0.17.0
Index: radix-1.9/X11/libs/gst-plugins-bad/1.22.0-ppc32/Makefile
===================================================================
--- radix-1.9/X11/libs/gst-plugins-bad/1.22.0-ppc32/Makefile	(revision 120)
+++ radix-1.9/X11/libs/gst-plugins-bad/1.22.0-ppc32/Makefile	(revision 121)
@@ -27,7 +27,7 @@
 REQUIRES          += libs/libgudev/236-ppc32
 REQUIRES          += libs/sbc/2.0-ppc32
 REQUIRES          += libs/libwebp/1.2.2-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 REQUIRES          += libs/libusb/1.0.24-ppc32
 REQUIRES          += media/gsm/1.0.22-ppc32
 REQUIRES          += media/libass/0.17.0-ppc32
Index: radix-1.9/X11/libs/gst-plugins-bad/1.22.0-x86_32/Makefile
===================================================================
--- radix-1.9/X11/libs/gst-plugins-bad/1.22.0-x86_32/Makefile	(revision 120)
+++ radix-1.9/X11/libs/gst-plugins-bad/1.22.0-x86_32/Makefile	(revision 121)
@@ -24,7 +24,7 @@
 REQUIRES          += libs/libgudev/236-x86_32
 REQUIRES          += libs/sbc/2.0-x86_32
 REQUIRES          += libs/libwebp/1.2.2-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 REQUIRES          += libs/libusb/1.0.24-x86_32
 REQUIRES          += media/gsm/1.0.22-x86_32
 REQUIRES          += media/libass/0.17.0-x86_32
Index: radix-1.9/X11/libs/gst-plugins-good/1.22.0/Makefile
===================================================================
--- radix-1.9/X11/libs/gst-plugins-good/1.22.0/Makefile	(revision 120)
+++ radix-1.9/X11/libs/gst-plugins-good/1.22.0/Makefile	(revision 121)
@@ -72,7 +72,7 @@
 REQUIRES          += libs/libiec61883/1.2.0
 REQUIRES          += libs/libjpeg-turbo/2.1.2
 REQUIRES          += libs/libraw1394/2.1.2
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += media/flac/1.4.2
 REQUIRES          += media/jack2/1.9.21
 REQUIRES          += media/lame/3.100
Index: radix-1.9/X11/libs/gst-plugins-good/1.22.0-ppc32/Makefile
===================================================================
--- radix-1.9/X11/libs/gst-plugins-good/1.22.0-ppc32/Makefile	(revision 120)
+++ radix-1.9/X11/libs/gst-plugins-good/1.22.0-ppc32/Makefile	(revision 121)
@@ -33,7 +33,7 @@
 REQUIRES          += libs/libiec61883/1.2.0-ppc32
 REQUIRES          += libs/libjpeg-turbo/2.1.2-ppc32
 REQUIRES          += libs/libraw1394/2.1.2-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 REQUIRES          += media/flac/1.4.2-ppc32
 REQUIRES          += media/jack2/1.9.21-ppc32
 REQUIRES          += media/lame/3.100-ppc32
Index: radix-1.9/X11/libs/gst-plugins-good/1.22.0-x86_32/Makefile
===================================================================
--- radix-1.9/X11/libs/gst-plugins-good/1.22.0-x86_32/Makefile	(revision 120)
+++ radix-1.9/X11/libs/gst-plugins-good/1.22.0-x86_32/Makefile	(revision 121)
@@ -30,7 +30,7 @@
 REQUIRES          += libs/libiec61883/1.2.0-x86_32
 REQUIRES          += libs/libjpeg-turbo/2.1.2-x86_32
 REQUIRES          += libs/libraw1394/2.1.2-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 REQUIRES          += media/flac/1.4.2-x86_32
 REQUIRES          += media/jack2/1.9.21-x86_32
 REQUIRES          += media/lame/3.100-x86_32
Index: radix-1.9/X11/libs/gtksourceview/5.8.0/Makefile
===================================================================
--- radix-1.9/X11/libs/gtksourceview/5.8.0/Makefile	(revision 120)
+++ radix-1.9/X11/libs/gtksourceview/5.8.0/Makefile	(revision 121)
@@ -59,7 +59,7 @@
 REQUIRES          += X11/libs/cairo/1.17.8
 REQUIRES          += X11/libs/pango/1.50.12
 REQUIRES          += libs/pcre2/10.36
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/X11/libs/libxkbcommon/1.5.0/Makefile
===================================================================
--- radix-1.9/X11/libs/libxkbcommon/1.5.0/Makefile	(revision 120)
+++ radix-1.9/X11/libs/libxkbcommon/1.5.0/Makefile	(revision 121)
@@ -57,7 +57,7 @@
 
 REQUIRES           = X11/X.org/data/xkeyboard-config/2.38
 REQUIRES          += Wayland/wayland/1.21.0
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/X11/libs/libxkbcommon/1.5.0-ppc32/Makefile
===================================================================
--- radix-1.9/X11/libs/libxkbcommon/1.5.0-ppc32/Makefile	(revision 120)
+++ radix-1.9/X11/libs/libxkbcommon/1.5.0-ppc32/Makefile	(revision 121)
@@ -17,7 +17,7 @@
 
 REQUIRES           = X11/libs/libxkbcommon/1.5.0
 REQUIRES          += Wayland/wayland/1.21.0-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/X11/libs/libxkbcommon/1.5.0-x86_32/Makefile
===================================================================
--- radix-1.9/X11/libs/libxkbcommon/1.5.0-x86_32/Makefile	(revision 120)
+++ radix-1.9/X11/libs/libxkbcommon/1.5.0-x86_32/Makefile	(revision 121)
@@ -14,7 +14,7 @@
 
 REQUIRES           = X11/libs/libxkbcommon/1.5.0
 REQUIRES          += Wayland/wayland/1.21.0-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/X11/libs/mesa/22.3.4/Makefile
===================================================================
--- radix-1.9/X11/libs/mesa/22.3.4/Makefile	(revision 120)
+++ radix-1.9/X11/libs/mesa/22.3.4/Makefile	(revision 121)
@@ -59,7 +59,7 @@
 REQUIRES           = dev/gcc/12.2.0
 endif
 REQUIRES          += libs/expat/2.5.0
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/eudev/3.2.10
 REQUIRES          += libs/elfutils/0.187
 REQUIRES          += media/libomxil-bellagio/0.9.3
Index: radix-1.9/X11/libs/mesa/22.3.4-ppc32/Makefile
===================================================================
--- radix-1.9/X11/libs/mesa/22.3.4-ppc32/Makefile	(revision 120)
+++ radix-1.9/X11/libs/mesa/22.3.4-ppc32/Makefile	(revision 121)
@@ -17,7 +17,7 @@
 
 REQUIRES           = X11/libs/mesa/22.3.4
 REQUIRES          += libs/expat/2.5.0-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 REQUIRES          += libs/eudev/3.2.10-ppc32
 REQUIRES          += libs/elfutils/0.187-ppc32
 REQUIRES          += media/libomxil-bellagio/0.9.3-ppc32
Index: radix-1.9/X11/libs/mesa/22.3.4-x86_32/Makefile
===================================================================
--- radix-1.9/X11/libs/mesa/22.3.4-x86_32/Makefile	(revision 120)
+++ radix-1.9/X11/libs/mesa/22.3.4-x86_32/Makefile	(revision 121)
@@ -14,7 +14,7 @@
 
 REQUIRES           = X11/libs/mesa/22.3.4
 REQUIRES          += libs/expat/2.5.0-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 REQUIRES          += libs/eudev/3.2.10-x86_32
 REQUIRES          += libs/elfutils/0.187-x86_32
 REQUIRES          += media/libomxil-bellagio/0.9.3-x86_32
Index: radix-1.9/X11/media/audacious-plugins/4.3/Makefile
===================================================================
--- radix-1.9/X11/media/audacious-plugins/4.3/Makefile	(revision 120)
+++ radix-1.9/X11/media/audacious-plugins/4.3/Makefile	(revision 121)
@@ -66,7 +66,7 @@
 REQUIRES          += media/faad2/2.10.1
 REQUIRES          += media/flac/1.4.2
 REQUIRES          += media/lame/3.100
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += net/curl/7.75.0
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/fontconfig/2.13.95/Makefile
===================================================================
--- radix-1.9/app/fontconfig/2.13.95/Makefile	(revision 120)
+++ radix-1.9/app/fontconfig/2.13.95/Makefile	(revision 121)
@@ -57,7 +57,7 @@
 
 REQUIRES           = libs/expat/2.5.0
 REQUIRES          += libs/freetype/2.11.1
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/app/fontconfig/2.13.95-ppc32/Makefile
===================================================================
--- radix-1.9/app/fontconfig/2.13.95-ppc32/Makefile	(revision 120)
+++ radix-1.9/app/fontconfig/2.13.95-ppc32/Makefile	(revision 121)
@@ -18,7 +18,7 @@
 REQUIRES           = app/fontconfig/2.13.95
 REQUIRES          += libs/expat/2.5.0-ppc32
 REQUIRES          += libs/freetype/2.11.1-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/app/fontconfig/2.13.95-x86_32/Makefile
===================================================================
--- radix-1.9/app/fontconfig/2.13.95-x86_32/Makefile	(revision 120)
+++ radix-1.9/app/fontconfig/2.13.95-x86_32/Makefile	(revision 121)
@@ -15,7 +15,7 @@
 REQUIRES           = app/fontconfig/2.13.95
 REQUIRES          += libs/expat/2.5.0-x86_32
 REQUIRES          += libs/freetype/2.11.1-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/app/gettext/0.21-tools/Makefile
===================================================================
--- radix-1.9/app/gettext/0.21-tools/Makefile	(revision 120)
+++ radix-1.9/app/gettext/0.21-tools/Makefile	(revision 121)
@@ -57,7 +57,7 @@
 
 REQUIRES           = app/gettext/0.21
 REQUIRES          += libs/libunistring/0.9.10
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += app/acl/2.3.1
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/itstool/2.0.7/Makefile
===================================================================
--- radix-1.9/app/itstool/2.0.7/Makefile	(revision 120)
+++ radix-1.9/app/itstool/2.0.7/Makefile	(revision 121)
@@ -56,7 +56,7 @@
 SOURCE_REQUIRES    = sources/packages/a/itstool
 
 REQUIRES           = dev/python3/3.10.8
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += share/docbook-xml/4.5
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/app/postgresql/14.1/Makefile
===================================================================
--- radix-1.9/app/postgresql/14.1/Makefile	(revision 120)
+++ radix-1.9/app/postgresql/14.1/Makefile	(revision 121)
@@ -58,7 +58,7 @@
 REQUIRES           = dev/perl/5.36.0
 REQUIRES          += dev/python3/3.10.8
 REQUIRES          += app/util-linux/2.38.1
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/libxslt/1.1.34
 REQUIRES          += libs/readline/8.2
 REQUIRES          += libs/icu4c/73.1
Index: radix-1.9/app/postgresql/14.1-ppc32/Makefile
===================================================================
--- radix-1.9/app/postgresql/14.1-ppc32/Makefile	(revision 120)
+++ radix-1.9/app/postgresql/14.1-ppc32/Makefile	(revision 121)
@@ -19,7 +19,7 @@
 REQUIRES          += dev/perl/5.36.0-ppc32
 REQUIRES          += dev/python3/3.10.8-ppc32
 REQUIRES          += app/util-linux/2.38.1-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 REQUIRES          += libs/libxslt/1.1.34-ppc32
 REQUIRES          += libs/readline/8.2-ppc32
 REQUIRES          += libs/icu4c/73.1-ppc32
Index: radix-1.9/app/postgresql/14.1-x86_32/Makefile
===================================================================
--- radix-1.9/app/postgresql/14.1-x86_32/Makefile	(revision 120)
+++ radix-1.9/app/postgresql/14.1-x86_32/Makefile	(revision 121)
@@ -16,7 +16,7 @@
 REQUIRES          += dev/perl/5.36.0-x86_32
 REQUIRES          += dev/python3/3.10.8-x86_32
 REQUIRES          += app/util-linux/2.38.1-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 REQUIRES          += libs/libxslt/1.1.34-x86_32
 REQUIRES          += libs/readline/8.2-x86_32
 REQUIRES          += libs/icu4c/73.1-x86_32
Index: radix-1.9/dev/llvm/16.0.2/Makefile
===================================================================
--- radix-1.9/dev/llvm/16.0.2/Makefile	(revision 120)
+++ radix-1.9/dev/llvm/16.0.2/Makefile	(revision 121)
@@ -58,7 +58,7 @@
 REQUIRES           = dev/gcc/12.2.0
 REQUIRES          += libs/libffi/3.4.4
 REQUIRES          += libs/elfutils/0.187
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/libedit/20191231-3.1
 REQUIRES          += libs/ncurses/6.3
 REQUIRES          += dev/python2/2.7.18
Index: radix-1.9/dev/llvm/16.0.2-ppc32/Makefile
===================================================================
--- radix-1.9/dev/llvm/16.0.2-ppc32/Makefile	(revision 120)
+++ radix-1.9/dev/llvm/16.0.2-ppc32/Makefile	(revision 121)
@@ -18,7 +18,7 @@
 REQUIRES           = dev/llvm/16.0.2
 REQUIRES          += libs/libffi/3.4.4-ppc32
 REQUIRES          += libs/elfutils/0.187-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 REQUIRES          += libs/libedit/20191231-3.1-ppc32
 REQUIRES          += libs/ncurses/6.3-ppc32
 REQUIRES          += dev/python2/2.7.18-ppc32
Index: radix-1.9/dev/llvm/16.0.2-x86_32/Makefile
===================================================================
--- radix-1.9/dev/llvm/16.0.2-x86_32/Makefile	(revision 120)
+++ radix-1.9/dev/llvm/16.0.2-x86_32/Makefile	(revision 121)
@@ -15,7 +15,7 @@
 REQUIRES           = dev/llvm/16.0.2
 REQUIRES          += libs/libffi/3.4.4-x86_32
 REQUIRES          += libs/elfutils/0.187-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 REQUIRES          += libs/libedit/20191231-3.1-x86_32
 REQUIRES          += libs/ncurses/6.3-x86_32
 REQUIRES          += dev/python2/2.7.18-x86_32
Index: radix-1.9/libs/libarchive/3.5.2/Makefile
===================================================================
--- radix-1.9/libs/libarchive/3.5.2/Makefile	(revision 120)
+++ radix-1.9/libs/libarchive/3.5.2/Makefile	(revision 121)
@@ -62,7 +62,7 @@
 REQUIRES          += libs/lzo/2.10
 REQUIRES          += libs/zstd/1.5.2
 REQUIRES          += net/nettle/3.7.1
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/libs/libarchive/3.5.2-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libarchive/3.5.2-ppc32/Makefile	(revision 120)
+++ radix-1.9/libs/libarchive/3.5.2-ppc32/Makefile	(revision 121)
@@ -23,7 +23,7 @@
 REQUIRES          += libs/lzo/2.10-ppc32
 REQUIRES          += libs/zstd/1.5.2-ppc32
 REQUIRES          += net/nettle/3.7.1-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/libs/libarchive/3.5.2-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libarchive/3.5.2-x86_32/Makefile	(revision 120)
+++ radix-1.9/libs/libarchive/3.5.2-x86_32/Makefile	(revision 121)
@@ -20,7 +20,7 @@
 REQUIRES          += libs/lzo/2.10-x86_32
 REQUIRES          += libs/zstd/1.5.2-x86_32
 REQUIRES          += net/nettle/3.7.1-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/libs/libcroco/0.6.13/Makefile
===================================================================
--- radix-1.9/libs/libcroco/0.6.13/Makefile	(revision 120)
+++ radix-1.9/libs/libcroco/0.6.13/Makefile	(revision 121)
@@ -56,7 +56,7 @@
 SOURCE_REQUIRES    = sources/GNOME/core/libcroco
 
 REQUIRES           = libs/glib2/2.76.0
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/libs/libcroco/0.6.13-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libcroco/0.6.13-ppc32/Makefile	(revision 120)
+++ radix-1.9/libs/libcroco/0.6.13-ppc32/Makefile	(revision 121)
@@ -17,7 +17,7 @@
 
 REQUIRES           = libs/libcroco/0.6.13
 REQUIRES          += libs/glib2/2.76.0-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/libs/libcroco/0.6.13-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libcroco/0.6.13-x86_32/Makefile	(revision 120)
+++ radix-1.9/libs/libcroco/0.6.13-x86_32/Makefile	(revision 121)
@@ -14,7 +14,7 @@
 
 REQUIRES           = libs/libcroco/0.6.13
 REQUIRES          += libs/glib2/2.76.0-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/libs/libical/3.0.9/Makefile
===================================================================
--- radix-1.9/libs/libical/3.0.9/Makefile	(revision 120)
+++ radix-1.9/libs/libical/3.0.9/Makefile	(revision 121)
@@ -57,7 +57,7 @@
 
 REQUIRES           = libs/icu4c/73.1
 REQUIRES          += libs/glib2/2.76.0
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += app/db/18.1.40
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libical/3.0.9-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libical/3.0.9-ppc32/Makefile	(revision 120)
+++ radix-1.9/libs/libical/3.0.9-ppc32/Makefile	(revision 121)
@@ -18,7 +18,7 @@
 REQUIRES           = libs/libical/3.0.9
 REQUIRES          += libs/icu4c/73.1-ppc32
 REQUIRES          += libs/glib2/2.76.0-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 REQUIRES          += app/db/18.1.40-ppc32
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libical/3.0.9-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libical/3.0.9-x86_32/Makefile	(revision 120)
+++ radix-1.9/libs/libical/3.0.9-x86_32/Makefile	(revision 121)
@@ -15,7 +15,7 @@
 REQUIRES           = libs/libical/3.0.9
 REQUIRES          += libs/icu4c/73.1-x86_32
 REQUIRES          += libs/glib2/2.76.0-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 REQUIRES          += app/db/18.1.40-x86_32
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libxml2/2.9.9-x86_32/libxml2-x32-pkg-description.in
===================================================================
--- radix-1.9/libs/libxml2/2.9.9-x86_32/libxml2-x32-pkg-description.in	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9-x86_32/libxml2-x32-pkg-description.in	(nonexistent)
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.  Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in.  You must
-# make exactly 11 lines for the formatting to be correct.  It's also
-# customary to leave one space after the ':'.
-
-           |-----handy-ruler------------------------------------------------------|
-libxml2-x32: libxml2-x32 @VERSION@ (XML parser library)
-libxml2-x32:
-libxml2-x32: Libxml2 is the XML C parser library and toolkit. XML itself is a
-libxml2-x32: metalanguage to design markup languages - i.e. a text language where
-libxml2-x32: structures are added to the content using extra "markup" information
-libxml2-x32: enclosed between angle brackets. HTML is the most well-known markup
-libxml2-x32: language. Though the library is written in C, a variety of language
-libxml2-x32: bindings make it available in other environments.
-libxml2-x32:
-libxml2-x32:
-libxml2-x32:
Index: radix-1.9/libs/libxml2/2.9.9-x86_32/PATCHES
===================================================================
--- radix-1.9/libs/libxml2/2.9.9-x86_32/PATCHES	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9-x86_32/PATCHES	(nonexistent)
@@ -1,2 +0,0 @@
-
-../../../sources/packages/l/libxml2/patches/libxml2-2.9.9-python.patch -p0
Index: radix-1.9/libs/libxml2/2.9.9-x86_32/libxml2-x32-pkg-install.sh
===================================================================
--- radix-1.9/libs/libxml2/2.9.9-x86_32/libxml2-x32-pkg-install.sh	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9-x86_32/libxml2-x32-pkg-install.sh	(nonexistent)
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-# arg 1:  the new package version
-pre_install() {
-  /bin/true
-}
-
-# arg 1:  the new package version
-post_install() {
-  /bin/true
-}
-
-# arg 1:  the new package version
-# arg 2:  the old package version
-pre_update() {
-  /bin/true
-}
-
-# arg 1:  the new package version
-# arg 2:  the old package version
-post_update() {
-  post_install
-}
-
-# arg 1:  the old package version
-pre_remove() {
-  /bin/true
-}
-
-# arg 1:  the old package version
-post_remove() {
-  /bin/true
-}
-
-
-operation=$1
-shift
-
-$operation $*

Property changes on: radix-1.9/libs/libxml2/2.9.9-x86_32/libxml2-x32-pkg-install.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/libs/libxml2/2.9.9-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libxml2/2.9.9-x86_32/Makefile	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9-x86_32/Makefile	(nonexistent)
@@ -1,240 +0,0 @@
-
-COMPONENT_TARGETS  = $(HARDWARE_INTEL_PC64)
-
-NEED_ABS_PATH      = true
-COMPONENT_IS_3PP   = true
-
-CREATE_X86_32_PACKAGE = true
-
-
-include ../../../build-system/constants.mk
-
-
-SOURCE_REQUIRES    = sources/packages/l/libxml2
-
-REQUIRES           = libs/libxml2/2.9.9
-REQUIRES          += libs/zlib/1.2.13-x86_32
-REQUIRES          += app/xz/5.2.7-x86_32
-REQUIRES          += libs/icu4c/73.1-x86_32
-REQUIRES          += libs/readline/8.2-x86_32
-REQUIRES          += dev/python2/2.7.18-x86_32
-REQUIRES          += dev/python3/3.10.8-x86_32
-
-# ======= __END_OF_REQUIRES__ =======
-
-version            = 2.9.9
-tar_xz_archive     = $(SRC_PACKAGE_PATH)/packages/l/libxml2/libxml2-$(version).tar.xz
-SRC_ARCHIVE        = $(tar_xz_archive)
-SRC_DIR            = $(TARGET_BUILD_DIR)/libxml2-$(version)
-src_dir_name       = libxml2-$(version)
-src_done           = $(TARGET_BUILD_DIR)/.source_done
-
-PATCHES = PATCHES
-
-build_dir          = $(TARGET_BUILD_DIR)/build
-build_target       = $(TARGET_BUILD_DIR)/.build_done
-install_target     = $(TARGET_BUILD_DIR)/.install_done
-
-
-####### Targets
-
-PKG_GROUP = libs
-#
-# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
-#
-LIBXML2_32_PKG_NAME                = libxml2-x32
-LIBXML2_32_PKG_VERSION             = 2.9.9
-LIBXML2_32_PKG_ARCH                = $(PKGARCH)
-LIBXML2_32_PKG_DISTRO_NAME         = $(DISTRO_NAME)
-LIBXML2_32_PKG_DISTRO_VERSION      = $(DISTRO_VERSION)
-LIBXML2_32_PKG_GROUP               = $(PKG_GROUP)
-###                                 |---handy-ruler-------------------------------|
-LIBXML2_32_PKG_SHORT_DESCRIPTION   = XML parser library
-LIBXML2_32_PKG_URL                 = $(BUG_URL)
-LIBXML2_32_PKG_LICENSE             = custom
-LIBXML2_32_PKG_DESCRIPTION_FILE    = $(TARGET_BUILD_DIR)/$(LIBXML2_32_PKG_NAME)-pkg-description
-LIBXML2_32_PKG_DESCRIPTION_FILE_IN = $(LIBXML2_32_PKG_NAME)-pkg-description.in
-LIBXML2_32_PKG_INSTALL_SCRIPT      = $(LIBXML2_32_PKG_NAME)-pkg-install.sh
-
-LIBXML2_32_PKG   = $(CURDIR)/$(TARGET_BUILD_DIR)/$(LIBXML2_32_PKG_NAME)-package
-
-pkg_basename     = $(LIBXML2_32_PKG_NAME)-$(LIBXML2_32_PKG_VERSION)-$(LIBXML2_32_PKG_ARCH)-$(LIBXML2_32_PKG_DISTRO_NAME)-$(LIBXML2_32_PKG_DISTRO_VERSION)
-
-pkg_archive      = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
-pkg_certificate  = $(call cert-name,$(pkg_archive))
-pkg_signature    = $(call sign-name,$(pkg_archive))
-pkg_description  = $(call desc-name,$(pkg_archive))
-products         = $(call pkg-files,$(pkg_archive))
-
-BUILD_TARGETS    = $(build_target)
-BUILD_TARGETS   += $(install_target)
-
-PRODUCT_TARGETS  = $(products)
-
-ROOTFS_TARGETS   = $(pkg_archive)
-
-
-include ../../../build-system/core.mk
-
-
-env_sysroot  = DESTDIR=$(LIBXML2_32_PKG)
-
-
-extra_configure_switches  = --libdir=/usr/lib$(MULTILIB_X86_32_SUFFIX)
-extra_configure_switches += --docdir=/usr/share/doc/$(src_dir_name)
-extra_configure_switches += --infodir=/usr/share/info
-extra_configure_switches += --mandir=/usr/share/man
-
-extra_configure_switches += --bindir=/usr/bin/32
-
-extra_configure_switches += --disable-dependency-tracking
-ifeq ($(__ENABLE_STATIC__),yes)
-extra_configure_switches += --enable-static=yes
-else
-extra_configure_switches += --enable-static=no
-endif
-extra_configure_switches += --enable-shared=yes
-
-
-PYTHON_VERSION = 2.7
-
-ifeq ($(PYTHON_VERSION),2.7)
-WITH_PYTHON = $(PYTHON2)
-python_environment  = PYTHON_VERSION=$(PYTHON_VERSION)
-python_environment += PYTHON_SITE_PACKAGES=/usr/lib$(MULTILIB_X86_32_SUFFIX)/python$(PYTHON_VERSION)/site-packages
-python_environment += PYTHON_INCLUDES=$(TARGET_DEST_DIR)/usr/include/python$(PYTHON_VERSION)
-python_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON_VERSION)-config --ldflags)'
-CFLAGS += -I$(TARGET_DEST_DIR)/usr/include/python$(PYTHON_VERSION)
-endif
-
-ifeq ($(PYTHON_VERSION),3.7)
-WITH_PYTHON = $(PYTHON3)
-python_environment  = PYTHON_VERSION=$(PYTHON_VERSION)
-python_environment += PYTHON_SITE_PACKAGES=/usr/lib$(MULTILIB_X86_32_SUFFIX)/python$(PYTHON_VERSION)/site-packages
-python_environment += PYTHON_INCLUDES='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON_VERSION)-config --includes)'
-python_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON_VERSION)-config --ldflags)'
-CFLAGS += -I$(TARGET_DEST_DIR)/usr/include/python$(PYTHON_VERSION)m
-endif
-
-
-TARGET_BIN_RPATH = /lib$(MULTILIB_X86_32_SUFFIX):/usr/lib$(MULTILIB_X86_32_SUFFIX)
-TARGET_LIB_RPATH = /lib$(MULTILIB_X86_32_SUFFIX):/usr/lib$(MULTILIB_X86_32_SUFFIX):/usr/lib/../lib$(MULTILIB_X86_32_SUFFIX)
-
-
-####### Dependencies
-
-$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
-	$(UNPACK_SRC_ARCHIVE)
-	$(APPLY_PATCHES)
-	@( cd $(SRC_DIR) ; autoreconf -vif )
-	@touch $@
-
-$(build_target): $(src_done)
-	@mkdir -p $(build_dir)
-	@cd $(build_dir) && $(BUILD_ENVIRONMENT) $(python_environment) ../$(src_dir_name)/configure \
-	  --prefix=/usr                \
-	  --build=$(BUILD)             \
-	  --host=$(TARGET32)           \
-	  --with-python=$(WITH_PYTHON) \
-	  $(extra_configure_switches)
-	@cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) $(python_environment)
-	@touch $@
-
-$(install_target): $(build_target)
-	@mkdir -p $(LIBXML2_32_PKG)
-	@cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
-	@rm -rf $(LIBXML2_32_PKG)/usr/include
-	@rm -rf $(LIBXML2_32_PKG)/usr/share
-	# ======= remove toolchain path from xml2-config script =======
-	@( cd $(LIBXML2_32_PKG)/usr/bin/32 ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" xml2-config ; \
-	 )
-	# ======= remove toolchain path from target libtool *.la files =======
-	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_X86_32_SUFFIX) ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2.la  ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" xml2Conf.sh ; \
-	 )
-	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_X86_32_SUFFIX)/python$(PYTHON_VERSION)/site-packages ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2mod.la ; \
-	 )
-	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_X86_32_SUFFIX)/pkgconfig ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml-2.0.pc ; \
-	 )
-	# ======= Install the same to $(TARGET_DEST_DIR) =======
-	$(call install-into-devenv, $(LIBXML2_32_PKG))
-	# ======= tune libtool *.la search path to the target destination for development =======
-	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_X86_32_SUFFIX) ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2.la  ; \
-	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2.la  ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   xml2Conf.sh ; \
-	 )
-	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_X86_32_SUFFIX)/python$(PYTHON_VERSION)/site-packages ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2mod.la ; \
-	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2mod.la ; \
-	 )
-	# ======= tune pkg-config *.pc search path to the target destination for development =======
-	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_X86_32_SUFFIX)/pkgconfig ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g" libxml-2.0.pc \
-	 )
-	# ======= tune xml2-config script for development =======
-	@( cd $(TARGET_DEST_DIR)/usr/bin/32 ; \
-	   sed -i "s,=/usr,=$(TARGET_DEST_DIR)/usr,g"                  xml2-config ; \
-	   sed -i "s,prefix/lib,prefix/lib$(MULTILIB_X86_32_SUFFIX),g" xml2-config ; \
-	   sed -i "s,lib64,lib$(MULTILIB_X86_32_SUFFIX),g"             xml2-config ; \
-	   sed -i "s,L/usr,L$(TARGET_DEST_DIR)/usr,g"                  xml2-config ; \
-	 )
-	# ======= Strip binaries =======
-	@( cd $(LIBXML2_32_PKG) ; \
-	   find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
-	   find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
-	 )
-ifeq ($(__ENABLE_STATIC__),yes)
-	@( cd $(LIBXML2_32_PKG) ; \
-	   find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
-	 )
-endif
-ifneq ($(PATCHELF),)
-	# ======= Set RPATH/RUNPATH for target binaries =======
-	@( cd $(LIBXML2_32_PKG)/usr/bin/32 ; \
-	   for file in `find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
-	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
-	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
-	       $(PATCHELF) --set-rpath $(TARGET_BIN_RPATH) $$file 1> /dev/null 2> /dev/null ; \
-	     fi ; \
-	   done ; \
-	 )
-	# ======= Set RPATH/RUNPATH for target shared objects =======
-	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_X86_32_SUFFIX) ; \
-	   for file in `find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
-	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
-	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
-	       $(PATCHELF) --set-rpath $(TARGET_LIB_RPATH) $$file 1> /dev/null 2> /dev/null ; \
-	     fi ; \
-	   done ; \
-	 )
-endif
-	@touch $@
-
-$(LIBXML2_32_PKG_DESCRIPTION_FILE): $(LIBXML2_32_PKG_DESCRIPTION_FILE_IN)
-	@cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
-
-$(pkg_certificate) : $(pkg_archive) ;
-$(pkg_signature)   : $(pkg_archive) ;
-$(pkg_description) : $(pkg_archive) ;
-
-$(pkg_archive): $(install_target) $(LIBXML2_32_PKG_DESCRIPTION_FILE) $(LIBXML2_32_PKG_INSTALL_SCRIPT)
-	@cp $(LIBXML2_32_PKG_DESCRIPTION_FILE) $(LIBXML2_32_PKG)/.DESCRIPTION
-	@cp $(LIBXML2_32_PKG_INSTALL_SCRIPT) $(LIBXML2_32_PKG)/.INSTALL
-	@$(BUILD_PKG_REQUIRES) $(LIBXML2_32_PKG)/.REQUIRES
-	@echo "pkgname=$(LIBXML2_32_PKG_NAME)"                            >  $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "pkgver=$(LIBXML2_32_PKG_VERSION)"                          >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "arch=$(LIBXML2_32_PKG_ARCH)"                               >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "distroname=$(LIBXML2_32_PKG_DISTRO_NAME)"                  >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "distrover=$(LIBXML2_32_PKG_DISTRO_VERSION)"                >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "group=$(LIBXML2_32_PKG_GROUP)"                             >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "short_description=\"$(LIBXML2_32_PKG_SHORT_DESCRIPTION)\"" >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "url=$(LIBXML2_32_PKG_URL)"                                 >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "license=$(LIBXML2_32_PKG_LICENSE)"                         >> $(LIBXML2_32_PKG)/.PKGINFO
-	@$(PSEUDO) sh -c "cd $(LIBXML2_32_PKG) && \
-	                  chown -R root:root . && \
-	                  $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/libxml2/2.9.9-x86_32
===================================================================
--- radix-1.9/libs/libxml2/2.9.9-x86_32	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9-x86_32	(nonexistent)

Property changes on: radix-1.9/libs/libxml2/2.9.9-x86_32
___________________________________________________________________
Deleted: svn:ignore
## -1,74 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.rk358x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/libs/libxml2/2.9.9/libxml2-pkg-description.in
===================================================================
--- radix-1.9/libs/libxml2/2.9.9/libxml2-pkg-description.in	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9/libxml2-pkg-description.in	(nonexistent)
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.  Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in.  You must
-# make exactly 11 lines for the formatting to be correct.  It's also
-# customary to leave one space after the ':'.
-
-       |-----handy-ruler------------------------------------------------------|
-libxml2: libxml2 @VERSION@ (XML parser library)
-libxml2:
-libxml2: Libxml2 is the XML C parser library and toolkit. XML itself is a
-libxml2: metalanguage to design markup languages - i.e. a text language where
-libxml2: structures are added to the content using extra "markup" information
-libxml2: enclosed between angle brackets. HTML is the most well-known markup
-libxml2: language. Though the library is written in C, a variety of language
-libxml2: bindings make it available in other environments.
-libxml2:
-libxml2:
-libxml2:
Index: radix-1.9/libs/libxml2/2.9.9/PATCHES
===================================================================
--- radix-1.9/libs/libxml2/2.9.9/PATCHES	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9/PATCHES	(nonexistent)
@@ -1,2 +0,0 @@
-
-../../../sources/packages/l/libxml2/patches/libxml2-2.9.9-python.patch -p0
Index: radix-1.9/libs/libxml2/2.9.9/libxml2-pkg-install.sh
===================================================================
--- radix-1.9/libs/libxml2/2.9.9/libxml2-pkg-install.sh	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9/libxml2-pkg-install.sh	(nonexistent)
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-# arg 1:  the new package version
-pre_install() {
-  /bin/true
-}
-
-# arg 1:  the new package version
-post_install() {
-  /bin/true
-}
-
-# arg 1:  the new package version
-# arg 2:  the old package version
-pre_update() {
-  /bin/true
-}
-
-# arg 1:  the new package version
-# arg 2:  the old package version
-post_update() {
-  post_install
-}
-
-# arg 1:  the old package version
-pre_remove() {
-  /bin/true
-}
-
-# arg 1:  the old package version
-post_remove() {
-  /bin/true
-}
-
-
-operation=$1
-shift
-
-$operation $*

Property changes on: radix-1.9/libs/libxml2/2.9.9/libxml2-pkg-install.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/libs/libxml2/2.9.9/Makefile
===================================================================
--- radix-1.9/libs/libxml2/2.9.9/Makefile	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9/Makefile	(nonexistent)
@@ -1,307 +0,0 @@
-
-COMPONENT_TARGETS  = $(HARDWARE_INTEL_PC32)
-COMPONENT_TARGETS += $(HARDWARE_INTEL_PC64)
-COMPONENT_TARGETS += $(HARDWARE_EBOX_3350DX2)
-COMPONENT_TARGETS += $(HARDWARE_CB1X)
-COMPONENT_TARGETS += $(HARDWARE_CB2X)
-COMPONENT_TARGETS += $(HARDWARE_CB3X)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP2E)
-COMPONENT_TARGETS += $(HARDWARE_NANOPI_NEO)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PL2)
-COMPONENT_TARGETS += $(HARDWARE_ORANGE_PI5)
-COMPONENT_TARGETS += $(HARDWARE_WECHIP_TX6)
-COMPONENT_TARGETS += $(HARDWARE_FFRK3288)
-COMPONENT_TARGETS += $(HARDWARE_POIN2)
-COMPONENT_TARGETS += $(HARDWARE_RK3328_CC)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_EDGE)
-COMPONENT_TARGETS += $(HARDWARE_LEEZ_P710)
-COMPONENT_TARGETS += $(HARDWARE_M201)
-COMPONENT_TARGETS += $(HARDWARE_MXV)
-COMPONENT_TARGETS += $(HARDWARE_P201)
-COMPONENT_TARGETS += $(HARDWARE_NEXBOX_A95X)
-COMPONENT_TARGETS += $(HARDWARE_ODROID_C2)
-COMPONENT_TARGETS += $(HARDWARE_P212)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM)
-COMPONENT_TARGETS += $(HARDWARE_Q201)
-COMPONENT_TARGETS += $(HARDWARE_ENYBOX_X2)
-COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM2)
-COMPONENT_TARGETS += $(HARDWARE_NIT6Q)
-COMPONENT_TARGETS += $(HARDWARE_OKMX6DL_C)
-COMPONENT_TARGETS += $(HARDWARE_OKMX6Q_C)
-COMPONENT_TARGETS += $(HARDWARE_BONE_BLACK)
-COMPONENT_TARGETS += $(HARDWARE_OMAP5UEVM)
-COMPONENT_TARGETS += $(HARDWARE_DRA7XXEVM)
-COMPONENT_TARGETS += $(HARDWARE_CI20)
-COMPONENT_TARGETS += $(HARDWARE_BAIKAL_T1)
-COMPONENT_TARGETS += $(HARDWARE_BAIKAL_M1)
-COMPONENT_TARGETS += $(HARDWARE_S824L)
-COMPONENT_TARGETS += $(HARDWARE_VESNIN)
-COMPONENT_TARGETS += $(HARDWARE_S824L_LSB)
-COMPONENT_TARGETS += $(HARDWARE_VESNIN_LSB)
-COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
-COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
-COMPONENT_TARGETS += $(HARDWARE_TL2WK2_LSB)
-COMPONENT_TARGETS += $(HARDWARE_TL2SV2_LSB)
-COMPONENT_TARGETS += $(HARDWARE_SIFIVE_U740)
-
-
-NEED_ABS_PATH      = true
-COMPONENT_IS_3PP   = true
-
-
-include ../../../build-system/constants.mk
-
-
-SOURCE_REQUIRES    = sources/packages/l/libxml2
-
-REQUIRES           = libs/zlib/1.2.13
-REQUIRES          += app/xz/5.2.7
-REQUIRES          += libs/icu4c/73.1
-REQUIRES          += libs/readline/8.2
-REQUIRES          += dev/python2/2.7.18
-REQUIRES          += dev/python3/3.10.8
-
-# ======= __END_OF_REQUIRES__ =======
-
-version            = 2.9.9
-tar_xz_archive     = $(SRC_PACKAGE_PATH)/packages/l/libxml2/libxml2-$(version).tar.xz
-SRC_ARCHIVE        = $(tar_xz_archive)
-SRC_DIR            = $(TARGET_BUILD_DIR)/libxml2-$(version)
-src_dir_name       = libxml2-$(version)
-src_done           = $(TARGET_BUILD_DIR)/.source_done
-
-PATCHES = PATCHES
-
-build_dir          = $(TARGET_BUILD_DIR)/build
-build_target       = $(TARGET_BUILD_DIR)/.build_done
-install_target     = $(TARGET_BUILD_DIR)/.install_done
-
-
-####### Targets
-
-PKG_GROUP = libs
-
-#
-# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
-#
-LIBXML2_PKG_NAME                = libxml2
-LIBXML2_PKG_VERSION             = 2.9.9
-LIBXML2_PKG_ARCH                = $(PKGARCH)
-LIBXML2_PKG_DISTRO_NAME         = $(DISTRO_NAME)
-LIBXML2_PKG_DISTRO_VERSION      = $(DISTRO_VERSION)
-LIBXML2_PKG_GROUP               = $(PKG_GROUP)
-###                              |---handy-ruler-------------------------------|
-LIBXML2_PKG_SHORT_DESCRIPTION   = XML parser library
-LIBXML2_PKG_URL                 = $(BUG_URL)
-LIBXML2_PKG_LICENSE             = custom
-LIBXML2_PKG_DESCRIPTION_FILE    = $(TARGET_BUILD_DIR)/$(LIBXML2_PKG_NAME)-pkg-description
-LIBXML2_PKG_DESCRIPTION_FILE_IN = $(LIBXML2_PKG_NAME)-pkg-description.in
-LIBXML2_PKG_INSTALL_SCRIPT      = $(LIBXML2_PKG_NAME)-pkg-install.sh
-
-LIBXML2_PKG      = $(CURDIR)/$(TARGET_BUILD_DIR)/$(LIBXML2_PKG_NAME)-package
-
-pkg_basename     = $(LIBXML2_PKG_NAME)-$(LIBXML2_PKG_VERSION)-$(LIBXML2_PKG_ARCH)-$(LIBXML2_PKG_DISTRO_NAME)-$(LIBXML2_PKG_DISTRO_VERSION)
-
-pkg_archive      = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
-pkg_certificate  = $(call cert-name,$(pkg_archive))
-pkg_signature    = $(call sign-name,$(pkg_archive))
-pkg_description  = $(call desc-name,$(pkg_archive))
-products         = $(call pkg-files,$(pkg_archive))
-
-BUILD_TARGETS    = $(build_target)
-BUILD_TARGETS   += $(install_target)
-
-PRODUCT_TARGETS  = $(products)
-
-ROOTFS_TARGETS   = $(pkg_archive)
-
-
-include ../../../build-system/core.mk
-
-
-env_sysroot = DESTDIR=$(LIBXML2_PKG)
-
-
-extra_configure_switches  = --libdir=/usr/lib$(LIBSUFFIX)
-extra_configure_switches += --docdir=/usr/share/doc/$(src_dir_name)
-extra_configure_switches += --infodir=/usr/share/info
-extra_configure_switches += --mandir=/usr/share/man
-extra_configure_switches += --disable-dependency-tracking
-ifeq ($(__ENABLE_STATIC__),yes)
-extra_configure_switches += --enable-static=yes
-else
-extra_configure_switches += --enable-static=no
-endif
-extra_configure_switches += --enable-shared=yes
-
-
-PYTHON_VERSION = 2.7
-
-ifeq ($(PYTHON_VERSION),2.7)
-WITH_PYTHON = $(PYTHON2)
-python_environment  = PYTHON_VERSION=$(PYTHON_VERSION)
-python_environment += PYTHON_SITE_PACKAGES=/usr/lib$(LIBSUFFIX)/python$(PYTHON_VERSION)/site-packages
-python_environment += PYTHON_INCLUDES=$(TARGET_DEST_DIR)/usr/include/python$(PYTHON_VERSION)
-python_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/python$(PYTHON_VERSION)-config --ldflags)'
-CFLAGS += -I$(TARGET_DEST_DIR)/usr/include/python$(PYTHON_VERSION)
-endif
-
-ifeq ($(PYTHON_VERSION),3.10)
-WITH_PYTHON = $(PYTHON3)
-python_environment  = PYTHON_VERSION=$(PYTHON_VERSION)
-python_environment += PYTHON_SITE_PACKAGES=/usr/lib$(LIBSUFFIX)/python$(PYTHON_VERSION)/site-packages
-python_environment += PYTHON_INCLUDES='$(shell $(TARGET_DEST_DIR)/usr/bin/python$(PYTHON_VERSION)-config --includes)'
-python_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/python$(PYTHON_VERSION)-config --ldflags)'
-CFLAGS += -I$(TARGET_DEST_DIR)/usr/include/python$(PYTHON_VERSION)m
-endif
-
-
-TARGET_BIN_RPATH = /lib$(LIBSUFFIX):/usr/lib$(LIBSUFFIX)
-TARGET_LIB_RPATH = /lib$(LIBSUFFIX):/usr/lib$(LIBSUFFIX):/usr/lib/../lib$(LIBSUFFIX)
-
-
-####### Dependencies
-
-$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
-	$(UNPACK_SRC_ARCHIVE)
-	$(APPLY_PATCHES)
-	@( cd $(SRC_DIR) ; autoreconf -vif )
-	@touch $@
-
-$(build_target): $(src_done)
-	@mkdir -p $(build_dir)
-	@cd $(build_dir) && \
-	  $(BUILD_ENVIRONMENT) $(python_environment) ../$(src_dir_name)/configure \
-	  --prefix=/usr                \
-	  --build=$(BUILD)             \
-	  --host=$(TARGET)             \
-	  --with-python=$(WITH_PYTHON) \
-	  $(extra_configure_switches)
-	@cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) $(python_environment)
-	@touch $@
-
-$(install_target): $(build_target)
-	@mkdir -p $(LIBXML2_PKG)
-	@cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
-	# ======= Install Documentation =======
-	@if [ -d $(LIBXML2_PKG)/usr/share/man ]; then \
-	  ( cd $(LIBXML2_PKG)/usr/share/man ; \
-	    for manpagedir in `find . -type d -name "man*"` ; do \
-	      ( cd $$manpagedir ; \
-	        for eachpage in `find . -type l -maxdepth 1` ; do \
-	          ln -s `readlink $$eachpage`.gz $$eachpage.gz ; \
-	          rm $$eachpage ; \
-	        done ; \
-	        gzip -9 *.?  ; \
-	      ) \
-	    done \
-	  ) \
-	 fi
-	@mkdir -p $(LIBXML2_PKG)/usr/doc/$(src_dir_name)
-	@cp -a $(SRC_DIR)/AUTHORS $(SRC_DIR)/COPYING \
-	       $(LIBXML2_PKG)/usr/doc/$(src_dir_name)
-	@mkdir -p $(LIBXML2_PKG)/usr/share/doc/$(src_dir_name)
-	@( cd $(SRC_DIR) ; \
-	   cp -a AUTHORS COPYING INSTALL NEWS README* TODO* \
-	         $(LIBXML2_PKG)/usr/share/doc/$(src_dir_name) ; \
-	 )
-	@( cd $(SRC_DIR) ; \
-	   if [ -r ChangeLog ]; then \
-	     DOCSDIR=`echo $(LIBXML2_PKG)/usr/share/doc/$(src_dir_name)` ; \
-	     cat ChangeLog | head -n 1000 > $$DOCSDIR/ChangeLog ; \
-	     touch -r ChangeLog $$DOCSDIR/ChangeLog ; \
-	   fi \
-	 )
-	# ======= remove toolchain path from xml2-config script =======
-	@( cd $(LIBXML2_PKG)/usr/bin ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" xml2-config ; \
-	 )
-	# ======= remove toolchain path from target libtool *.la files =======
-	@( cd $(LIBXML2_PKG)/usr/lib$(LIBSUFFIX) ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2.la  ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" xml2Conf.sh ; \
-	 )
-	@( cd $(LIBXML2_PKG)/usr/lib$(LIBSUFFIX)/python$(PYTHON_VERSION)/site-packages ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2mod.la ; \
-	 )
-	@( cd $(LIBXML2_PKG)/usr/lib$(LIBSUFFIX)/pkgconfig ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml-2.0.pc  ; \
-	 )
-	# ======= Install the same to $(TARGET_DEST_DIR) =======
-	$(call install-into-devenv, $(LIBXML2_PKG))
-	# ======= tune libtool *.la search path to the target destination for development =======
-	@( cd $(TARGET_DEST_DIR)/usr/lib$(LIBSUFFIX) ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2.la  ; \
-	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2.la  ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   xml2Conf.sh ; \
-	 )
-	@( cd $(TARGET_DEST_DIR)/usr/lib$(LIBSUFFIX)/python$(PYTHON_VERSION)/site-packages ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2mod.la ; \
-	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2mod.la ; \
-	 )
-	# ======= tune pkg-config *.pc search path to the target destination for development =======
-	@( cd $(TARGET_DEST_DIR)/usr/lib$(LIBSUFFIX)/pkgconfig ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g" libxml-2.0.pc ; \
-	 )
-	# ======= tune xml2-config script for development =======
-	@( cd $(TARGET_DEST_DIR)/usr/bin ; \
-	   sed -i "s,=/usr,=$(TARGET_DEST_DIR)/usr,g"     xml2-config ; \
-	   sed -i "s,prefix/lib,prefix/lib$(LIBSUFFIX),g" xml2-config ; \
-	   sed -i "s,L/usr,L$(TARGET_DEST_DIR)/usr,g"     xml2-config ; \
-	 )
-	# ======= Strip binaries =======
-	@( cd $(LIBXML2_PKG) ; \
-	   find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
-	   find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
-	 )
-ifeq ($(__ENABLE_STATIC__),yes)
-	@( cd $(LIBXML2_PKG) ; \
-	   find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
-	 )
-endif
-ifneq ($(PATCHELF),)
-	# ======= Set RPATH/RUNPATH for target binaries =======
-	@( cd $(LIBXML2_PKG)/usr/bin ; \
-	   for file in `find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
-	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
-	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
-	       $(PATCHELF) --set-rpath $(TARGET_BIN_RPATH) $$file 1> /dev/null 2> /dev/null ; \
-	     fi ; \
-	   done ; \
-	 )
-	# ======= Set RPATH/RUNPATH for target shared objects =======
-	@( cd $(LIBXML2_PKG)/usr/lib$(LIBSUFFIX) ; \
-	   for file in `find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
-	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
-	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
-	       $(PATCHELF) --set-rpath $(TARGET_LIB_RPATH) $$file 1> /dev/null 2> /dev/null ; \
-	     fi ; \
-	   done ; \
-	 )
-endif
-	@touch $@
-
-$(LIBXML2_PKG_DESCRIPTION_FILE): $(LIBXML2_PKG_DESCRIPTION_FILE_IN)
-	@cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
-
-$(pkg_certificate) : $(pkg_archive) ;
-$(pkg_signature)   : $(pkg_archive) ;
-$(pkg_description) : $(pkg_archive) ;
-
-$(pkg_archive): $(install_target) $(LIBXML2_PKG_DESCRIPTION_FILE) $(LIBXML2_PKG_INSTALL_SCRIPT)
-	@cp $(LIBXML2_PKG_DESCRIPTION_FILE) $(LIBXML2_PKG)/.DESCRIPTION
-	@cp $(LIBXML2_PKG_INSTALL_SCRIPT) $(LIBXML2_PKG)/.INSTALL
-	@$(BUILD_PKG_REQUIRES) $(LIBXML2_PKG)/.REQUIRES
-	@echo "pkgname=$(LIBXML2_PKG_NAME)"                            >  $(LIBXML2_PKG)/.PKGINFO ; \
-	 echo "pkgver=$(LIBXML2_PKG_VERSION)"                          >> $(LIBXML2_PKG)/.PKGINFO ; \
-	 echo "arch=$(LIBXML2_PKG_ARCH)"                               >> $(LIBXML2_PKG)/.PKGINFO ; \
-	 echo "distroname=$(LIBXML2_PKG_DISTRO_NAME)"                  >> $(LIBXML2_PKG)/.PKGINFO ; \
-	 echo "distrover=$(LIBXML2_PKG_DISTRO_VERSION)"                >> $(LIBXML2_PKG)/.PKGINFO ; \
-	 echo "group=$(LIBXML2_PKG_GROUP)"                             >> $(LIBXML2_PKG)/.PKGINFO ; \
-	 echo "short_description=\"$(LIBXML2_PKG_SHORT_DESCRIPTION)\"" >> $(LIBXML2_PKG)/.PKGINFO ; \
-	 echo "url=$(LIBXML2_PKG_URL)"                                 >> $(LIBXML2_PKG)/.PKGINFO ; \
-	 echo "license=$(LIBXML2_PKG_LICENSE)"                         >> $(LIBXML2_PKG)/.PKGINFO
-	@$(PSEUDO) sh -c "cd $(LIBXML2_PKG) && \
-	                  chown -R root:root . && \
-	                  $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/libxml2/2.9.9
===================================================================
--- radix-1.9/libs/libxml2/2.9.9	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9	(nonexistent)

Property changes on: radix-1.9/libs/libxml2/2.9.9
___________________________________________________________________
Deleted: svn:ignore
## -1,74 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.rk358x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/libs/libxml2/2.9.9-ppc32/libxml2-x32-pkg-description.in
===================================================================
--- radix-1.9/libs/libxml2/2.9.9-ppc32/libxml2-x32-pkg-description.in	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9-ppc32/libxml2-x32-pkg-description.in	(nonexistent)
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.  Line
-# up the first '|' above the ':' following the base package name, and the '|'
-# on the right side marks the last column you can put a character in.  You must
-# make exactly 11 lines for the formatting to be correct.  It's also
-# customary to leave one space after the ':'.
-
-           |-----handy-ruler------------------------------------------------------|
-libxml2-x32: libxml2-x32 @VERSION@ (XML parser library)
-libxml2-x32:
-libxml2-x32: Libxml2 is the XML C parser library and toolkit. XML itself is a
-libxml2-x32: metalanguage to design markup languages - i.e. a text language where
-libxml2-x32: structures are added to the content using extra "markup" information
-libxml2-x32: enclosed between angle brackets. HTML is the most well-known markup
-libxml2-x32: language. Though the library is written in C, a variety of language
-libxml2-x32: bindings make it available in other environments.
-libxml2-x32:
-libxml2-x32:
-libxml2-x32:
Index: radix-1.9/libs/libxml2/2.9.9-ppc32/PATCHES
===================================================================
--- radix-1.9/libs/libxml2/2.9.9-ppc32/PATCHES	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9-ppc32/PATCHES	(nonexistent)
@@ -1,2 +0,0 @@
-
-../../../sources/packages/l/libxml2/patches/libxml2-2.9.9-python.patch -p0
Index: radix-1.9/libs/libxml2/2.9.9-ppc32/libxml2-x32-pkg-install.sh
===================================================================
--- radix-1.9/libs/libxml2/2.9.9-ppc32/libxml2-x32-pkg-install.sh	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9-ppc32/libxml2-x32-pkg-install.sh	(nonexistent)
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-# arg 1:  the new package version
-pre_install() {
-  /bin/true
-}
-
-# arg 1:  the new package version
-post_install() {
-  /bin/true
-}
-
-# arg 1:  the new package version
-# arg 2:  the old package version
-pre_update() {
-  /bin/true
-}
-
-# arg 1:  the new package version
-# arg 2:  the old package version
-post_update() {
-  post_install
-}
-
-# arg 1:  the old package version
-pre_remove() {
-  /bin/true
-}
-
-# arg 1:  the old package version
-post_remove() {
-  /bin/true
-}
-
-
-operation=$1
-shift
-
-$operation $*

Property changes on: radix-1.9/libs/libxml2/2.9.9-ppc32/libxml2-x32-pkg-install.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/libs/libxml2/2.9.9-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libxml2/2.9.9-ppc32/Makefile	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9-ppc32/Makefile	(nonexistent)
@@ -1,243 +0,0 @@
-
-COMPONENT_TARGETS  = $(HARDWARE_S824L)
-COMPONENT_TARGETS += $(HARDWARE_VESNIN)
-COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
-COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
-
-NEED_ABS_PATH      = true
-COMPONENT_IS_3PP   = true
-
-CREATE_PPC32_PACKAGE = true
-
-
-include ../../../build-system/constants.mk
-
-
-SOURCE_REQUIRES    = sources/packages/l/libxml2
-
-REQUIRES           = libs/libxml2/2.9.9
-REQUIRES          += libs/zlib/1.2.13-ppc32
-REQUIRES          += app/xz/5.2.7-ppc32
-REQUIRES          += libs/icu4c/73.1-ppc32
-REQUIRES          += libs/readline/8.2-ppc32
-REQUIRES          += dev/python2/2.7.18-ppc32
-REQUIRES          += dev/python3/3.10.8-ppc32
-
-# ======= __END_OF_REQUIRES__ =======
-
-version            = 2.9.9
-tar_xz_archive     = $(SRC_PACKAGE_PATH)/packages/l/libxml2/libxml2-$(version).tar.xz
-SRC_ARCHIVE        = $(tar_xz_archive)
-SRC_DIR            = $(TARGET_BUILD_DIR)/libxml2-$(version)
-src_dir_name       = libxml2-$(version)
-src_done           = $(TARGET_BUILD_DIR)/.source_done
-
-PATCHES = PATCHES
-
-build_dir          = $(TARGET_BUILD_DIR)/build
-build_target       = $(TARGET_BUILD_DIR)/.build_done
-install_target     = $(TARGET_BUILD_DIR)/.install_done
-
-
-####### Targets
-
-PKG_GROUP = libs
-#
-# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
-#
-LIBXML2_32_PKG_NAME                = libxml2-x32
-LIBXML2_32_PKG_VERSION             = 2.9.9
-LIBXML2_32_PKG_ARCH                = $(PKGARCH)
-LIBXML2_32_PKG_DISTRO_NAME         = $(DISTRO_NAME)
-LIBXML2_32_PKG_DISTRO_VERSION      = $(DISTRO_VERSION)
-LIBXML2_32_PKG_GROUP               = $(PKG_GROUP)
-###                                 |---handy-ruler-------------------------------|
-LIBXML2_32_PKG_SHORT_DESCRIPTION   = XML parser library
-LIBXML2_32_PKG_URL                 = $(BUG_URL)
-LIBXML2_32_PKG_LICENSE             = custom
-LIBXML2_32_PKG_DESCRIPTION_FILE    = $(TARGET_BUILD_DIR)/$(LIBXML2_32_PKG_NAME)-pkg-description
-LIBXML2_32_PKG_DESCRIPTION_FILE_IN = $(LIBXML2_32_PKG_NAME)-pkg-description.in
-LIBXML2_32_PKG_INSTALL_SCRIPT      = $(LIBXML2_32_PKG_NAME)-pkg-install.sh
-
-LIBXML2_32_PKG   = $(CURDIR)/$(TARGET_BUILD_DIR)/$(LIBXML2_32_PKG_NAME)-package
-
-pkg_basename     = $(LIBXML2_32_PKG_NAME)-$(LIBXML2_32_PKG_VERSION)-$(LIBXML2_32_PKG_ARCH)-$(LIBXML2_32_PKG_DISTRO_NAME)-$(LIBXML2_32_PKG_DISTRO_VERSION)
-
-pkg_archive      = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
-pkg_certificate  = $(call cert-name,$(pkg_archive))
-pkg_signature    = $(call sign-name,$(pkg_archive))
-pkg_description  = $(call desc-name,$(pkg_archive))
-products         = $(call pkg-files,$(pkg_archive))
-
-BUILD_TARGETS    = $(build_target)
-BUILD_TARGETS   += $(install_target)
-
-PRODUCT_TARGETS  = $(products)
-
-ROOTFS_TARGETS   = $(pkg_archive)
-
-
-include ../../../build-system/core.mk
-
-
-env_sysroot  = DESTDIR=$(LIBXML2_32_PKG)
-
-
-extra_configure_switches  = --libdir=/usr/lib$(MULTILIB_PPC32_SUFFIX)
-extra_configure_switches += --docdir=/usr/share/doc/$(src_dir_name)
-extra_configure_switches += --infodir=/usr/share/info
-extra_configure_switches += --mandir=/usr/share/man
-
-extra_configure_switches += --bindir=/usr/bin/32
-
-extra_configure_switches += --disable-dependency-tracking
-ifeq ($(__ENABLE_STATIC__),yes)
-extra_configure_switches += --enable-static=yes
-else
-extra_configure_switches += --enable-static=no
-endif
-extra_configure_switches += --enable-shared=yes
-
-
-PYTHON_VERSION = 2.7
-
-ifeq ($(PYTHON_VERSION),2.7)
-WITH_PYTHON = $(PYTHON2)
-python_environment  = PYTHON_VERSION=$(PYTHON_VERSION)
-python_environment += PYTHON_SITE_PACKAGES=/usr/lib$(MULTILIB_PPC32_SUFFIX)/python$(PYTHON_VERSION)/site-packages
-python_environment += PYTHON_INCLUDES=$(TARGET_DEST_DIR)/usr/include/python$(PYTHON_VERSION)
-python_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON_VERSION)-config --ldflags)'
-CFLAGS += -I$(TARGET_DEST_DIR)/usr/include/python$(PYTHON_VERSION)
-endif
-
-ifeq ($(PYTHON_VERSION),3.7)
-WITH_PYTHON = $(PYTHON3)
-python_environment  = PYTHON_VERSION=$(PYTHON_VERSION)
-python_environment += PYTHON_SITE_PACKAGES=/usr/lib$(MULTILIB_PPC32_SUFFIX)/python$(PYTHON_VERSION)/site-packages
-python_environment += PYTHON_INCLUDES='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON_VERSION)-config --includes)'
-python_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON_VERSION)-config --ldflags)'
-CFLAGS += -I$(TARGET_DEST_DIR)/usr/include/python$(PYTHON_VERSION)m
-endif
-
-
-TARGET_BIN_RPATH = /lib$(MULTILIB_PPC32_SUFFIX):/usr/lib$(MULTILIB_PPC32_SUFFIX)
-TARGET_LIB_RPATH = /lib$(MULTILIB_PPC32_SUFFIX):/usr/lib$(MULTILIB_PPC32_SUFFIX):/usr/lib/../lib$(MULTILIB_PPC32_SUFFIX)
-
-
-####### Dependencies
-
-$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
-	$(UNPACK_SRC_ARCHIVE)
-	$(APPLY_PATCHES)
-	@( cd $(SRC_DIR) ; autoreconf -vif )
-	@touch $@
-
-$(build_target): $(src_done)
-	@mkdir -p $(build_dir)
-	@cd $(build_dir) && $(BUILD_ENVIRONMENT) $(python_environment) ../$(src_dir_name)/configure \
-	  --prefix=/usr                \
-	  --build=$(BUILD)             \
-	  --host=$(TARGET32)           \
-	  --with-python=$(WITH_PYTHON) \
-	  $(extra_configure_switches)
-	@cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) $(python_environment)
-	@touch $@
-
-$(install_target): $(build_target)
-	@mkdir -p $(LIBXML2_32_PKG)
-	@cd $(build_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
-	@rm -rf $(LIBXML2_32_PKG)/usr/include
-	@rm -rf $(LIBXML2_32_PKG)/usr/share
-	# ======= remove toolchain path from xml2-config script =======
-	@( cd $(LIBXML2_32_PKG)/usr/bin/32 ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" xml2-config ; \
-	 )
-	# ======= remove toolchain path from target libtool *.la files =======
-	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_PPC32_SUFFIX) ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2.la  ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" xml2Conf.sh ; \
-	 )
-	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_PPC32_SUFFIX)/python$(PYTHON_VERSION)/site-packages ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2mod.la ; \
-	 )
-	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_PPC32_SUFFIX)/pkgconfig ; \
-	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml-2.0.pc ; \
-	 )
-	# ======= Install the same to $(TARGET_DEST_DIR) =======
-	$(call install-into-devenv, $(LIBXML2_32_PKG))
-	# ======= tune libtool *.la search path to the target destination for development =======
-	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_PPC32_SUFFIX) ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2.la  ; \
-	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2.la  ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   xml2Conf.sh ; \
-	 )
-	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_PPC32_SUFFIX)/python$(PYTHON_VERSION)/site-packages ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2mod.la ; \
-	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2mod.la ; \
-	 )
-	# ======= tune pkg-config *.pc search path to the target destination for development =======
-	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_PPC32_SUFFIX)/pkgconfig ; \
-	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g" libxml-2.0.pc \
-	 )
-	# ======= tune xml2-config script for development =======
-	@( cd $(TARGET_DEST_DIR)/usr/bin/32 ; \
-	   sed -i "s,=/usr,=$(TARGET_DEST_DIR)/usr,g"                 xml2-config ; \
-	   sed -i "s,prefix/lib,prefix/lib$(MULTILIB_PPC32_SUFFIX),g" xml2-config ; \
-	   sed -i "s,lib64,lib$(MULTILIB_PPC32_SUFFIX),g"             xml2-config ; \
-	   sed -i "s,L/usr,L$(TARGET_DEST_DIR)/usr,g"                 xml2-config ; \
-	 )
-	# ======= Strip binaries =======
-	@( cd $(LIBXML2_32_PKG) ; \
-	   find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
-	   find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
-	 )
-ifeq ($(__ENABLE_STATIC__),yes)
-	@( cd $(LIBXML2_32_PKG) ; \
-	   find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
-	 )
-endif
-ifneq ($(PATCHELF),)
-	# ======= Set RPATH/RUNPATH for target binaries =======
-	@( cd $(LIBXML2_32_PKG)/usr/bin/32 ; \
-	   for file in `find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
-	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
-	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
-	       $(PATCHELF) --set-rpath $(TARGET_BIN_RPATH) $$file 1> /dev/null 2> /dev/null ; \
-	     fi ; \
-	   done ; \
-	 )
-	# ======= Set RPATH/RUNPATH for target shared objects =======
-	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_PPC32_SUFFIX) ; \
-	   for file in `find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
-	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
-	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
-	       $(PATCHELF) --set-rpath $(TARGET_LIB_RPATH) $$file 1> /dev/null 2> /dev/null ; \
-	     fi ; \
-	   done ; \
-	 )
-endif
-	@touch $@
-
-$(LIBXML2_32_PKG_DESCRIPTION_FILE): $(LIBXML2_32_PKG_DESCRIPTION_FILE_IN)
-	@cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
-
-$(pkg_certificate) : $(pkg_archive) ;
-$(pkg_signature)   : $(pkg_archive) ;
-$(pkg_description) : $(pkg_archive) ;
-
-$(pkg_archive): $(install_target) $(LIBXML2_32_PKG_DESCRIPTION_FILE) $(LIBXML2_32_PKG_INSTALL_SCRIPT)
-	@cp $(LIBXML2_32_PKG_DESCRIPTION_FILE) $(LIBXML2_32_PKG)/.DESCRIPTION
-	@cp $(LIBXML2_32_PKG_INSTALL_SCRIPT) $(LIBXML2_32_PKG)/.INSTALL
-	@$(BUILD_PKG_REQUIRES) $(LIBXML2_32_PKG)/.REQUIRES
-	@echo "pkgname=$(LIBXML2_32_PKG_NAME)"                            >  $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "pkgver=$(LIBXML2_32_PKG_VERSION)"                          >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "arch=$(LIBXML2_32_PKG_ARCH)"                               >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "distroname=$(LIBXML2_32_PKG_DISTRO_NAME)"                  >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "distrover=$(LIBXML2_32_PKG_DISTRO_VERSION)"                >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "group=$(LIBXML2_32_PKG_GROUP)"                             >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "short_description=\"$(LIBXML2_32_PKG_SHORT_DESCRIPTION)\"" >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "url=$(LIBXML2_32_PKG_URL)"                                 >> $(LIBXML2_32_PKG)/.PKGINFO ; \
-	 echo "license=$(LIBXML2_32_PKG_LICENSE)"                         >> $(LIBXML2_32_PKG)/.PKGINFO
-	@$(PSEUDO) sh -c "cd $(LIBXML2_32_PKG) && \
-	                  chown -R root:root . && \
-	                  $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/libxml2/2.9.9-ppc32
===================================================================
--- radix-1.9/libs/libxml2/2.9.9-ppc32	(revision 120)
+++ radix-1.9/libs/libxml2/2.9.9-ppc32	(nonexistent)

Property changes on: radix-1.9/libs/libxml2/2.9.9-ppc32
___________________________________________________________________
Deleted: svn:ignore
## -1,74 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.rk358x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/libs/libxml2/2.11.4/Makefile
===================================================================
--- radix-1.9/libs/libxml2/2.11.4/Makefile	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4/Makefile	(revision 121)
@@ -0,0 +1,342 @@
+
+COMPONENT_TARGETS  = $(HARDWARE_INTEL_PC32)
+COMPONENT_TARGETS += $(HARDWARE_INTEL_PC64)
+COMPONENT_TARGETS += $(HARDWARE_EBOX_3350DX2)
+COMPONENT_TARGETS += $(HARDWARE_CB1X)
+COMPONENT_TARGETS += $(HARDWARE_CB2X)
+COMPONENT_TARGETS += $(HARDWARE_CB3X)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP2E)
+COMPONENT_TARGETS += $(HARDWARE_NANOPI_NEO)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PP)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PL2)
+COMPONENT_TARGETS += $(HARDWARE_ORANGE_PI5)
+COMPONENT_TARGETS += $(HARDWARE_WECHIP_TX6)
+COMPONENT_TARGETS += $(HARDWARE_FFRK3288)
+COMPONENT_TARGETS += $(HARDWARE_POIN2)
+COMPONENT_TARGETS += $(HARDWARE_RK3328_CC)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_EDGE)
+COMPONENT_TARGETS += $(HARDWARE_LEEZ_P710)
+COMPONENT_TARGETS += $(HARDWARE_M201)
+COMPONENT_TARGETS += $(HARDWARE_MXV)
+COMPONENT_TARGETS += $(HARDWARE_P201)
+COMPONENT_TARGETS += $(HARDWARE_NEXBOX_A95X)
+COMPONENT_TARGETS += $(HARDWARE_ODROID_C2)
+COMPONENT_TARGETS += $(HARDWARE_P212)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM)
+COMPONENT_TARGETS += $(HARDWARE_Q201)
+COMPONENT_TARGETS += $(HARDWARE_ENYBOX_X2)
+COMPONENT_TARGETS += $(HARDWARE_KHADAS_VIM2)
+COMPONENT_TARGETS += $(HARDWARE_NIT6Q)
+COMPONENT_TARGETS += $(HARDWARE_OKMX6DL_C)
+COMPONENT_TARGETS += $(HARDWARE_OKMX6Q_C)
+COMPONENT_TARGETS += $(HARDWARE_BONE_BLACK)
+COMPONENT_TARGETS += $(HARDWARE_OMAP5UEVM)
+COMPONENT_TARGETS += $(HARDWARE_DRA7XXEVM)
+COMPONENT_TARGETS += $(HARDWARE_CI20)
+COMPONENT_TARGETS += $(HARDWARE_BAIKAL_T1)
+COMPONENT_TARGETS += $(HARDWARE_BAIKAL_M1)
+COMPONENT_TARGETS += $(HARDWARE_S824L)
+COMPONENT_TARGETS += $(HARDWARE_VESNIN)
+COMPONENT_TARGETS += $(HARDWARE_S824L_LSB)
+COMPONENT_TARGETS += $(HARDWARE_VESNIN_LSB)
+COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
+COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
+COMPONENT_TARGETS += $(HARDWARE_TL2WK2_LSB)
+COMPONENT_TARGETS += $(HARDWARE_TL2SV2_LSB)
+COMPONENT_TARGETS += $(HARDWARE_SIFIVE_U740)
+
+
+NEED_ABS_PATH      = true
+COMPONENT_IS_3PP   = true
+
+
+include ../../../build-system/constants.mk
+
+
+SOURCE_REQUIRES    = sources/packages/l/libxml2
+
+REQUIRES           = libs/zlib/1.2.13
+REQUIRES          += app/xz/5.2.7
+REQUIRES          += libs/icu4c/73.1
+REQUIRES          += libs/readline/8.2
+REQUIRES          += dev/python2/2.7.18
+REQUIRES          += dev/python3/3.10.8
+
+# ======= __END_OF_REQUIRES__ =======
+
+version            = 2.11.4
+tar_xz_archive     = $(SRC_PACKAGE_PATH)/packages/l/libxml2/libxml2-$(version).tar.xz
+SRC_ARCHIVE        = $(tar_xz_archive)
+SRC_DIR            = $(TARGET_BUILD_DIR)/libxml2-$(version)
+src_dir_name       = libxml2-$(version)
+src_done           = $(TARGET_BUILD_DIR)/.source_done
+
+PATCHES = PATCHES
+
+build2_dir         = $(TARGET_BUILD_DIR)/build2
+build3_dir         = $(TARGET_BUILD_DIR)/build3
+build_target       = $(TARGET_BUILD_DIR)/.build_done
+install_target     = $(TARGET_BUILD_DIR)/.install_done
+
+
+####### Targets
+
+PKG_GROUP = libs
+
+#
+# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
+#
+LIBXML2_PKG_NAME                = libxml2
+LIBXML2_PKG_VERSION             = 2.11.4
+LIBXML2_PKG_ARCH                = $(PKGARCH)
+LIBXML2_PKG_DISTRO_NAME         = $(DISTRO_NAME)
+LIBXML2_PKG_DISTRO_VERSION      = $(DISTRO_VERSION)
+LIBXML2_PKG_GROUP               = $(PKG_GROUP)
+###                              |---handy-ruler-------------------------------|
+LIBXML2_PKG_SHORT_DESCRIPTION   = XML parser library
+LIBXML2_PKG_URL                 = $(BUG_URL)
+LIBXML2_PKG_LICENSE             = custom
+LIBXML2_PKG_DESCRIPTION_FILE    = $(TARGET_BUILD_DIR)/$(LIBXML2_PKG_NAME)-pkg-description
+LIBXML2_PKG_DESCRIPTION_FILE_IN = $(LIBXML2_PKG_NAME)-pkg-description.in
+LIBXML2_PKG_INSTALL_SCRIPT      = $(LIBXML2_PKG_NAME)-pkg-install.sh
+
+LIBXML2_PKG      = $(CURDIR)/$(TARGET_BUILD_DIR)/$(LIBXML2_PKG_NAME)-package
+
+pkg_basename     = $(LIBXML2_PKG_NAME)-$(LIBXML2_PKG_VERSION)-$(LIBXML2_PKG_ARCH)-$(LIBXML2_PKG_DISTRO_NAME)-$(LIBXML2_PKG_DISTRO_VERSION)
+
+pkg_archive      = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
+pkg_certificate  = $(call cert-name,$(pkg_archive))
+pkg_signature    = $(call sign-name,$(pkg_archive))
+pkg_description  = $(call desc-name,$(pkg_archive))
+products         = $(call pkg-files,$(pkg_archive))
+
+BUILD_TARGETS    = $(build_target)
+BUILD_TARGETS   += $(install_target)
+
+PRODUCT_TARGETS  = $(products)
+
+ROOTFS_TARGETS   = $(pkg_archive)
+
+
+include ../../../build-system/core.mk
+
+
+env_sysroot = DESTDIR=$(LIBXML2_PKG)
+
+
+extra_configure_switches  = --libdir=/usr/lib$(LIBSUFFIX)
+extra_configure_switches += --docdir=/usr/share/doc/$(src_dir_name)
+extra_configure_switches += --infodir=/usr/share/info
+extra_configure_switches += --mandir=/usr/share/man
+extra_configure_switches += --disable-dependency-tracking
+
+ifeq ($(__ENABLE_STATIC__),yes)
+extra_configure_switches += --enable-static=yes
+else
+extra_configure_switches += --enable-static=no
+endif
+extra_configure_switches += --enable-shared=yes
+
+
+PYTHON2_VERSION = 2.7
+PYTHON3_VERSION = 3.10
+
+
+WITH_PYTHON2         = $(PYTHON2)
+python2_environment  = PYTHON=$(PYTHON2)
+python2_environment += PYTHON_VERSION=$(PYTHON2_VERSION)
+python2_environment += PYTHON_SITE_PACKAGES=/usr/lib$(LIBSUFFIX)/python$(PYTHON2_VERSION)/site-packages
+python2_environment += PYTHON_INCLUDES=$(TARGET_DEST_DIR)/usr/include/python$(PYTHON2_VERSION)
+python2_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/python$(PYTHON2_VERSION)-config --ldflags)'
+
+
+WITH_PYTHON3         = $(PYTHON3)
+python3_environment  = PYTHON=$(PYTHON3)
+python3_environment += PYTHON_VERSION=$(PYTHON3_VERSION)
+python3_environment += PYTHON_SITE_PACKAGES=/usr/lib$(LIBSUFFIX)/python$(PYTHON3_VERSION)/site-packages
+python3_environment += PYTHON_INCLUDES='$(shell $(TARGET_DEST_DIR)/usr/bin/python$(PYTHON3_VERSION)-config --includes)'
+python3_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/python$(PYTHON3_VERSION)-config --ldflags)'
+
+
+CFLAGS += -Wno-maybe-uninitialized -Wno-format-overflow -Wno-cast-align
+
+TARGET_BIN_RPATH = /lib$(LIBSUFFIX):/usr/lib$(LIBSUFFIX)
+TARGET_LIB_RPATH = /lib$(LIBSUFFIX):/usr/lib$(LIBSUFFIX):/usr/lib/../lib$(LIBSUFFIX)
+
+
+####### Dependencies
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	@touch $@
+
+$(build_target): $(src_done)
+	@mkdir -p $(build2_dir)
+	# ======= Build libxml2 with Python2 =======
+	@cd $(build2_dir) && \
+	  $(BUILD_ENVIRONMENT) $(python2_environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET)             \
+	  --with-python=$(WITH_PYTHON2) \
+	  $(extra_configure_switches)
+	@( cd $(build2_dir) ; \
+	   for file in `find . -type f -name 'Makefile'` ; do \
+	     sed -i '/^pyexecdir =/s,lib,lib$(LIBSUFFIX),' $${file} ; \
+	     sed -i '/^pythondir =/s,lib,lib$(LIBSUFFIX),' $${file} ; \
+	   done ; \
+	 )
+	@cd $(build2_dir) && $(BUILD_ENVIRONMENT) $(MAKE) $(python2_environment)
+	@mkdir -p $(build3_dir)
+	# ======= Build libxml2 with Python3 =======
+	@cd $(build3_dir) && \
+	  $(BUILD_ENVIRONMENT) $(python3_environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET)             \
+	  --with-python=$(WITH_PYTHON3) \
+	  $(extra_configure_switches)
+	@( cd $(build3_dir) ; \
+	   for file in `find . -type f -name 'Makefile'` ; do \
+	     sed -i '/^pyexecdir =/s,lib,lib$(LIBSUFFIX),' $${file} ; \
+	     sed -i '/^pythondir =/s,lib,lib$(LIBSUFFIX),' $${file} ; \
+	   done ; \
+	 )
+	@cd $(build3_dir) && $(BUILD_ENVIRONMENT) $(MAKE) $(python3_environment)
+	@touch $@
+
+$(install_target): $(build_target)
+	@mkdir -p $(LIBXML2_PKG)
+	@cd $(build2_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
+	@( cd $(LIBXML2_PKG) ; \
+	   rm -rf bin include share lib$(LIBSUFFIX)/{cmake,pkgconfig} lib$(LIBSUFFIX)/lib* ; \
+	 )
+	@cd $(build3_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
+	# ======= Install Documentation =======
+	@if [ -d $(LIBXML2_PKG)/usr/share/man ]; then \
+	  ( cd $(LIBXML2_PKG)/usr/share/man ; \
+	    for manpagedir in `find . -type d -name "man*"` ; do \
+	      ( cd $$manpagedir ; \
+	        for eachpage in `find . -type l -maxdepth 1` ; do \
+	          ln -s `readlink $$eachpage`.gz $$eachpage.gz ; \
+	          rm $$eachpage ; \
+	        done ; \
+	        gzip -9 *.?  ; \
+	      ) \
+	    done \
+	  ) \
+	 fi
+	@mkdir -p $(LIBXML2_PKG)/usr/doc/$(src_dir_name)
+	@cp -a $(SRC_DIR)/Copyright \
+	       $(LIBXML2_PKG)/usr/doc/$(src_dir_name)
+	@mkdir -p $(LIBXML2_PKG)/usr/share/doc/$(src_dir_name)
+	@( cd $(SRC_DIR) ; \
+	   cp -a Copyright INSTALL README.md \
+	         $(LIBXML2_PKG)/usr/share/doc/$(src_dir_name) ; \
+	 )
+	@ln -sf ../../gtk-doc/html/libxml2 $(LIBXML2_PKG)/usr/share/doc/$(src_dir_name)/html
+	@( cd $(SRC_DIR) ; \
+	   if [ -r NEWS ]; then \
+	     DOCSDIR=`echo $(LIBXML2_PKG)/usr/share/doc/$(src_dir_name)` ; \
+	     cat NEWS | head -n 1000 > $$DOCSDIR/NEWS ; \
+	     touch -r NEWS $$DOCSDIR/NEWS ; \
+	   fi \
+	 )
+	# ======= remove toolchain path from xml2-config script =======
+	@( cd $(LIBXML2_PKG)/usr/bin ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" xml2-config ; \
+	 )
+	# ======= remove toolchain path from target libtool *.la files =======
+	@( cd $(LIBXML2_PKG)/usr/lib$(LIBSUFFIX) ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2.la  ; \
+	 )
+	@( cd $(LIBXML2_PKG)/usr/lib$(LIBSUFFIX)/python$(PYTHON2_VERSION)/site-packages ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2mod.la ; \
+	 )
+	@( cd $(LIBXML2_PKG)/usr/lib$(LIBSUFFIX)/python$(PYTHON3_VERSION)/site-packages ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2mod.la ; \
+	 )
+	@( cd $(LIBXML2_PKG)/usr/lib$(LIBSUFFIX)/pkgconfig ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml-2.0.pc  ; \
+	 )
+	# ======= Install the same to $(TARGET_DEST_DIR) =======
+	$(call install-into-devenv, $(LIBXML2_PKG))
+	# ======= tune libtool *.la search path to the target destination for development =======
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(LIBSUFFIX) ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2.la  ; \
+	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2.la  ; \
+	 )
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(LIBSUFFIX)/python$(PYTHON2_VERSION)/site-packages ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2mod.la ; \
+	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2mod.la ; \
+	 )
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(LIBSUFFIX)/python$(PYTHON3_VERSION)/site-packages ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2mod.la ; \
+	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2mod.la ; \
+	 )
+	# ======= tune pkg-config *.pc search path to the target destination for development =======
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(LIBSUFFIX)/pkgconfig ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g" libxml-2.0.pc ; \
+	 )
+	# ======= tune xml2-config script for development =======
+	@( cd $(TARGET_DEST_DIR)/usr/bin ; \
+	   sed -i "s,=/usr,=$(TARGET_DEST_DIR)/usr,g"     xml2-config ; \
+	   sed -i "s,prefix/lib,prefix/lib$(LIBSUFFIX),g" xml2-config ; \
+	   sed -i "s,L/usr,L$(TARGET_DEST_DIR)/usr,g"     xml2-config ; \
+	 )
+	# ======= Strip binaries =======
+	@( cd $(LIBXML2_PKG) ; \
+	   find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
+	   find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
+	 )
+ifeq ($(__ENABLE_STATIC__),yes)
+	@( cd $(LIBXML2_PKG) ; \
+	   find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
+	 )
+endif
+ifneq ($(PATCHELF),)
+	# ======= Set RPATH/RUNPATH for target binaries =======
+	@( cd $(LIBXML2_PKG)/usr/bin ; \
+	   for file in `find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
+	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
+	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
+	       $(PATCHELF) --set-rpath $(TARGET_BIN_RPATH) $$file 1> /dev/null 2> /dev/null ; \
+	     fi ; \
+	   done ; \
+	 )
+	# ======= Set RPATH/RUNPATH for target shared objects =======
+	@( cd $(LIBXML2_PKG)/usr/lib$(LIBSUFFIX) ; \
+	   for file in `find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
+	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
+	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
+	       $(PATCHELF) --set-rpath $(TARGET_LIB_RPATH) $$file 1> /dev/null 2> /dev/null ; \
+	     fi ; \
+	   done ; \
+	 )
+endif
+	@touch $@
+
+$(LIBXML2_PKG_DESCRIPTION_FILE): $(LIBXML2_PKG_DESCRIPTION_FILE_IN)
+	@cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
+
+$(pkg_certificate) : $(pkg_archive) ;
+$(pkg_signature)   : $(pkg_archive) ;
+$(pkg_description) : $(pkg_archive) ;
+
+$(pkg_archive): $(install_target) $(LIBXML2_PKG_DESCRIPTION_FILE) $(LIBXML2_PKG_INSTALL_SCRIPT)
+	@cp $(LIBXML2_PKG_DESCRIPTION_FILE) $(LIBXML2_PKG)/.DESCRIPTION
+	@cp $(LIBXML2_PKG_INSTALL_SCRIPT) $(LIBXML2_PKG)/.INSTALL
+	@$(BUILD_PKG_REQUIRES) $(LIBXML2_PKG)/.REQUIRES
+	@echo "pkgname=$(LIBXML2_PKG_NAME)"                            >  $(LIBXML2_PKG)/.PKGINFO ; \
+	 echo "pkgver=$(LIBXML2_PKG_VERSION)"                          >> $(LIBXML2_PKG)/.PKGINFO ; \
+	 echo "arch=$(LIBXML2_PKG_ARCH)"                               >> $(LIBXML2_PKG)/.PKGINFO ; \
+	 echo "distroname=$(LIBXML2_PKG_DISTRO_NAME)"                  >> $(LIBXML2_PKG)/.PKGINFO ; \
+	 echo "distrover=$(LIBXML2_PKG_DISTRO_VERSION)"                >> $(LIBXML2_PKG)/.PKGINFO ; \
+	 echo "group=$(LIBXML2_PKG_GROUP)"                             >> $(LIBXML2_PKG)/.PKGINFO ; \
+	 echo "short_description=\"$(LIBXML2_PKG_SHORT_DESCRIPTION)\"" >> $(LIBXML2_PKG)/.PKGINFO ; \
+	 echo "url=$(LIBXML2_PKG_URL)"                                 >> $(LIBXML2_PKG)/.PKGINFO ; \
+	 echo "license=$(LIBXML2_PKG_LICENSE)"                         >> $(LIBXML2_PKG)/.PKGINFO
+	@$(PSEUDO) sh -c "cd $(LIBXML2_PKG) && \
+	                  chown -R root:root . && \
+	                  $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/libxml2/2.11.4/PATCHES
===================================================================
--- radix-1.9/libs/libxml2/2.11.4/PATCHES	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4/PATCHES	(revision 121)
@@ -0,0 +1,2 @@
+
+../../../sources/packages/l/libxml2/patches/libxml2-2.11.4-python-unicode.patch -p0
Index: radix-1.9/libs/libxml2/2.11.4/libxml2-pkg-description.in
===================================================================
--- radix-1.9/libs/libxml2/2.11.4/libxml2-pkg-description.in	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4/libxml2-pkg-description.in	(revision 121)
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.  Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in.  You must
+# make exactly 11 lines for the formatting to be correct.  It's also
+# customary to leave one space after the ':'.
+
+       |-----handy-ruler------------------------------------------------------|
+libxml2: libxml2 @VERSION@ (XML parser library)
+libxml2:
+libxml2: Libxml2 is the XML C parser library and toolkit. XML itself is a
+libxml2: metalanguage to design markup languages - i.e. a text language where
+libxml2: structures are added to the content using extra "markup" information
+libxml2: enclosed between angle brackets. HTML is the most well-known markup
+libxml2: language. Though the library is written in C, a variety of language
+libxml2: bindings make it available in other environments.
+libxml2:
+libxml2:
+libxml2:
Index: radix-1.9/libs/libxml2/2.11.4/libxml2-pkg-install.sh
===================================================================
--- radix-1.9/libs/libxml2/2.11.4/libxml2-pkg-install.sh	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4/libxml2-pkg-install.sh	(revision 121)
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# arg 1:  the new package version
+pre_install() {
+  /bin/true
+}
+
+# arg 1:  the new package version
+post_install() {
+  /bin/true
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+pre_update() {
+  /bin/true
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+post_update() {
+  post_install
+}
+
+# arg 1:  the old package version
+pre_remove() {
+  /bin/true
+}
+
+# arg 1:  the old package version
+post_remove() {
+  /bin/true
+}
+
+
+operation=$1
+shift
+
+$operation $*

Property changes on: radix-1.9/libs/libxml2/2.11.4/libxml2-pkg-install.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/libs/libxml2/2.11.4
===================================================================
--- radix-1.9/libs/libxml2/2.11.4	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4	(revision 121)

Property changes on: radix-1.9/libs/libxml2/2.11.4
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,74 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.rk358x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/libs/libxml2/2.11.4-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libxml2/2.11.4-ppc32/Makefile	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4-ppc32/Makefile	(revision 121)
@@ -0,0 +1,278 @@
+
+COMPONENT_TARGETS  = $(HARDWARE_S824L)
+COMPONENT_TARGETS += $(HARDWARE_VESNIN)
+COMPONENT_TARGETS += $(HARDWARE_TL2WK2)
+COMPONENT_TARGETS += $(HARDWARE_TL2SV2)
+
+NEED_ABS_PATH      = true
+COMPONENT_IS_3PP   = true
+
+CREATE_PPC32_PACKAGE = true
+
+
+include ../../../build-system/constants.mk
+
+
+SOURCE_REQUIRES    = sources/packages/l/libxml2
+
+REQUIRES           = libs/libxml2/2.11.4
+REQUIRES          += libs/zlib/1.2.13-ppc32
+REQUIRES          += app/xz/5.2.7-ppc32
+REQUIRES          += libs/icu4c/73.1-ppc32
+REQUIRES          += libs/readline/8.2-ppc32
+REQUIRES          += dev/python2/2.7.18-ppc32
+REQUIRES          += dev/python3/3.10.8-ppc32
+
+# ======= __END_OF_REQUIRES__ =======
+
+version            = 2.11.4
+tar_xz_archive     = $(SRC_PACKAGE_PATH)/packages/l/libxml2/libxml2-$(version).tar.xz
+SRC_ARCHIVE        = $(tar_xz_archive)
+SRC_DIR            = $(TARGET_BUILD_DIR)/libxml2-$(version)
+src_dir_name       = libxml2-$(version)
+src_done           = $(TARGET_BUILD_DIR)/.source_done
+
+PATCHES = PATCHES
+
+build2_dir         = $(TARGET_BUILD_DIR)/build2
+build3_dir         = $(TARGET_BUILD_DIR)/build3
+build_target       = $(TARGET_BUILD_DIR)/.build_done
+install_target     = $(TARGET_BUILD_DIR)/.install_done
+
+
+####### Targets
+
+PKG_GROUP = libs
+#
+# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
+#
+LIBXML2_32_PKG_NAME                = libxml2-x32
+LIBXML2_32_PKG_VERSION             = 2.11.4
+LIBXML2_32_PKG_ARCH                = $(PKGARCH)
+LIBXML2_32_PKG_DISTRO_NAME         = $(DISTRO_NAME)
+LIBXML2_32_PKG_DISTRO_VERSION      = $(DISTRO_VERSION)
+LIBXML2_32_PKG_GROUP               = $(PKG_GROUP)
+###                                 |---handy-ruler-------------------------------|
+LIBXML2_32_PKG_SHORT_DESCRIPTION   = XML parser library
+LIBXML2_32_PKG_URL                 = $(BUG_URL)
+LIBXML2_32_PKG_LICENSE             = custom
+LIBXML2_32_PKG_DESCRIPTION_FILE    = $(TARGET_BUILD_DIR)/$(LIBXML2_32_PKG_NAME)-pkg-description
+LIBXML2_32_PKG_DESCRIPTION_FILE_IN = $(LIBXML2_32_PKG_NAME)-pkg-description.in
+LIBXML2_32_PKG_INSTALL_SCRIPT      = $(LIBXML2_32_PKG_NAME)-pkg-install.sh
+
+LIBXML2_32_PKG   = $(CURDIR)/$(TARGET_BUILD_DIR)/$(LIBXML2_32_PKG_NAME)-package
+
+pkg_basename     = $(LIBXML2_32_PKG_NAME)-$(LIBXML2_32_PKG_VERSION)-$(LIBXML2_32_PKG_ARCH)-$(LIBXML2_32_PKG_DISTRO_NAME)-$(LIBXML2_32_PKG_DISTRO_VERSION)
+
+pkg_archive      = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
+pkg_certificate  = $(call cert-name,$(pkg_archive))
+pkg_signature    = $(call sign-name,$(pkg_archive))
+pkg_description  = $(call desc-name,$(pkg_archive))
+products         = $(call pkg-files,$(pkg_archive))
+
+BUILD_TARGETS    = $(build_target)
+BUILD_TARGETS   += $(install_target)
+
+PRODUCT_TARGETS  = $(products)
+
+ROOTFS_TARGETS   = $(pkg_archive)
+
+
+include ../../../build-system/core.mk
+
+
+env_sysroot  = DESTDIR=$(LIBXML2_32_PKG)
+
+
+extra_configure_switches  = --libdir=/usr/lib$(MULTILIB_PPC32_SUFFIX)
+extra_configure_switches += --docdir=/usr/share/doc/$(src_dir_name)
+extra_configure_switches += --infodir=/usr/share/info
+extra_configure_switches += --mandir=/usr/share/man
+
+extra_configure_switches += --bindir=/usr/bin/32
+
+extra_configure_switches += --disable-dependency-tracking
+
+ifeq ($(__ENABLE_STATIC__),yes)
+extra_configure_switches += --enable-static=yes
+else
+extra_configure_switches += --enable-static=no
+endif
+extra_configure_switches += --enable-shared=yes
+
+
+PYTHON2_VERSION = 2.7
+PYTHON3_VERSION = 3.10
+
+
+WITH_PYTHON2         = $(PYTHON2)
+python2_environment  = PYTHON=$(PYTHON2)
+python2_environment += PYTHON_VERSION=$(PYTHON2_VERSION)
+python2_environment += PYTHON_SITE_PACKAGES=/usr/lib$(MULTILIB_PPC32_SUFFIX)/python$(PYTHON2_VERSION)/site-packages
+python2_environment += PYTHON_INCLUDES=$(TARGET_DEST_DIR)/usr/include/python$(PYTHON2_VERSION)
+python2_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON2_VERSION)-config --ldflags)'
+
+
+WITH_PYTHON3         = $(PYTHON3)
+python3_environment  = PYTHON=$(PYTHON3)
+python3_environment += PYTHON_VERSION=$(PYTHON3_VERSION)
+python3_environment += PYTHON_SITE_PACKAGES=/usr/lib$(MULTILIB_PPC32_SUFFIX)/python$(PYTHON3_VERSION)/site-packages
+python3_environment += PYTHON_INCLUDES='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON3_VERSION)-config --includes)'
+python3_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON3_VERSION)-config --ldflags)'
+
+
+CFLAGS += -Wno-maybe-uninitialized -Wno-format-overflow -Wno-cast-align
+
+TARGET_BIN_RPATH = /lib$(MULTILIB_PPC32_SUFFIX):/usr/lib$(MULTILIB_PPC32_SUFFIX)
+TARGET_LIB_RPATH = /lib$(MULTILIB_PPC32_SUFFIX):/usr/lib$(MULTILIB_PPC32_SUFFIX):/usr/lib/../lib$(MULTILIB_PPC32_SUFFIX)
+
+
+####### Dependencies
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	@touch $@
+
+$(build_target): $(src_done)
+	@mkdir -p $(build2_dir)
+	# ======= Build libxml2 with Python2 =======
+	@cd $(build2_dir) && \
+	  $(BUILD_ENVIRONMENT) $(python2_environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET32)           \
+	  --with-python=$(WITH_PYTHON2) \
+	  $(extra_configure_switches)
+	@( cd $(build2_dir) ; \
+	   for file in `find . -type f -name 'Makefile'` ; do \
+	     sed -i '/^pyexecdir =/s,lib,lib$(MULTILIB_PPC32_SUFFIX),' $${file} ; \
+	     sed -i '/^pythondir =/s,lib,lib$(MULTILIB_PPC32_SUFFIX),' $${file} ; \
+	   done ; \
+	 )
+	@cd $(build2_dir) && $(BUILD_ENVIRONMENT) $(MAKE) $(python2_environment)
+	@mkdir -p $(build3_dir)
+	# ======= Build libxml2 with Python3 =======
+	@cd $(build3_dir) && \
+	  $(BUILD_ENVIRONMENT) $(python3_environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET32)           \
+	  --with-python=$(WITH_PYTHON3) \
+	  $(extra_configure_switches)
+	@( cd $(build3_dir) ; \
+	   for file in `find . -type f -name 'Makefile'` ; do \
+	     sed -i '/^pyexecdir =/s,lib,lib$(MULTILIB_PPC32_SUFFIX),' $${file} ; \
+	     sed -i '/^pythondir =/s,lib,lib$(MULTILIB_PPC32_SUFFIX),' $${file} ; \
+	   done ; \
+	 )
+	@cd $(build3_dir) && $(BUILD_ENVIRONMENT) $(MAKE) $(python3_environment)
+	@touch $@
+
+$(install_target): $(build_target)
+	@mkdir -p $(LIBXML2_32_PKG)
+	@cd $(build2_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
+	@( cd $(LIBXML2_32_PKG) ; \
+	   rm -rf bin include share lib$(MULTILIB_PPC32_SUFFIX)/{cmake,pkgconfig} lib$(MULTILIB_PPC32_SUFFIX)/lib* ; \
+	 )
+	@cd $(build3_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
+	@rm -rf $(LIBXML2_32_PKG)/usr/include
+	@rm -rf $(LIBXML2_32_PKG)/usr/share
+	# ======= remove toolchain path from xml2-config script =======
+	@( cd $(LIBXML2_32_PKG)/usr/bin/32 ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g"               xml2-config ; \
+	   sed -i "s,lib64,lib$(MULTILIB_PPC32_SUFFIX),g" xml2-config ; \
+	 )
+	# ======= remove toolchain path from target libtool *.la files =======
+	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_PPC32_SUFFIX) ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2.la  ; \
+	 )
+	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_PPC32_SUFFIX)/python$(PYTHON2_VERSION)/site-packages ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2mod.la ; \
+	 )
+	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_PPC32_SUFFIX)/python$(PYTHON3_VERSION)/site-packages ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2mod.la ; \
+	 )
+	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_PPC32_SUFFIX)/pkgconfig ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml-2.0.pc ; \
+	 )
+	# ======= Install the same to $(TARGET_DEST_DIR) =======
+	$(call install-into-devenv, $(LIBXML2_32_PKG))
+	# ======= tune libtool *.la search path to the target destination for development =======
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_PPC32_SUFFIX) ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2.la  ; \
+	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2.la  ; \
+	 )
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_PPC32_SUFFIX)/python$(PYTHON2_VERSION)/site-packages ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2mod.la ; \
+	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2mod.la ; \
+	 )
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_PPC32_SUFFIX)/python$(PYTHON3_VERSION)/site-packages ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2mod.la ; \
+	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2mod.la ; \
+	 )
+	# ======= tune pkg-config *.pc search path to the target destination for development =======
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_PPC32_SUFFIX)/pkgconfig ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g" libxml-2.0.pc \
+	 )
+	# ======= tune xml2-config script for development =======
+	@( cd $(TARGET_DEST_DIR)/usr/bin/32 ; \
+	   sed -i "s,=/usr,=$(TARGET_DEST_DIR)/usr,g"                 xml2-config ; \
+	   sed -i "s,prefix/lib,prefix/lib$(MULTILIB_PPC32_SUFFIX),g" xml2-config ; \
+	   sed -i "s,L/usr,L$(TARGET_DEST_DIR)/usr,g"                 xml2-config ; \
+	 )
+	# ======= Strip binaries =======
+	@( cd $(LIBXML2_32_PKG) ; \
+	   find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
+	   find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
+	 )
+ifeq ($(__ENABLE_STATIC__),yes)
+	@( cd $(LIBXML2_32_PKG) ; \
+	   find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
+	 )
+endif
+ifneq ($(PATCHELF),)
+	# ======= Set RPATH/RUNPATH for target binaries =======
+	@( cd $(LIBXML2_32_PKG)/usr/bin/32 ; \
+	   for file in `find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
+	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
+	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
+	       $(PATCHELF) --set-rpath $(TARGET_BIN_RPATH) $$file 1> /dev/null 2> /dev/null ; \
+	     fi ; \
+	   done ; \
+	 )
+	# ======= Set RPATH/RUNPATH for target shared objects =======
+	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_PPC32_SUFFIX) ; \
+	   for file in `find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
+	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
+	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
+	       $(PATCHELF) --set-rpath $(TARGET_LIB_RPATH) $$file 1> /dev/null 2> /dev/null ; \
+	     fi ; \
+	   done ; \
+	 )
+endif
+	@touch $@
+
+$(LIBXML2_32_PKG_DESCRIPTION_FILE): $(LIBXML2_32_PKG_DESCRIPTION_FILE_IN)
+	@cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
+
+$(pkg_certificate) : $(pkg_archive) ;
+$(pkg_signature)   : $(pkg_archive) ;
+$(pkg_description) : $(pkg_archive) ;
+
+$(pkg_archive): $(install_target) $(LIBXML2_32_PKG_DESCRIPTION_FILE) $(LIBXML2_32_PKG_INSTALL_SCRIPT)
+	@cp $(LIBXML2_32_PKG_DESCRIPTION_FILE) $(LIBXML2_32_PKG)/.DESCRIPTION
+	@cp $(LIBXML2_32_PKG_INSTALL_SCRIPT) $(LIBXML2_32_PKG)/.INSTALL
+	@$(BUILD_PKG_REQUIRES) $(LIBXML2_32_PKG)/.REQUIRES
+	@echo "pkgname=$(LIBXML2_32_PKG_NAME)"                            >  $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "pkgver=$(LIBXML2_32_PKG_VERSION)"                          >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "arch=$(LIBXML2_32_PKG_ARCH)"                               >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "distroname=$(LIBXML2_32_PKG_DISTRO_NAME)"                  >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "distrover=$(LIBXML2_32_PKG_DISTRO_VERSION)"                >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "group=$(LIBXML2_32_PKG_GROUP)"                             >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "short_description=\"$(LIBXML2_32_PKG_SHORT_DESCRIPTION)\"" >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "url=$(LIBXML2_32_PKG_URL)"                                 >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "license=$(LIBXML2_32_PKG_LICENSE)"                         >> $(LIBXML2_32_PKG)/.PKGINFO
+	@$(PSEUDO) sh -c "cd $(LIBXML2_32_PKG) && \
+	                  chown -R root:root . && \
+	                  $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/libxml2/2.11.4-ppc32/PATCHES
===================================================================
--- radix-1.9/libs/libxml2/2.11.4-ppc32/PATCHES	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4-ppc32/PATCHES	(revision 121)
@@ -0,0 +1,2 @@
+
+../../../sources/packages/l/libxml2/patches/libxml2-2.11.4-python-unicode.patch -p0
Index: radix-1.9/libs/libxml2/2.11.4-ppc32/libxml2-x32-pkg-description.in
===================================================================
--- radix-1.9/libs/libxml2/2.11.4-ppc32/libxml2-x32-pkg-description.in	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4-ppc32/libxml2-x32-pkg-description.in	(revision 121)
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.  Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in.  You must
+# make exactly 11 lines for the formatting to be correct.  It's also
+# customary to leave one space after the ':'.
+
+           |-----handy-ruler------------------------------------------------------|
+libxml2-x32: libxml2-x32 @VERSION@ (XML parser library)
+libxml2-x32:
+libxml2-x32: Libxml2 is the XML C parser library and toolkit. XML itself is a
+libxml2-x32: metalanguage to design markup languages - i.e. a text language where
+libxml2-x32: structures are added to the content using extra "markup" information
+libxml2-x32: enclosed between angle brackets. HTML is the most well-known markup
+libxml2-x32: language. Though the library is written in C, a variety of language
+libxml2-x32: bindings make it available in other environments.
+libxml2-x32:
+libxml2-x32:
+libxml2-x32:
Index: radix-1.9/libs/libxml2/2.11.4-ppc32/libxml2-x32-pkg-install.sh
===================================================================
--- radix-1.9/libs/libxml2/2.11.4-ppc32/libxml2-x32-pkg-install.sh	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4-ppc32/libxml2-x32-pkg-install.sh	(revision 121)
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# arg 1:  the new package version
+pre_install() {
+  /bin/true
+}
+
+# arg 1:  the new package version
+post_install() {
+  /bin/true
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+pre_update() {
+  /bin/true
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+post_update() {
+  post_install
+}
+
+# arg 1:  the old package version
+pre_remove() {
+  /bin/true
+}
+
+# arg 1:  the old package version
+post_remove() {
+  /bin/true
+}
+
+
+operation=$1
+shift
+
+$operation $*

Property changes on: radix-1.9/libs/libxml2/2.11.4-ppc32/libxml2-x32-pkg-install.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/libs/libxml2/2.11.4-ppc32
===================================================================
--- radix-1.9/libs/libxml2/2.11.4-ppc32	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4-ppc32	(revision 121)

Property changes on: radix-1.9/libs/libxml2/2.11.4-ppc32
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,74 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.rk358x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/libs/libxml2/2.11.4-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libxml2/2.11.4-x86_32/Makefile	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4-x86_32/Makefile	(revision 121)
@@ -0,0 +1,275 @@
+
+COMPONENT_TARGETS  = $(HARDWARE_INTEL_PC64)
+
+NEED_ABS_PATH      = true
+COMPONENT_IS_3PP   = true
+
+CREATE_X86_32_PACKAGE = true
+
+
+include ../../../build-system/constants.mk
+
+
+SOURCE_REQUIRES    = sources/packages/l/libxml2
+
+REQUIRES           = libs/libxml2/2.11.4
+REQUIRES          += libs/zlib/1.2.13-x86_32
+REQUIRES          += app/xz/5.2.7-x86_32
+REQUIRES          += libs/icu4c/73.1-x86_32
+REQUIRES          += libs/readline/8.2-x86_32
+REQUIRES          += dev/python2/2.7.18-x86_32
+REQUIRES          += dev/python3/3.10.8-x86_32
+
+# ======= __END_OF_REQUIRES__ =======
+
+version            = 2.11.4
+tar_xz_archive     = $(SRC_PACKAGE_PATH)/packages/l/libxml2/libxml2-$(version).tar.xz
+SRC_ARCHIVE        = $(tar_xz_archive)
+SRC_DIR            = $(TARGET_BUILD_DIR)/libxml2-$(version)
+src_dir_name       = libxml2-$(version)
+src_done           = $(TARGET_BUILD_DIR)/.source_done
+
+PATCHES = PATCHES
+
+build2_dir         = $(TARGET_BUILD_DIR)/build2
+build3_dir         = $(TARGET_BUILD_DIR)/build3
+build_target       = $(TARGET_BUILD_DIR)/.build_done
+install_target     = $(TARGET_BUILD_DIR)/.install_done
+
+
+####### Targets
+
+PKG_GROUP = libs
+#
+# *PKG_NAME & *PKG_VERSION shouldn't be a reference to value.
+#
+LIBXML2_32_PKG_NAME                = libxml2-x32
+LIBXML2_32_PKG_VERSION             = 2.11.4
+LIBXML2_32_PKG_ARCH                = $(PKGARCH)
+LIBXML2_32_PKG_DISTRO_NAME         = $(DISTRO_NAME)
+LIBXML2_32_PKG_DISTRO_VERSION      = $(DISTRO_VERSION)
+LIBXML2_32_PKG_GROUP               = $(PKG_GROUP)
+###                                 |---handy-ruler-------------------------------|
+LIBXML2_32_PKG_SHORT_DESCRIPTION   = XML parser library
+LIBXML2_32_PKG_URL                 = $(BUG_URL)
+LIBXML2_32_PKG_LICENSE             = custom
+LIBXML2_32_PKG_DESCRIPTION_FILE    = $(TARGET_BUILD_DIR)/$(LIBXML2_32_PKG_NAME)-pkg-description
+LIBXML2_32_PKG_DESCRIPTION_FILE_IN = $(LIBXML2_32_PKG_NAME)-pkg-description.in
+LIBXML2_32_PKG_INSTALL_SCRIPT      = $(LIBXML2_32_PKG_NAME)-pkg-install.sh
+
+LIBXML2_32_PKG   = $(CURDIR)/$(TARGET_BUILD_DIR)/$(LIBXML2_32_PKG_NAME)-package
+
+pkg_basename     = $(LIBXML2_32_PKG_NAME)-$(LIBXML2_32_PKG_VERSION)-$(LIBXML2_32_PKG_ARCH)-$(LIBXML2_32_PKG_DISTRO_NAME)-$(LIBXML2_32_PKG_DISTRO_VERSION)
+
+pkg_archive      = $(TARGET_BUILD_DIR)/$(PKG_GROUP)/$(pkg_basename).$(pkg_arch_suffix)
+pkg_certificate  = $(call cert-name,$(pkg_archive))
+pkg_signature    = $(call sign-name,$(pkg_archive))
+pkg_description  = $(call desc-name,$(pkg_archive))
+products         = $(call pkg-files,$(pkg_archive))
+
+BUILD_TARGETS    = $(build_target)
+BUILD_TARGETS   += $(install_target)
+
+PRODUCT_TARGETS  = $(products)
+
+ROOTFS_TARGETS   = $(pkg_archive)
+
+
+include ../../../build-system/core.mk
+
+
+env_sysroot  = DESTDIR=$(LIBXML2_32_PKG)
+
+
+extra_configure_switches  = --libdir=/usr/lib$(MULTILIB_X86_32_SUFFIX)
+extra_configure_switches += --docdir=/usr/share/doc/$(src_dir_name)
+extra_configure_switches += --infodir=/usr/share/info
+extra_configure_switches += --mandir=/usr/share/man
+
+extra_configure_switches += --bindir=/usr/bin/32
+
+extra_configure_switches += --disable-dependency-tracking
+
+ifeq ($(__ENABLE_STATIC__),yes)
+extra_configure_switches += --enable-static=yes
+else
+extra_configure_switches += --enable-static=no
+endif
+extra_configure_switches += --enable-shared=yes
+
+
+PYTHON2_VERSION = 2.7
+PYTHON3_VERSION = 3.10
+
+
+WITH_PYTHON2         = $(PYTHON2)
+python2_environment  = PYTHON=$(PYTHON2)
+python2_environment += PYTHON_VERSION=$(PYTHON2_VERSION)
+python2_environment += PYTHON_SITE_PACKAGES=/usr/lib$(MULTILIB_X86_32_SUFFIX)/python$(PYTHON2_VERSION)/site-packages
+python2_environment += PYTHON_INCLUDES=$(TARGET_DEST_DIR)/usr/include/python$(PYTHON2_VERSION)
+python2_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON2_VERSION)-config --ldflags)'
+
+
+WITH_PYTHON3         = $(PYTHON3)
+python3_environment  = PYTHON=$(PYTHON3)
+python3_environment += PYTHON_VERSION=$(PYTHON3_VERSION)
+python3_environment += PYTHON_SITE_PACKAGES=/usr/lib$(MULTILIB_X86_32_SUFFIX)/python$(PYTHON3_VERSION)/site-packages
+python3_environment += PYTHON_INCLUDES='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON3_VERSION)-config --includes)'
+python3_environment += PYTHON_LIBS='$(shell $(TARGET_DEST_DIR)/usr/bin/32/python$(PYTHON3_VERSION)-config --ldflags)'
+
+
+CFLAGS += -Wno-maybe-uninitialized -Wno-format-overflow -Wno-cast-align
+
+TARGET_BIN_RPATH = /lib$(MULTILIB_X86_32_SUFFIX):/usr/lib$(MULTILIB_X86_32_SUFFIX)
+TARGET_LIB_RPATH = /lib$(MULTILIB_X86_32_SUFFIX):/usr/lib$(MULTILIB_X86_32_SUFFIX):/usr/lib/../lib$(MULTILIB_X86_32_SUFFIX)
+
+
+####### Dependencies
+
+$(src_done): $(SRC_ARCHIVE) $(PATCHES_DEP)
+	$(UNPACK_SRC_ARCHIVE)
+	$(APPLY_PATCHES)
+	@touch $@
+
+$(build_target): $(src_done)
+	@mkdir -p $(build2_dir)
+	# ======= Build libxml2 with Python2 =======
+	@cd $(build2_dir) && \
+	  $(BUILD_ENVIRONMENT) $(python2_environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET32)           \
+	  --with-python=$(WITH_PYTHON2) \
+	  $(extra_configure_switches)
+	@( cd $(build2_dir) ; \
+	   for file in `find . -type f -name 'Makefile'` ; do \
+	     sed -i '/^pyexecdir =/s,lib,lib$(MULTILIB_X86_32_SUFFIX),' $${file} ; \
+	     sed -i '/^pythondir =/s,lib,lib$(MULTILIB_X86_32_SUFFIX),' $${file} ; \
+	   done ; \
+	 )
+	@cd $(build2_dir) && $(BUILD_ENVIRONMENT) $(MAKE) $(python2_environment)
+	@mkdir -p $(build3_dir)
+	# ======= Build libxml2 with Python3 =======
+	@cd $(build3_dir) && \
+	  $(BUILD_ENVIRONMENT) $(python3_environment) ../$(src_dir_name)/configure \
+	  --prefix=/usr                \
+	  --build=$(BUILD)             \
+	  --host=$(TARGET32)           \
+	  --with-python=$(WITH_PYTHON3) \
+	  $(extra_configure_switches)
+	@( cd $(build3_dir) ; \
+	   for file in `find . -type f -name 'Makefile'` ; do \
+	     sed -i '/^pyexecdir =/s,lib,lib$(MULTILIB_X86_32_SUFFIX),' $${file} ; \
+	     sed -i '/^pythondir =/s,lib,lib$(MULTILIB_X86_32_SUFFIX),' $${file} ; \
+	   done ; \
+	 )
+	@cd $(build3_dir) && $(BUILD_ENVIRONMENT) $(MAKE) $(python3_environment)
+	@touch $@
+
+$(install_target): $(build_target)
+	@mkdir -p $(LIBXML2_32_PKG)
+	@cd $(build2_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
+	@( cd $(LIBXML2_32_PKG) ; \
+	   rm -rf bin include share lib$(MULTILIB_X86_32_SUFFIX)/{cmake,pkgconfig} lib$(MULTILIB_X86_32_SUFFIX)/lib* ; \
+	 )
+	@cd $(build3_dir) && $(BUILD_ENVIRONMENT) $(MAKE) -j1 install $(env_sysroot)
+	@rm -rf $(LIBXML2_32_PKG)/usr/include
+	@rm -rf $(LIBXML2_32_PKG)/usr/share
+	# ======= remove toolchain path from xml2-config script =======
+	@( cd $(LIBXML2_32_PKG)/usr/bin/32 ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g"                xml2-config ; \
+	   sed -i "s,lib64,lib$(MULTILIB_X86_32_SUFFIX),g" xml2-config ; \
+	 )
+	# ======= remove toolchain path from target libtool *.la files =======
+	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_X86_32_SUFFIX) ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2.la  ; \
+	 )
+	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_X86_32_SUFFIX)/python$(PYTHON2_VERSION)/site-packages ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2mod.la ; \
+	 )
+	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_X86_32_SUFFIX)/python$(PYTHON3_VERSION)/site-packages ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml2mod.la ; \
+	 )
+	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_X86_32_SUFFIX)/pkgconfig ; \
+	   sed -i "s,$(TARGET_DEST_DIR),,g" libxml-2.0.pc ; \
+	 )
+	# ======= Install the same to $(TARGET_DEST_DIR) =======
+	$(call install-into-devenv, $(LIBXML2_32_PKG))
+	# ======= tune libtool *.la search path to the target destination for development =======
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_X86_32_SUFFIX) ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2.la  ; \
+	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2.la  ; \
+	 )
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_X86_32_SUFFIX)/python$(PYTHON2_VERSION)/site-packages ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2mod.la ; \
+	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2mod.la ; \
+	 )
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_X86_32_SUFFIX)/python$(PYTHON3_VERSION)/site-packages ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g"   libxml2mod.la ; \
+	   sed -i "s,L/lib,L$(TARGET_DEST_DIR)/lib,g" libxml2mod.la ; \
+	 )
+	# ======= tune pkg-config *.pc search path to the target destination for development =======
+	@( cd $(TARGET_DEST_DIR)/usr/lib$(MULTILIB_X86_32_SUFFIX)/pkgconfig ; \
+	   sed -i "s,/usr,$(TARGET_DEST_DIR)/usr,g" libxml-2.0.pc \
+	 )
+	# ======= tune xml2-config script for development =======
+	@( cd $(TARGET_DEST_DIR)/usr/bin/32 ; \
+	   sed -i "s,=/usr,=$(TARGET_DEST_DIR)/usr,g"                  xml2-config ; \
+	   sed -i "s,prefix/lib,prefix/lib$(MULTILIB_X86_32_SUFFIX),g" xml2-config ; \
+	   sed -i "s,L/usr,L$(TARGET_DEST_DIR)/usr,g"                  xml2-config ; \
+	 )
+	# ======= Strip binaries =======
+	@( cd $(LIBXML2_32_PKG) ; \
+	   find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
+	   find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs $(STRIP) --strip-unneeded 2> /dev/null ; \
+	 )
+ifeq ($(__ENABLE_STATIC__),yes)
+	@( cd $(LIBXML2_32_PKG) ; \
+	   find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs $(STRIP) -g 2> /dev/null ; \
+	 )
+endif
+ifneq ($(PATCHELF),)
+	# ======= Set RPATH/RUNPATH for target binaries =======
+	@( cd $(LIBXML2_32_PKG)/usr/bin/32 ; \
+	   for file in `find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
+	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
+	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
+	       $(PATCHELF) --set-rpath $(TARGET_BIN_RPATH) $$file 1> /dev/null 2> /dev/null ; \
+	     fi ; \
+	   done ; \
+	 )
+	# ======= Set RPATH/RUNPATH for target shared objects =======
+	@( cd $(LIBXML2_32_PKG)/usr/lib$(MULTILIB_X86_32_SUFFIX) ; \
+	   for file in `find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs echo` ; do \
+	     rpath=`$(PATCHELF) --print-rpath $$file 2> /dev/null` ; \
+	     if echo "$$rpath" | grep -q "$(TARGET_DEST_DIR)" ; then \
+	       $(PATCHELF) --set-rpath $(TARGET_LIB_RPATH) $$file 1> /dev/null 2> /dev/null ; \
+	     fi ; \
+	   done ; \
+	 )
+endif
+	@touch $@
+
+$(LIBXML2_32_PKG_DESCRIPTION_FILE): $(LIBXML2_32_PKG_DESCRIPTION_FILE_IN)
+	@cat $< | $(SED) -e "s/@VERSION@/$(version)/g" > $@
+
+$(pkg_certificate) : $(pkg_archive) ;
+$(pkg_signature)   : $(pkg_archive) ;
+$(pkg_description) : $(pkg_archive) ;
+
+$(pkg_archive): $(install_target) $(LIBXML2_32_PKG_DESCRIPTION_FILE) $(LIBXML2_32_PKG_INSTALL_SCRIPT)
+	@cp $(LIBXML2_32_PKG_DESCRIPTION_FILE) $(LIBXML2_32_PKG)/.DESCRIPTION
+	@cp $(LIBXML2_32_PKG_INSTALL_SCRIPT) $(LIBXML2_32_PKG)/.INSTALL
+	@$(BUILD_PKG_REQUIRES) $(LIBXML2_32_PKG)/.REQUIRES
+	@echo "pkgname=$(LIBXML2_32_PKG_NAME)"                            >  $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "pkgver=$(LIBXML2_32_PKG_VERSION)"                          >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "arch=$(LIBXML2_32_PKG_ARCH)"                               >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "distroname=$(LIBXML2_32_PKG_DISTRO_NAME)"                  >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "distrover=$(LIBXML2_32_PKG_DISTRO_VERSION)"                >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "group=$(LIBXML2_32_PKG_GROUP)"                             >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "short_description=\"$(LIBXML2_32_PKG_SHORT_DESCRIPTION)\"" >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "url=$(LIBXML2_32_PKG_URL)"                                 >> $(LIBXML2_32_PKG)/.PKGINFO ; \
+	 echo "license=$(LIBXML2_32_PKG_LICENSE)"                         >> $(LIBXML2_32_PKG)/.PKGINFO
+	@$(PSEUDO) sh -c "cd $(LIBXML2_32_PKG) && \
+	                  chown -R root:root . && \
+	                  $(MAKE_PACKAGE) -J --linkadd=yes $(GNUPG_OPTIONS) -m -d .. ."
Index: radix-1.9/libs/libxml2/2.11.4-x86_32/PATCHES
===================================================================
--- radix-1.9/libs/libxml2/2.11.4-x86_32/PATCHES	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4-x86_32/PATCHES	(revision 121)
@@ -0,0 +1,2 @@
+
+../../../sources/packages/l/libxml2/patches/libxml2-2.11.4-python-unicode.patch -p0
Index: radix-1.9/libs/libxml2/2.11.4-x86_32/libxml2-x32-pkg-description.in
===================================================================
--- radix-1.9/libs/libxml2/2.11.4-x86_32/libxml2-x32-pkg-description.in	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4-x86_32/libxml2-x32-pkg-description.in	(revision 121)
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.  Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in.  You must
+# make exactly 11 lines for the formatting to be correct.  It's also
+# customary to leave one space after the ':'.
+
+           |-----handy-ruler------------------------------------------------------|
+libxml2-x32: libxml2-x32 @VERSION@ (XML parser library)
+libxml2-x32:
+libxml2-x32: Libxml2 is the XML C parser library and toolkit. XML itself is a
+libxml2-x32: metalanguage to design markup languages - i.e. a text language where
+libxml2-x32: structures are added to the content using extra "markup" information
+libxml2-x32: enclosed between angle brackets. HTML is the most well-known markup
+libxml2-x32: language. Though the library is written in C, a variety of language
+libxml2-x32: bindings make it available in other environments.
+libxml2-x32:
+libxml2-x32:
+libxml2-x32:
Index: radix-1.9/libs/libxml2/2.11.4-x86_32/libxml2-x32-pkg-install.sh
===================================================================
--- radix-1.9/libs/libxml2/2.11.4-x86_32/libxml2-x32-pkg-install.sh	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4-x86_32/libxml2-x32-pkg-install.sh	(revision 121)
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# arg 1:  the new package version
+pre_install() {
+  /bin/true
+}
+
+# arg 1:  the new package version
+post_install() {
+  /bin/true
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+pre_update() {
+  /bin/true
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+post_update() {
+  post_install
+}
+
+# arg 1:  the old package version
+pre_remove() {
+  /bin/true
+}
+
+# arg 1:  the old package version
+post_remove() {
+  /bin/true
+}
+
+
+operation=$1
+shift
+
+$operation $*

Property changes on: radix-1.9/libs/libxml2/2.11.4-x86_32/libxml2-x32-pkg-install.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/libs/libxml2/2.11.4-x86_32
===================================================================
--- radix-1.9/libs/libxml2/2.11.4-x86_32	(nonexistent)
+++ radix-1.9/libs/libxml2/2.11.4-x86_32	(revision 121)

Property changes on: radix-1.9/libs/libxml2/2.11.4-x86_32
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,74 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.rk358x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: radix-1.9/libs/libxslt/1.1.34/Makefile
===================================================================
--- radix-1.9/libs/libxslt/1.1.34/Makefile	(revision 120)
+++ radix-1.9/libs/libxslt/1.1.34/Makefile	(revision 121)
@@ -55,7 +55,7 @@
 
 SOURCE_REQUIRES    = sources/packages/l/libxslt
 
-REQUIRES           = libs/libxml2/2.9.9
+REQUIRES           = libs/libxml2/2.11.4
 REQUIRES          += net/libgcrypt/1.10.1
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libxslt/1.1.34-ppc32/Makefile
===================================================================
--- radix-1.9/libs/libxslt/1.1.34-ppc32/Makefile	(revision 120)
+++ radix-1.9/libs/libxslt/1.1.34-ppc32/Makefile	(revision 121)
@@ -16,7 +16,7 @@
 SOURCE_REQUIRES    = sources/packages/l/libxslt
 
 REQUIRES           = libs/libxslt/1.1.34
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 REQUIRES          += net/libgcrypt/1.10.1-ppc32
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/libxslt/1.1.34-x86_32/Makefile
===================================================================
--- radix-1.9/libs/libxslt/1.1.34-x86_32/Makefile	(revision 120)
+++ radix-1.9/libs/libxslt/1.1.34-x86_32/Makefile	(revision 121)
@@ -13,7 +13,7 @@
 SOURCE_REQUIRES    = sources/packages/l/libxslt
 
 REQUIRES           = libs/libxslt/1.1.34
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 REQUIRES          += net/libgcrypt/1.10.1-x86_32
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/libs/netcdf/4.9.0/Makefile
===================================================================
--- radix-1.9/libs/netcdf/4.9.0/Makefile	(revision 120)
+++ radix-1.9/libs/netcdf/4.9.0/Makefile	(revision 121)
@@ -60,7 +60,7 @@
 REQUIRES          += net/nghttp2/1.43.0
 REQUIRES          += libs/libzip/1.9.2
 REQUIRES          += libs/libunistring/0.9.10
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/brotli/1.0.9
 REQUIRES          += libs/libpsl/0.21.1
 
Index: radix-1.9/libs/netcdf/4.9.0-ppc32/Makefile
===================================================================
--- radix-1.9/libs/netcdf/4.9.0-ppc32/Makefile	(revision 120)
+++ radix-1.9/libs/netcdf/4.9.0-ppc32/Makefile	(revision 121)
@@ -21,7 +21,7 @@
 REQUIRES          += net/nghttp2/1.43.0-ppc32
 REQUIRES          += libs/libzip/1.9.2-ppc32
 REQUIRES          += libs/libunistring/0.9.10-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 REQUIRES          += libs/brotli/1.0.9-ppc32
 REQUIRES          += libs/libpsl/0.21.1-ppc32
 
Index: radix-1.9/libs/netcdf/4.9.0-x86_32/Makefile
===================================================================
--- radix-1.9/libs/netcdf/4.9.0-x86_32/Makefile	(revision 120)
+++ radix-1.9/libs/netcdf/4.9.0-x86_32/Makefile	(revision 121)
@@ -18,7 +18,7 @@
 REQUIRES          += net/nghttp2/1.43.0-x86_32
 REQUIRES          += libs/libzip/1.9.2-x86_32
 REQUIRES          += libs/libunistring/0.9.10-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 REQUIRES          += libs/brotli/1.0.9-x86_32
 REQUIRES          += libs/libpsl/0.21.1-x86_32
 
Index: radix-1.9/libs/shared-mime-info/2.2/Makefile
===================================================================
--- radix-1.9/libs/shared-mime-info/2.2/Makefile	(revision 120)
+++ radix-1.9/libs/shared-mime-info/2.2/Makefile	(revision 121)
@@ -55,7 +55,7 @@
 SOURCE_REQUIRES    = sources/packages/l/shared-mime-info
 
 REQUIRES           = libs/glib2/2.76.0
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += app/gettext/0.21
 
 # ======= __END_OF_REQUIRES__ =======
Index: radix-1.9/media/ices/2.0.3/Makefile
===================================================================
--- radix-1.9/media/ices/2.0.3/Makefile	(revision 120)
+++ radix-1.9/media/ices/2.0.3/Makefile	(revision 121)
@@ -57,7 +57,7 @@
 
 REQUIRES           = app/xz/5.2.7
 REQUIRES          += libs/zlib/1.2.13
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += media/alsa-lib/1.2.8
 REQUIRES          += media/libshout/2.4.6
 
Index: radix-1.9/media/ices/2.0.3/ices-pkg-install.sh
===================================================================
--- radix-1.9/media/ices/2.0.3/ices-pkg-install.sh	(revision 120)
+++ radix-1.9/media/ices/2.0.3/ices-pkg-install.sh	(revision 121)
@@ -21,7 +21,9 @@
 
 # arg 1:  the new package version
 post_install() {
-  [ ! -e var/log/ices/ices.log ] && touch var/log/ices/ices.log
+  if [ ! -e var/log/ices/ices.log ] ; then
+    touch var/log/ices/ices.log
+  fi
 }
 
 # arg 1:  the new package version
Index: radix-1.9/media/libbluray/1.3.4/Makefile
===================================================================
--- radix-1.9/media/libbluray/1.3.4/Makefile	(revision 120)
+++ radix-1.9/media/libbluray/1.3.4/Makefile	(revision 121)
@@ -58,7 +58,7 @@
 REQUIRES           = app/xz/5.2.7
 REQUIRES          += app/fontconfig/2.13.95
 REQUIRES          += libs/freetype/2.11.1
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/media/libbluray/1.3.4-ppc32/Makefile
===================================================================
--- radix-1.9/media/libbluray/1.3.4-ppc32/Makefile	(revision 120)
+++ radix-1.9/media/libbluray/1.3.4-ppc32/Makefile	(revision 121)
@@ -19,7 +19,7 @@
 REQUIRES          += app/xz/5.2.7-ppc32
 REQUIRES          += app/fontconfig/2.13.95-ppc32
 REQUIRES          += libs/freetype/2.11.1-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/media/libbluray/1.3.4-x86_32/Makefile
===================================================================
--- radix-1.9/media/libbluray/1.3.4-x86_32/Makefile	(revision 120)
+++ radix-1.9/media/libbluray/1.3.4-x86_32/Makefile	(revision 121)
@@ -16,7 +16,7 @@
 REQUIRES          += app/xz/5.2.7-x86_32
 REQUIRES          += app/fontconfig/2.13.95-x86_32
 REQUIRES          += libs/freetype/2.11.1-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 
 # ======= __END_OF_REQUIRES__ =======
 
Index: radix-1.9/media/libgphoto2/2.5.30/Makefile
===================================================================
--- radix-1.9/media/libgphoto2/2.5.30/Makefile	(revision 120)
+++ radix-1.9/media/libgphoto2/2.5.30/Makefile	(revision 121)
@@ -58,7 +58,7 @@
 REQUIRES           = libs/libexif/0.6.24
 REQUIRES          += libs/libgd/2.3.3
 REQUIRES          += libs/libusb/1.0.24
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/brotli/1.0.9
 REQUIRES          += libs/libpsl/0.21.1
 REQUIRES          += net/curl/7.75.0
Index: radix-1.9/media/libgphoto2/2.5.30-ppc32/Makefile
===================================================================
--- radix-1.9/media/libgphoto2/2.5.30-ppc32/Makefile	(revision 120)
+++ radix-1.9/media/libgphoto2/2.5.30-ppc32/Makefile	(revision 121)
@@ -19,7 +19,7 @@
 REQUIRES          += libs/libexif/0.6.24-ppc32
 REQUIRES          += libs/libgd/2.3.3-ppc32
 REQUIRES          += libs/libusb/1.0.24-ppc32
-REQUIRES          += libs/libxml2/2.9.9-ppc32
+REQUIRES          += libs/libxml2/2.11.4-ppc32
 REQUIRES          += libs/brotli/1.0.9-ppc32
 REQUIRES          += libs/libpsl/0.21.1-ppc32
 REQUIRES          += net/curl/7.75.0-ppc32
Index: radix-1.9/media/libgphoto2/2.5.30-x86_32/Makefile
===================================================================
--- radix-1.9/media/libgphoto2/2.5.30-x86_32/Makefile	(revision 120)
+++ radix-1.9/media/libgphoto2/2.5.30-x86_32/Makefile	(revision 121)
@@ -16,7 +16,7 @@
 REQUIRES          += libs/libexif/0.6.24-x86_32
 REQUIRES          += libs/libgd/2.3.3-x86_32
 REQUIRES          += libs/libusb/1.0.24-x86_32
-REQUIRES          += libs/libxml2/2.9.9-x86_32
+REQUIRES          += libs/libxml2/2.11.4-x86_32
 REQUIRES          += libs/brotli/1.0.9-x86_32
 REQUIRES          += libs/libpsl/0.21.1-x86_32
 REQUIRES          += net/curl/7.75.0-x86_32
Index: radix-1.9/net/bind/9.16.13/Makefile
===================================================================
--- radix-1.9/net/bind/9.16.13/Makefile	(revision 120)
+++ radix-1.9/net/bind/9.16.13/Makefile	(revision 121)
@@ -56,7 +56,7 @@
 SOURCE_REQUIRES    = sources/packages/n/bind
 
 REQUIRES           = secure/libcap/2.48
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/libidn2/2.3.0
 REQUIRES          += libs/libuv/1.41.0
 REQUIRES          += libs/json-c/0.15
Index: radix-1.9/net/cyrus-imapd/3.4.4/Makefile
===================================================================
--- radix-1.9/net/cyrus-imapd/3.4.4/Makefile	(revision 120)
+++ radix-1.9/net/cyrus-imapd/3.4.4/Makefile	(revision 121)
@@ -61,7 +61,7 @@
 REQUIRES          += app/sqlite/3.39.4.0
 REQUIRES          += dev/perl/5.36.0
 REQUIRES          += libs/jansson/2.13.1
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/icu4c/73.1
 REQUIRES          += libs/zstd/1.5.2
 REQUIRES          += libs/zlib/1.2.13
Index: radix-1.9/net/httpd/2.4.51/Makefile
===================================================================
--- radix-1.9/net/httpd/2.4.51/Makefile	(revision 120)
+++ radix-1.9/net/httpd/2.4.51/Makefile	(revision 121)
@@ -66,7 +66,7 @@
 REQUIRES          += libs/brotli/1.0.9
 REQUIRES          += libs/jansson/2.13.1
 REQUIRES          += libs/expat/2.5.0
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/pcre/8.44
 REQUIRES          += libs/zlib/1.2.13
 REQUIRES          += net/curl/7.75.0
Index: radix-1.9/net/php/8.1.2/Makefile
===================================================================
--- radix-1.9/net/php/8.1.2/Makefile	(revision 120)
+++ radix-1.9/net/php/8.1.2/Makefile	(revision 121)
@@ -74,7 +74,7 @@
 
 REQUIRES          += libs/enchant/2.3.2
 REQUIRES          += libs/expat/2.5.0
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/libxslt/1.1.34
 REQUIRES          += libs/libedit/20191231-3.1
 REQUIRES          += libs/icu4c/73.1
Index: radix-1.9/net/uwsgi/2.0.20/Makefile
===================================================================
--- radix-1.9/net/uwsgi/2.0.20/Makefile	(revision 120)
+++ radix-1.9/net/uwsgi/2.0.20/Makefile	(revision 121)
@@ -58,7 +58,7 @@
 REQUIRES           = app/util-linux/2.38.1
 REQUIRES          += libs/pcre/8.44
 REQUIRES          += libs/zlib/1.2.13
-REQUIRES          += libs/libxml2/2.9.9
+REQUIRES          += libs/libxml2/2.11.4
 REQUIRES          += libs/jansson/2.13.1
 REQUIRES          += app/xz/5.2.7
 REQUIRES          += app/sqlite/3.39.4.0
Index: radix-1.9/share/docbook-xml/4.5/Makefile
===================================================================
--- radix-1.9/share/docbook-xml/4.5/Makefile	(revision 120)
+++ radix-1.9/share/docbook-xml/4.5/Makefile	(revision 121)
@@ -55,7 +55,7 @@
 
 SOURCE_REQUIRES    = sources/packages/a/linuxdoc-tools/docbook-xml/4.x
 
-REQUIRES           = libs/libxml2/2.9.9
+REQUIRES           = libs/libxml2/2.11.4
 REQUIRES          += share/sgml-common/0.6.3
 
 # ======= __END_OF_REQUIRES__ =======
@@ -128,7 +128,7 @@
 
 $(build_target): $(src_done)
 	@mkdir -p $(DTD_PKG)
-	# ====== Create DTD v$(version) catalog ======
+	# ======= Create DTD v$(version) catalog =======
 	@mkdir -pm755 $(DTD_PKG)/usr/share/xml/docbook/xml-dtd-$(version)
 	@( cd $(SRC_DIR) ; \
 	   chmod 0644 *.dtd *.mod ; \
@@ -138,7 +138,7 @@
 
 $(install_target): $(build_target)
 	@mkdir -pm755 $(DTD_PKG)/etc/xml
-	# ====== Populate /etc/xml/docbook ======
+	# ======= Populate /etc/xml/docbook =======
 	@xmlcatalog --noout --create $(DTD_PKG)/etc/xml/docbook
 	@for xmldtdver in `for r in $(version) ; do echo "$$r" ; done | sort -V | uniq` ; do \
 	   xmlcatalog --noout --add "public" \
@@ -200,7 +200,7 @@
 	     "file:///usr/share/xml/docbook/xml-dtd-$(version)" \
 	     $(DTD_PKG)/etc/xml/docbook ; \
 	 done
-	# ====== Populate /etc/xml/catalog ======
+	# ======= Populate /etc/xml/catalog =======
 	@xmlcatalog --noout --create $(DTD_PKG)/etc/xml/catalog
 	@for xmldtdver in `for r in $(version) ; do echo "$$r" ; done | sort -V | uniq` ; do \
 	   xmlcatalog --noout --add "delegatePublic" \
Index: radix-1.9/share/docbook-xml/4.5/docbook-xml-pkg-install.sh
===================================================================
--- radix-1.9/share/docbook-xml/4.5/docbook-xml-pkg-install.sh	(revision 120)
+++ radix-1.9/share/docbook-xml/4.5/docbook-xml-pkg-install.sh	(revision 121)
@@ -61,7 +61,9 @@
 
 # arg 1:  the old package version
 post_remove() {
-  xmlcatalog --noout --del file:///etc/xml/docbook etc/xml/catalog
+  if [ -e etc/xml/catalog ]; then
+    xmlcatalog --noout --del "file:///etc/xml/docbook" etc/xml/catalog
+  fi
 }
 
 
Index: radix-1.9/share/docbook-xsl/1.79.1/Makefile
===================================================================
--- radix-1.9/share/docbook-xsl/1.79.1/Makefile	(revision 120)
+++ radix-1.9/share/docbook-xsl/1.79.1/Makefile	(revision 121)
@@ -56,7 +56,7 @@
 SOURCE_REQUIRES    = sources/packages/a/linuxdoc-tools/docbook-xsl
 SOURCE_REQUIRES   += sources/packages/a/linuxdoc-tools/docbook-xsl-doc
 
-REQUIRES           = libs/libxml2/2.9.9
+REQUIRES           = libs/libxml2/2.11.4
 REQUIRES          += libs/libxslt/1.1.34
 REQUIRES          += share/docbook-xml/4.5
 
Index: radix-1.9/share/docbook-xsl/1.79.1/docbook-xsl-pkg-install.sh.in
===================================================================
--- radix-1.9/share/docbook-xsl/1.79.1/docbook-xsl-pkg-install.sh.in	(revision 120)
+++ radix-1.9/share/docbook-xsl/1.79.1/docbook-xsl-pkg-install.sh.in	(revision 121)
@@ -61,7 +61,9 @@
 
 # arg 1:  the old package version
 post_remove() {
-  xmlcatalog --noout --del /usr/share/xml/docbook/xsl-stylesheets-@VERSION@ etc/xml/catalog
+  if [ -e etc/xml/catalog ]; then
+    xmlcatalog --noout --del "/usr/share/xml/docbook/xsl-stylesheets-@XSLVERSION@" etc/xml/catalog
+  fi
 }
 
 
Index: radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/file.list
===================================================================
--- radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/file.list	(revision 120)
+++ radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/file.list	(nonexistent)
@@ -1 +0,0 @@
-libxml2-2.9.9/configure.ac
Index: radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/libxml2-2.9.9-new/configure.ac
===================================================================
--- radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/libxml2-2.9.9-new/configure.ac	(revision 120)
+++ radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/libxml2-2.9.9-new/configure.ac	(nonexistent)
@@ -1,1631 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_PREREQ([2.63])
-AC_INIT
-AC_CONFIG_SRCDIR([entities.c])
-AC_CONFIG_HEADERS([config.h])
-AM_MAINTAINER_MODE([enable])
-AC_CONFIG_MACRO_DIR([m4])
-AC_CANONICAL_HOST
-
-LIBXML_MAJOR_VERSION=2
-LIBXML_MINOR_VERSION=9
-LIBXML_MICRO_VERSION=9
-LIBXML_MICRO_VERSION_SUFFIX=
-LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX
-LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION
-
-LIBXML_VERSION_NUMBER=`expr $LIBXML_MAJOR_VERSION \* 10000 + $LIBXML_MINOR_VERSION \* 100 + $LIBXML_MICRO_VERSION`
-
-if test -f CVS/Entries ; then
-  extra=`grep ChangeLog CVS/Entries | grep -v LIBXML | sed -e s\%/ChangeLog/1\.%% -e s\%/.*$%%`
-  echo extra=$extra
-  if test "$extra" != ""
-  then
-      LIBXML_VERSION_EXTRA="-CVS$extra"
-  fi
-else if test -d .svn ; then
-  extra=`svn info | grep Revision | sed 's+Revision: ++'`
-  echo extra=$extra
-  if test "$extra" != ""
-  then
-      LIBXML_VERSION_EXTRA="-SVN$extra"
-  fi
-else if test -d .git ; then
-  extra=`git describe 2>/dev/null | sed 's+LIBXML[[0-9.]]*-++'`
-  echo extra=$extra
-  if test "$extra" != ""
-  then
-      LIBXML_VERSION_EXTRA="-GIT$extra"
-  fi
-fi
-fi
-fi
-AC_SUBST(LIBXML_MAJOR_VERSION)
-AC_SUBST(LIBXML_MINOR_VERSION)
-AC_SUBST(LIBXML_MICRO_VERSION)
-AC_SUBST(LIBXML_VERSION)
-AC_SUBST(LIBXML_VERSION_INFO)
-AC_SUBST(LIBXML_VERSION_NUMBER)
-AC_SUBST(LIBXML_VERSION_EXTRA)
-
-VERSION=${LIBXML_VERSION}
-
-AM_INIT_AUTOMAKE(libxml2, $VERSION)
-
-# Support silent build rules, requires at least automake-1.11. Disable
-# by either passing --disable-silent-rules to configure or passing V=1
-# to make
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-
-dnl Checks for programs.
-AC_PROG_CC
-AC_PROG_INSTALL
-AC_PROG_LN_S
-AC_PROG_MKDIR_P
-AC_PROG_CPP
-AC_PATH_PROG(MV, mv, /bin/mv)
-AC_PATH_PROG(TAR, tar, /bin/tar)
-AC_PATH_PROG(PERL, perl, /usr/bin/perl)
-AC_PATH_PROG(WGET, wget, /usr/bin/wget)
-AC_PATH_PROG(XMLLINT, xmllint, /usr/bin/xmllint)
-AC_PATH_PROG(XSLTPROC, xsltproc, /usr/bin/xsltproc)
-PKG_PROG_PKG_CONFIG
-
-LT_INIT
-
-dnl
-dnl if the system support linker version scripts for symbol versioning
-dnl then add it
-dnl
-VERSION_SCRIPT_FLAGS=
-# lt_cv_prog_gnu_ld is from libtool 2.+
-if test "$lt_cv_prog_gnu_ld" = yes; then
-  VERSION_SCRIPT_FLAGS=-Wl,--version-script=
-else
-  case $host in
-  *-*-sunos*) VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,";;
-  esac
-fi
-AC_SUBST(VERSION_SCRIPT_FLAGS)
-AM_CONDITIONAL([USE_VERSION_SCRIPT], [test -n "$VERSION_SCRIPT_FLAGS"])
-
-dnl
-dnl We process the AC_ARG_WITH first so that later we can modify
-dnl some of them to try to prevent impossible combinations.  This
-dnl also allows up so alphabetize the choices
-dnl
-
-dnl
-dnl zlib option might change flags, so we save them initially
-dnl
-_cppflags="${CPPFLAGS}"
-_libs="${LIBS}"
-
-AC_ARG_WITH(c14n,
-[  --with-c14n             add the Canonicalization support (on)])
-AC_ARG_WITH(catalog,
-[  --with-catalog          add the Catalog support (on)])
-AC_ARG_WITH(debug,
-[  --with-debug            add the debugging module (on)])
-AC_ARG_WITH(docbook,
-[  --with-docbook          add Docbook SGML support (on)])
-AC_ARG_WITH(fexceptions,
-[  --with-fexceptions      add GCC flag -fexceptions for C++ exceptions (off)])
-AC_ARG_WITH(ftp,
-[  --with-ftp              add the FTP support (on)])
-AC_ARG_WITH(history,
-[  --with-history          add history support to xmllint shell(off)])
-AC_ARG_WITH(html,
-[  --with-html             add the HTML support (on)])
-dnl Specific dir for HTML output ?
-AC_ARG_WITH(html-dir, AS_HELP_STRING([--with-html-dir=path],
-            [path to base html directory, default $datadir/doc/html]),
-            [HTML_DIR=$withval], [HTML_DIR='$(datadir)/doc'])
-
-AC_ARG_WITH(html-subdir, AS_HELP_STRING([--with-html-subdir=path],
-            [directory used under html-dir, default $PACKAGE-$VERSION/html]),
-            [test "x$withval" != "x" && HTML_DIR="$HTML_DIR/$withval"],
-            [HTML_DIR="$HTML_DIR/\$(PACKAGE)-\$(VERSION)/html"])
-AC_SUBST(HTML_DIR)
-AC_ARG_WITH(http,
-[  --with-http             add the HTTP support (on)])
-AC_ARG_WITH(iconv,
-[  --with-iconv[[=DIR]]      add ICONV support (on)])
-AC_ARG_WITH(icu,
-[  --with-icu                add ICU support (off)])
-AC_ARG_WITH(iso8859x,
-[  --with-iso8859x         add ISO8859X support if no iconv (on)])
-AC_ARG_WITH(legacy,
-[  --with-legacy           add deprecated APIs for compatibility (on)])
-AC_ARG_WITH(mem_debug,
-[  --with-mem-debug        add the memory debugging module (off)])
-AC_ARG_WITH(minimum,
-[  --with-minimum          build a minimally sized library (off)])
-AC_ARG_WITH(output,
-[  --with-output           add the serialization support (on)])
-AC_ARG_WITH(pattern,
-[  --with-pattern          add the xmlPattern selection interface (on)])
-AC_ARG_WITH(push,
-[  --with-push             add the PUSH parser interfaces (on)])
-AC_ARG_WITH(python,
-[  --with-python[[=DIR]]     build Python bindings if found])
-AC_ARG_WITH(python_install_dir,
-[  --with-python-install-dir=DIR
-                          install Python bindings in DIR])
-AC_ARG_WITH(reader,
-[  --with-reader           add the xmlReader parsing interface (on)])
-AC_ARG_WITH(readline,
-[  --with-readline=DIR     use readline in DIR],[
-  if test "$withval" != "no" -a "$withval" != "yes"; then
-    RDL_DIR=$withval
-    CPPFLAGS="${CPPFLAGS} -I$withval/include"
-    LDFLAGS="${LDFLAGS} -L$withval/lib"
-  fi
-])
-AC_ARG_WITH(regexps,
-[  --with-regexps          add Regular Expressions support (on)])
-AC_ARG_WITH(run_debug,
-[  --with-run-debug        add the runtime debugging module (off)])
-AC_ARG_WITH(sax1,
-[  --with-sax1             add the older SAX1 interface (on)])
-AC_ARG_WITH(schemas,
-[  --with-schemas          add Relax-NG and Schemas support (on)])
-AC_ARG_WITH(schematron,
-[  --with-schematron       add Schematron support (on)])
-AC_ARG_WITH(threads,
-[  --with-threads          add multithread support(on)])
-AC_ARG_WITH(thread-alloc,
-[  --with-thread-alloc     add per-thread memory(off)])
-AC_ARG_WITH(tree,
-[  --with-tree             add the DOM like tree manipulation APIs (on)])
-AC_ARG_WITH(valid,
-[  --with-valid            add the DTD validation support (on)])
-AC_ARG_WITH(writer,
-[  --with-writer           add the xmlWriter saving interface (on)])
-AC_ARG_WITH(xinclude,
-[  --with-xinclude         add the XInclude support (on)])
-AC_ARG_WITH(xpath,
-[  --with-xpath            add the XPATH support (on)])
-AC_ARG_WITH(xptr,
-[  --with-xptr             add the XPointer support (on)])
-AC_ARG_WITH(modules,
-[  --with-modules          add the dynamic modules support (on)])
-AC_ARG_WITH(zlib,
-[  --with-zlib[[=DIR]]       use libz in DIR],[
-  if test "$withval" != "no" -a "$withval" != "yes"; then
-    Z_DIR=$withval
-    CPPFLAGS="${CPPFLAGS} -I$withval/include"
-    LDFLAGS="${LDFLAGS} -L$withval/lib"
-  fi
-])
-AC_ARG_WITH(lzma,
-[  --with-lzma[[=DIR]]       use liblzma in DIR],[
-  if test "$withval" != "no" -a "$withval" != "yes"; then
-    LZMA_DIR=$withval
-    CPPFLAGS="${CPPFLAGS} -I$withval/include"
-    LDFLAGS="${LDFLAGS} -L$withval/lib"
-  fi
-])
-AC_ARG_WITH(coverage,
-[  --with-coverage         build for code coverage with GCC (off)])
-
-AC_ARG_ENABLE(rebuild-docs,
-[  --enable-rebuild-docs[[=yes/no]]  rebuild some generated docs [[default=no]]])
-if test "$enable_rebuild_docs" = "yes" -a "$srcdir" != "."; then
-  AC_MSG_ERROR([cannot rebuild docs when builddir != srcdir])
-fi
-AM_CONDITIONAL([REBUILD_DOCS], [test "$enable_rebuild_docs" = "yes" -o "$USER" = "veillard"])
-
-dnl
-dnl hard dependancies on options
-dnl
-if test "$with_schemas" = "yes"
-then
-    with_pattern=yes
-    with_regexps=yes
-fi
-if test "$with_schematron" = "yes"
-then
-    with_pattern=yes
-    with_tree=yes
-    with_xpath=yes
-fi
-if test "$with_reader" = "yes"
-then
-    with_push=yes
-fi
-if test "$with_xptr" = "yes"
-then
-    with_xpath=yes
-fi
-dnl
-dnl option to build a minimal libxml2 library
-dnl
-if test "$with_minimum" = "yes"
-then
-    echo "Configuring for a minimal library"
-    if test "$with_c14n" = ""
-    then
-      with_c14n=no
-    fi
-    if test "$with_catalog" = ""
-    then
-      with_catalog=no
-    fi
-    echo So far so good!
-    if test "$with_debug" = ""
-    then
-      with_debug=no
-    fi
-    if test "$with_docbook" = ""
-    then
-      with_docbook=no
-    fi
-    if test "$with_fexceptions" = ""
-    then
-      with_fexceptions=no
-    fi
-    if test "$with_ftp" = ""
-    then
-      with_ftp=no 
-    fi
-    if test "$with_history" = ""
-    then
-      with_history=no
-    fi
-    if test "$with_html" = ""
-    then
-      with_html=no
-    fi
-    if test "$with_http" = ""
-    then
-      with_http=no 
-    fi
-    if test "$with_iconv" = ""
-    then
-      with_iconv=no
-    fi
-    if test "$with_iso8859x" = ""
-    then
-      with_iso8859x=no
-    fi
-    if test "$with_legacy" = ""
-    then
-      with_legacy=no
-    fi
-    if test "$with_mem_debug" = ""
-    then 
-      with_mem_debug=no
-    fi
-    if test "$with_output" = ""
-    then
-      with_output=no
-    fi
-    if test "$with_pattern" = ""
-    then
-      with_pattern=no
-    fi
-    if test "$with_push" = ""
-    then
-      with_push=no
-    fi
-    if test "$with_python" = ""
-    then
-      with_python=no
-    fi
-    if test "$with_reader" = ""
-    then
-      with_reader=no
-    fi
-    if test "$with_readline" = ""
-    then
-      with_readline=no
-    fi
-    if test "$with_regexps" = ""
-    then
-      with_regexps=no
-    fi
-    if test "$with_run_debug" = ""
-    then
-      with_run_debug=no
-    fi
-    if test "$with_sax1" = ""
-    then
-      with_sax1=no
-    fi
-    if test "$with_schemas" = ""
-    then
-      with_schemas=no
-    fi
-    if test "$with_schematron" = ""
-    then
-      with_schematron=no
-    fi
-    if test "$with_threads" = ""
-    then
-      with_threads=no
-    fi
-    if test "$with_thread_alloc" = ""
-    then
-      with_thread_alloc=no
-   fi
-    if test "$with_tree" = ""
-    then
-      with_tree=no
-    fi
-    if test "$with_valid" = ""
-    then
-      with_valid=no
-    fi
-    if test "$with_writer" = ""
-    then
-      with_writer=no
-    fi
-    if test "$with_xinclude" = ""
-    then
-      with_xinclude=no
-    fi
-    if test "$with_xpath" = ""
-    then
-      with_xpath=no
-    fi
-    if test "$with_xptr" = ""
-    then
-      with_xptr=no
-    fi
-    if test "$with_zlib" = ""
-    then
-      with_zlib=no
-    fi
-    if test "$with_modules" = ""
-    then
-      with_modules=no
-    fi
-fi
-
-echo Checking zlib
-
-dnl Checks for zlib library.
-
-WITH_ZLIB=0
-if test "$with_zlib" = "no"; then
-    echo "Disabling zlib compression support"
-else
-    # Don't run pkg-config if with_zlib contains a path.
-    if test "x$Z_DIR" = "x"; then
-        # Try pkg-config first so that static linking works.
-        PKG_CHECK_MODULES([Z],[zlib],
-            [WITH_ZLIB=1],
-            [ ])
-    fi
-
-    if test "$WITH_ZLIB" = "0"; then
-        AC_CHECK_HEADERS(zlib.h,
-            AC_CHECK_LIB(z, gzread,[
-                WITH_ZLIB=1
-                if test "x${Z_DIR}" != "x"; then
-                    Z_CFLAGS="-I${Z_DIR}/include"
-                    Z_LIBS="-L${Z_DIR}/lib -lz"
-                    [case ${host} in
-                        *-*-solaris*)
-                            Z_LIBS="-L${Z_DIR}/lib -R${Z_DIR}/lib -lz"
-                            ;;
-                    esac]
-                else
-                    Z_LIBS="-lz"
-                fi])
-            )
-    fi
-fi
-
-AC_SUBST(Z_CFLAGS)
-AC_SUBST(Z_LIBS)
-AC_SUBST(WITH_ZLIB)
-
-echo Checking lzma
-
-dnl Checks for lzma library.
-
-WITH_LZMA=0
-if test "$with_lzma" = "no"; then
-    echo "Disabling lzma compression support"
-else
-    # Don't run pkg-config if with_lzma contains a path.
-    if test "x$LZMA_DIR" = "x"; then
-        # Try pkg-config first so that static linking works.
-        PKG_CHECK_MODULES([LZMA],[liblzma],
-            [WITH_LZMA=1],
-            [ ])
-    fi
-
-    # If pkg-config failed, fall back to AC_CHECK_LIB. This
-    # will not pick up the necessary LIBS flags for liblzma's
-    # private dependencies, though, so static linking may fail.
-    if test "$WITH_LZMA" = "0"; then
-        AC_CHECK_HEADERS(lzma.h,
-            AC_CHECK_LIB(lzma, lzma_code,[
-                WITH_LZMA=1
-                if test "x${LZMA_DIR}" != "x"; then
-                    LZMA_CFLAGS="-I${LZMA_DIR}/include"
-                    LZMA_LIBS="-L${LZMA_DIR}/lib -llzma"
-                else
-                    LZMA_LIBS="-llzma"
-                fi])
-            )
-    fi
-fi
-
-AC_SUBST(LZMA_CFLAGS)
-AC_SUBST(LZMA_LIBS)
-AC_SUBST(WITH_LZMA)
-
-CPPFLAGS=${_cppflags}
-LIBS=${_libs}
-
-echo Checking headers
-
-dnl Checks for header files.
-AC_HEADER_DIRENT
-AC_HEADER_STDC
-AC_CHECK_HEADERS([fcntl.h])
-AC_CHECK_HEADERS([unistd.h])
-AC_CHECK_HEADERS([ctype.h])
-AC_CHECK_HEADERS([dirent.h])
-AC_CHECK_HEADERS([errno.h])
-AC_CHECK_HEADERS([malloc.h])
-AC_CHECK_HEADERS([stdarg.h])
-AC_CHECK_HEADERS([sys/stat.h])
-AC_CHECK_HEADERS([sys/types.h])
-AC_CHECK_HEADERS([stdint.h])
-AC_CHECK_HEADERS([inttypes.h])
-AC_CHECK_HEADERS([time.h])
-AC_CHECK_HEADERS([math.h])
-AC_CHECK_HEADERS([limits.h])
-AC_CHECK_HEADERS([float.h])
-AC_CHECK_HEADERS([stdlib.h])
-AC_CHECK_HEADERS([sys/socket.h], [], [],
-[#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-# endif
-])
-AC_CHECK_HEADERS([netinet/in.h], [], [],
-[#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-# endif
-])
-AC_CHECK_HEADERS([arpa/inet.h], [], [],
-[#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-# endif
-#if HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-# endif
-])
-AC_CHECK_HEADERS([netdb.h])
-AC_CHECK_HEADERS([sys/time.h])
-AC_CHECK_HEADERS([sys/select.h])
-AC_CHECK_HEADERS([poll.h])
-AC_CHECK_HEADERS([sys/mman.h])
-AC_CHECK_HEADERS([sys/timeb.h])
-AC_CHECK_HEADERS([signal.h])
-AC_CHECK_HEADERS([arpa/nameser.h], [], [],
-[#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-# endif
-])
-AC_CHECK_HEADERS([resolv.h], [], [],
-[#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-# endif
-#if HAVE_NETINET_IN_H
-# include <netinet/in.h>
-# endif
-#if HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-# endif
-])
-AC_CHECK_HEADERS([dl.h])
-AC_CHECK_HEADERS([dlfcn.h])
-
-
-echo Checking types
-
-AC_TYPE_UINT32_T
-
-
-echo Checking libraries
-
-dnl Checks for library functions.
-AC_FUNC_STRFTIME
-AC_CHECK_FUNCS(strftime localtime gettimeofday ftime)
-AC_CHECK_FUNCS(stat signal)
-AC_CHECK_FUNCS(rand rand_r srand time)
-AC_CHECK_FUNCS(isascii mmap munmap putenv)
-
-AH_VERBATIM([HAVE_MUNMAP_AFTER],[/* mmap() is no good without munmap() */
-#if defined(HAVE_MMAP) && !defined(HAVE_MUNMAP)
-#  undef /**/ HAVE_MMAP
-#endif])
-
-dnl Checking for va_copy availability
-AC_MSG_CHECKING([for va_copy])
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
-va_list ap1,ap2;]], [[va_copy(ap1,ap2);]])],
-have_va_copy=yes,
-have_va_copy=no)
-AC_MSG_RESULT($have_va_copy)
-if test x"$have_va_copy" = x"yes"; then
-    AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
-else
-    AC_MSG_CHECKING([for __va_copy])
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
-    va_list ap1,ap2;]], [[__va_copy(ap1,ap2);]])],
-    have___va_copy=yes,
-    have___va_copy=no)
-    AC_MSG_RESULT($have___va_copy)
-    if test x"$have___va_copy" = x"yes"; then
-        AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
-    fi
-fi
-
-dnl Checking whether va_list is an array type
-AC_MSG_CHECKING([whether va_list is an array type])
-AC_TRY_COMPILE2([
-#include <stdarg.h>
-void a(va_list * ap) {}],[
-va_list ap1, ap2; a(&ap1); ap2 = (va_list) ap1],[
-  AC_MSG_RESULT(no)],[
-  AC_MSG_RESULT(yes)
-  AC_DEFINE([VA_LIST_IS_ARRAY], [1],[Define if va_list is an array type])])
-
-dnl Checks for inet libraries:
-AC_SEARCH_LIBS(gethostent, [nsl])
-AC_SEARCH_LIBS(setsockopt, [socket net network])
-AC_SEARCH_LIBS(connect, [inet])
-
-dnl Determine what socket length (socklen_t) data type is
-AC_MSG_CHECKING([for type of socket length (socklen_t)])
-AC_TRY_COMPILE2([
-#include <stddef.h>
-#include <sys/types.h>
-#include <sys/socket.h>],[
-(void)getsockopt (1, 1, 1, NULL, (socklen_t *)NULL)],[
-  AC_MSG_RESULT(socklen_t *)
-  XML_SOCKLEN_T=socklen_t],[
-  AC_TRY_COMPILE2([
-#include <stddef.h>
-#include <sys/types.h>
-#include <sys/socket.h>],[
-(void)getsockopt (1, 1, 1, NULL, (size_t *)NULL)],[
-    AC_MSG_RESULT(size_t *)
-    XML_SOCKLEN_T=size_t],[
-    AC_TRY_COMPILE2([
-#include <stddef.h>
-#include <sys/types.h>
-#include <sys/socket.h>],[
-(void)getsockopt (1, 1, 1, NULL, (int *)NULL)],[
-      AC_MSG_RESULT(int *)
-      XML_SOCKLEN_T=int],[
-      AC_MSG_WARN(could not determine)
-      XML_SOCKLEN_T="int"])])])
-AC_DEFINE_UNQUOTED(XML_SOCKLEN_T, $XML_SOCKLEN_T, [Determine what socket length (socklen_t) data type is])
-
-dnl Checking if gethostbyname() argument is const.
-AC_MSG_CHECKING([for const gethostbyname() argument])
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
-    [[(void)gethostbyname((const char *)"");]])],
-have_gethostbyname_const_arg=yes,
-have_gethostbyname_const_arg=no)
-AC_MSG_RESULT($have_gethostbyname_const_arg)
-if test x"$have_gethostbyname_const_arg" = x"yes"; then
-    AC_DEFINE([GETHOSTBYNAME_ARG_CAST], [],
-      [Type cast for the gethostbyname() argument])
-else
-    AC_DEFINE([GETHOSTBYNAME_ARG_CAST], [(char *)],
-      [Type cast for the gethostbyname() argument])
-fi
-
-dnl Checking if send() second argument is const.
-AC_MSG_CHECKING([for const send() second argument])
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <sys/socket.h>]],
-    [[(void)send(1,(const char *)"",1,1);]])],
-have_send_const_arg2=yes,
-have_send_const_arg2=no)
-AC_MSG_RESULT($have_send_const_arg2)
-if test x"$have_send_const_arg2" = x"yes"; then
-    AC_DEFINE([SEND_ARG2_CAST], [],
-      [Type cast for the send() function 2nd arg])
-else
-    AC_DEFINE([SEND_ARG2_CAST], [(char *)],
-      [Type cast for the send() function 2nd arg])
-fi
-
-dnl ***********************Checking for availability of IPv6*******************
-
-AC_MSG_CHECKING([whether to enable IPv6])
-AC_ARG_ENABLE(ipv6, [  --enable-ipv6[[=yes/no]]  enables compilation of IPv6 code [[default=yes]]],, enable_ipv6=yes)
-if test "$with_minimum" = "yes"
-then
-    enable_ipv6=no
-fi
-if test $enable_ipv6 = yes; then
-  have_ipv6=no
-  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#   include <sys/types.h>
-#   include <sys/socket.h>
-    ]], [[
-    struct sockaddr_storage ss;
-    socket(AF_INET6, SOCK_STREAM, 0)
-    ]])],
-    have_ipv6=yes,
-    have_ipv6=no
-  )
-  AC_MSG_RESULT($have_ipv6)
-
-  if test $have_ipv6 = yes; then
-    AC_DEFINE([SUPPORT_IP6], [], [Support for IPv6])
-    have_broken_ss_family=no
-
-    dnl *********************************************************************
-    dnl on some platforms (like AIX 5L), the structure sockaddr doesn't have
-    dnl a ss_family member, but rather __ss_family. Let's detect that
-    dnl and define the HAVE_BROKEN_SS_FAMILY when we are on one of these
-    dnl platforms.  However, we should only do this if ss_family is not
-    dnl present.
-    dnl ********************************************************************
-    AC_MSG_CHECKING([struct sockaddr::ss_family])
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#     include <sys/types.h>
-#     include <sys/socket.h>
-      ]], [[
-      struct sockaddr_storage ss ;
-      ss.ss_family = 0 ;
-      ]])],
-      have_ss_family=yes,
-      have_ss_family=no
-    )
-    AC_MSG_RESULT($have_ss_family)
-    if test x$have_ss_family = xno ; then
-      AC_MSG_CHECKING([broken struct sockaddr::ss_family])
-      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#       include <sys/types.h>
-#       include <sys/socket.h>
-        ]], [[
-        struct sockaddr_storage ss ;
-        ss.__ss_family = 0 ;
-        ]])],
-        have_broken_ss_family=yes,
-        have_broken_ss_family=no
-      )
-      AC_MSG_RESULT($have_broken_ss_family)
-      if test x$have_broken_ss_family = xyes ; then
-        AC_DEFINE(HAVE_BROKEN_SS_FAMILY, [],
-	  [Whether struct sockaddr::__ss_family exists]) 
-        AC_DEFINE(ss_family, __ss_family,
-	  [ss_family is not defined here, use __ss_family instead])
-      else
-        AC_MSG_WARN(ss_family and __ss_family not found)
-      fi
-    fi
-
-    have_getaddrinfo=no
-    AC_CHECK_FUNC(getaddrinfo, have_getaddrinfo=yes)
-    if test $have_getaddrinfo != yes; then
-      for lib in bsd socket inet; do
-        AC_CHECK_LIB($lib, getaddrinfo, [LIBS="$LIBS -l$lib";have_getaddrinfo=yes;break])
-      done
-    fi
-
-    if test $have_getaddrinfo = yes; then
-      AC_DEFINE([HAVE_GETADDRINFO], [], [Define if getaddrinfo is there])
-    fi
-  fi
-fi 
-
-dnl ******************************End IPv6 checks******************************
-
-dnl Checks for isnan in libm if not in libc
-AC_CHECK_FUNC(isnan, AC_DEFINE([HAVE_ISNAN],[], [Define if isnan is there]) , AC_CHECK_LIB(m, isnan,
-  [AC_DEFINE([HAVE_ISNAN],[], [Define if isnan is there])]))
-
-AC_CHECK_FUNC(isinf, AC_DEFINE([HAVE_ISINF], [], [Define if isinf is there]) , AC_CHECK_LIB(m, isinf,
-  [AC_DEFINE([HAVE_ISINF], [], [Define if isinf is there])]))
-
-XML_LIBDIR='-L${libdir}'
-XML_INCLUDEDIR='-I${includedir}/libxml2'
-
-dnl
-dnl Extra flags
-dnl
-XML_CFLAGS=""
-RDL_LIBS=""
-
-dnl
-dnl Workaround for native compilers
-dnl  HP  : http://bugs.gnome.org/db/31/3163.html
-dnl  DEC : Enable NaN/Inf
-dnl
-if test "${GCC}" != "yes" ; then
-    case "${host}" in
-          hppa*-*-hpux* )
-	       EXTRA_CFLAGS="${EXTRA_CFLAGS} -Wp,-H30000"
-	       ;;
-          *-dec-osf* )
-               EXTRA_CFLAGS="${EXTRA_CFLAGS} -ieee"
-               ;;
-	  alpha*-*-linux* )
-	       EXTRA_CFLAGS="${EXTRA_CFLAGS} -ieee"
-	       ;;
-    esac
-else
-    if test "$with_fexceptions" = "yes"
-    then
-        #
-	# Not activated by default because this inflates the code size
-	# Used to allow propagation of C++ exceptions through the library
-	#
-	EXTRA_CFLAGS="${EXTRA_CFLAGS} -fexceptions"
-    fi
-
-    # warnings we'd like to see
-    EXTRA_CFLAGS="${EXTRA_CFLAGS} -pedantic -Wall -Wextra -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls"
-    # warnings we'd like to supress
-    EXTRA_CFLAGS="${EXTRA_CFLAGS} -Wno-long-long -Wno-format-extra-args -Wno-array-bounds"
-    case "${host}" in
-          alpha*-*-linux* )
-	       EXTRA_CFLAGS="${EXTRA_CFLAGS} -mieee"
-	       ;;
-	  alpha*-*-osf* )
-	       EXTRA_CFLAGS="${EXTRA_CFLAGS} -mieee"
-	       ;;
-    esac
-fi
-case ${host} in
-    *-*-solaris*)
-        XML_LIBDIR="${XML_LIBDIR} -R${libdir}"
-        ;;
-    hppa*-hp-mpeix)
-        NEED_TRIO=1
-	;;
-    *-*-mingw* | *-*-cygwin* | *-*-msvc* )
-        # If the host is Windows, and shared libraries are disabled, we
-        # need to add -DLIBXML_STATIC to EXTRA_CFLAGS in order for linking to
-        # work properly (without it, xmlexports.h would force the use of
-        # DLL imports, which obviously aren't present in a static
-        # library).
-        if test "x$enable_shared" = "xno"; then
-            XML_CFLAGS="$XML_CFLAGS -DLIBXML_STATIC"
-            EXTRA_CFLAGS="$EXTRA_CFLAGS -DLIBXML_STATIC"
-        fi
-        ;;
-esac
-
-
-dnl
-dnl check for python
-dnl
-
-PYTHON_TESTS=
-pythondir=
-if test "$with_python" != "no" ; then
-    if test "$PYTHON" != ""
-    then
-	echo Found Python version $PYTHON_VERSION
-    fi
-    if test "$with_python_install_dir" != ""
-    then
-	PYTHON_SITE_PACKAGES="$with_python_install_dir"
-    fi
-    pythondir='$(PYTHON_SITE_PACKAGES)'
-else
-    PYTHON=
-fi
-AM_CONDITIONAL(WITH_PYTHON, test "$PYTHON_INCLUDES" != "")
-if test "$PYTHON_INCLUDES" != ""
-then
-    PYTHON_SUBDIR=python
-else
-    PYTHON_SUBDIR=
-fi
-AC_SUBST(pythondir)
-AC_SUBST(PYTHON_SUBDIR)
-AC_SUBST(PYTHON_LIBS)
-
-dnl check for dso support
-WITH_MODULES=0
-TEST_MODULES=
-
-if test "$with_modules" != "no" ; then
- case "$host" in
-  *-*-cygwin*)
-  MODULE_EXTENSION=".dll"
-  AC_CHECK_LIB(cygwin, dlopen, [
-    WITH_MODULES=1
-    MODULE_PLATFORM_LIBS=
-    AC_DEFINE([HAVE_DLOPEN], [], [Have dlopen based dso])
-  ])
-  ;;
-  *-*-mingw*)
-  MODULE_EXTENSION=".dll"
-  WITH_MODULES=1
-  ;;
-  *)
-  AC_CHECK_FUNC(shl_load, libxml_have_shl_load=yes, [
-    AC_CHECK_LIB(dld, shl_load, [
-      MODULE_PLATFORM_LIBS="-ldld"
-      libxml_have_shl_load=yes], [
-      AC_CHECK_FUNC(dlopen, libxml_have_dlopen=yes, [
-        AC_CHECK_LIB(dl, dlopen, [
-          MODULE_PLATFORM_LIBS="-ldl"
-          libxml_have_dlopen=yes])])])])
-
-  if test "${libxml_have_shl_load}" = "yes"; then
-    MODULE_EXTENSION=".sl"
-    WITH_MODULES=1
-    AC_DEFINE([HAVE_SHLLOAD], [], [Have shl_load based dso])
-  fi
- 
-  if test "${libxml_have_dlopen}" = "yes"; then
-    case "${host}" in
-      *-*-hpux* )
-	MODULE_EXTENSION=".sl"
-	;;
-      * )
-	MODULE_EXTENSION=".so"
-	;;
-    esac
-
-    WITH_MODULES=1
-    AC_DEFINE([HAVE_DLOPEN], [], [Have dlopen based dso])
-  fi
- ;;
- esac
-fi
-
-if test "${WITH_MODULES}" = "1"; then
-  TEST_MODULES="ModuleTests"
-fi  
-
-AC_SUBST(WITH_MODULES)
-AC_SUBST(MODULE_PLATFORM_LIBS)
-AC_SUBST(MODULE_EXTENSION)
-AC_SUBST(TEST_MODULES)
-
-dnl
-dnl Tester makes use of readline if present
-dnl
-
-dnl
-dnl specific tests to setup DV and Bill's devel environments with debug etc ...
-dnl (-Wunreachable-code)
-dnl
-if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/XML" ]] || \
-   [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/home/veillard/libxml2" ]] || \
-   [[ "${LOGNAME}" = "bill" -a "`pwd`" = "/home/bill/gnomesvn/libxml2" ]]
-   then
-    if test "$with_minimum" != "yes"
-    then
-	if test "${with_mem_debug}" = "" ; then
-	    echo Activating memory debugging
-	    with_mem_debug="yes"
-	    with_run_debug="yes"
-	fi
-	if test "${with_docbook}" = "" ; then
-	    with_docbook="yes"
-	fi
-    fi
-    if test "${GCC}" = "yes" ; then
-    EXTRA_CFLAGS="-g -O -pedantic -W -Wformat -Wno-format-extra-args -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls -Wall"
-    fi
-    STATIC_BINARIES="-static"
-dnl -Wcast-qual -ansi
-else
-    STATIC_BINARIES=
-fi
-AC_SUBST(STATIC_BINARIES)
-
-dnl
-dnl Check for trio string functions
-dnl
-
-if test "${NEED_TRIO}" = "1" ; then
-    echo Adding trio library for string functions
-    WITH_TRIO=1
-else    
-    WITH_TRIO=0
-fi
-AM_CONDITIONAL(WITH_TRIO_SOURCES, test "${NEED_TRIO}" = "1")
-AC_SUBST(WITH_TRIO)
-
-dnl
-dnl Allow to enable/disable various pieces
-dnl
-echo Checking configuration requirements
-
-dnl
-dnl Thread-related stuff
-dnl
-THREAD_LIBS=""
-BASE_THREAD_LIBS=""
-WITH_THREADS=0
-THREAD_CFLAGS=""
-TEST_THREADS=""
-THREADS_W32=""
-WITH_THREAD_ALLOC=0
-
-if test "$with_threads" = "no" ; then
-    echo Disabling multithreaded support
-else
-    echo Enabling multithreaded support
-
-    dnl Default to native threads on Windows
-    case $host_os in
-       *mingw*) if test "$with_threads" != "pthread" && test "$with_threads" != "no"; then
-               WITH_THREADS="1"
-               THREADS_W32="1"
-               THREAD_CFLAGS="$THREAD_CFLAGS -DHAVE_WIN32_THREADS"
-           fi
-       ;;
-    esac
-
-    dnl Use pthread by default in other cases
-    if test -z "$THREADS_W32"; then
-        if test "$with_threads" = "pthread" || test "$with_threads" = "" || test "$with_threads" = "yes" ; then
-            AC_CHECK_HEADER(pthread.h,
-                AC_CHECK_LIB(pthread, pthread_join,[
-                THREAD_LIBS="-lpthread"
-                AC_DEFINE([HAVE_LIBPTHREAD], [], [Define if pthread library is there (-lpthread)])
-                AC_DEFINE([HAVE_PTHREAD_H], [], [Define if <pthread.h> is there])
-                WITH_THREADS="1"]))
-        fi
-    fi
-
-    case $host_os in
-       *cygwin*) THREAD_LIBS=""
-       ;;
-       *beos*) WITH_THREADS="1"
-	   THREAD_CFLAGS="$THREAD_CFLAGS -DHAVE_BEOS_THREADS"
-       ;;
-       *linux*)
-           if test "${GCC}" = "yes" ; then
-	       GCC_VERSION=`${CC} --version | head -1 | awk '{print $3}'`
-	       GCC_MAJOR=`echo ${GCC_VERSION} | sed 's+\..*++'`
-	       GCC_MEDIUM=`echo ${GCC_VERSION} | sed 's+[[0-9]]*\.++' | sed 's+\..*++'`
-	       if test "${THREAD_LIBS}" = "-lpthread" ; then
-	           if expr ${GCC_MEDIUM} \> 2 \& ${GCC_MAJOR} = 3 > /dev/null
-		   then
-		       THREAD_LIBS=""
-		       BASE_THREAD_LIBS="-lpthread"
-		   else
-		   if expr ${GCC_MAJOR} \> 3 > /dev/null
-		   then
-		       THREAD_LIBS=""
-		       BASE_THREAD_LIBS="-lpthread"
-		   else
-		       echo old GCC disabling weak symbols for pthread
-		   fi
-		   fi
-	       fi
-	   fi
-       ;;
-    esac
-    if test "$WITH_THREADS" = "1" ; then
-	THREAD_CFLAGS="$THREAD_CFLAGS -D_REENTRANT"
-	TEST_THREADS="Threadtests"
-    fi
-fi
-if test "$with_thread_alloc" = "yes" -a "$WITH_THREADS" = "1" ; then
-    WITH_THREAD_ALLOC=1
-fi
-
-AC_SUBST(THREAD_LIBS)
-AC_SUBST(BASE_THREAD_LIBS)
-AC_SUBST(WITH_THREADS)
-AC_SUBST(THREAD_CFLAGS)
-AC_SUBST(TEST_THREADS)
-AC_SUBST(WITH_THREAD_ALLOC)
-AM_CONDITIONAL([THREADS_W32],[test -n "$THREADS_W32"])
-
-dnl
-dnl xmllint shell history
-dnl
-if test "$with_history" = "yes" ; then
-    echo Enabling xmllint shell history
-    dnl check for terminal library. this is a very cool solution
-    dnl from octave's configure.in
-    unset tcap
-    for termlib in ncurses curses termcap terminfo termlib; do
-	AC_CHECK_LIB(${termlib}, tputs, [tcap="-l$termlib"])
-	test -n "$tcap" && break
-    done
-
-    AC_CHECK_HEADER(readline/history.h,
-	AC_CHECK_LIB(history, append_history,[
-	   RDL_LIBS="-lhistory"
-	   AC_DEFINE([HAVE_LIBHISTORY], [], [Define if history library is there (-lhistory)])]))
-    AC_CHECK_HEADER(readline/readline.h,
-	AC_CHECK_LIB(readline, readline,[
-	   RDL_LIBS="-lreadline $RDL_LIBS $tcap"
-	   AC_DEFINE([HAVE_LIBREADLINE], [], [Define if readline library is there (-lreadline)])], , $tcap))
-    if test -n "$RDL_DIR" -a -n "$RDL_LIBS"; then
-	CPPFLAGS="$CPPFLAGS -I${RDL_DIR}/include"
-	RDL_LIBS="-L${RDL_DIR}/lib $RDL_LIBS"
-    fi
-fi
-
-dnl
-dnl Tree functions
-dnl
-if test "$with_tree" = "no" ; then
-    echo Disabling DOM like tree manipulation APIs
-    WITH_TREE=0
-else    
-    WITH_TREE=1
-fi
-AC_SUBST(WITH_TREE)
-
-if test "$with_ftp" = "no" ; then
-    echo Disabling FTP support
-    WITH_FTP=0
-    FTP_OBJ=
-else    
-    WITH_FTP=1
-    FTP_OBJ=nanoftp.o
-fi
-AC_SUBST(WITH_FTP)
-AC_SUBST(FTP_OBJ)
-
-if test "$with_http" = "no" ; then
-    echo Disabling HTTP support
-    WITH_HTTP=0
-    HTTP_OBJ=
-else    
-    WITH_HTTP=1
-    HTTP_OBJ=nanohttp.o
-fi
-AC_SUBST(WITH_HTTP)
-AC_SUBST(HTTP_OBJ)
-
-if test "$with_legacy" = "no" ; then
-    echo Disabling deprecated APIs
-    WITH_LEGACY=0
-else    
-    WITH_LEGACY=1
-fi
-AC_SUBST(WITH_LEGACY)
-
-if test "$with_reader" = "no" ; then
-    echo Disabling the xmlReader parsing interface
-    WITH_READER=0
-    READER_TEST=
-else    
-    WITH_READER=1
-    READER_TEST=Readertests
-    if test "$with_push" = "no" ; then
-        echo xmlReader requires Push interface - enabling it
-	with_push=yes
-    fi
-fi
-AC_SUBST(WITH_READER)
-AC_SUBST(READER_TEST)
-
-if test "$with_writer" = "no" ; then
-    echo Disabling the xmlWriter saving interface
-    WITH_WRITER=0
-#    WRITER_TEST=
-else    
-    WITH_WRITER=1
-#    WRITER_TEST=Writertests
-    if test "$with_push" = "no" ; then
-        echo xmlWriter requires Push interface - enabling it
-	with_push=yes
-    fi
-    if test "$with_output" = "no" ; then
-        echo xmlWriter requires Output interface - enabling it
-	with_output=yes
-    fi
-fi
-AC_SUBST(WITH_WRITER)
-#AC_SUBST(WRITER_TEST)
-
-if test "$with_pattern" = "no" ; then
-    echo Disabling the xmlPattern parsing interface
-    WITH_PATTERN=0
-    TEST_PATTERN=
-else    
-    WITH_PATTERN=1
-    TEST_PATTERN=Patterntests
-fi
-AC_SUBST(WITH_PATTERN)
-AC_SUBST(TEST_PATTERN)
-
-if test "$with_sax1" = "no" ; then
-    echo Disabling the older SAX1 interface
-    WITH_SAX1=0
-    TEST_SAX=
-else    
-    WITH_SAX1=1
-    TEST_SAX=SAXtests
-fi
-AC_SUBST(WITH_SAX1)
-AM_CONDITIONAL(WITH_SAX1_SOURCES, test "${WITH_TRIO}" = "1")
-AC_SUBST(TEST_SAX)
-
-if test "$with_push" = "no" ; then
-    echo Disabling the PUSH parser interfaces
-    WITH_PUSH=0
-    TEST_PUSH=
-else    
-    WITH_PUSH=1
-    TEST_PUSH="XMLPushtests"
-fi
-AC_SUBST(WITH_PUSH)
-AC_SUBST(TEST_PUSH)
-
-if test "$with_html" = "no" ; then
-    echo Disabling HTML support
-    WITH_HTML=0
-    HTML_OBJ=
-    TEST_HTML=
-else    
-    WITH_HTML=1
-    HTML_OBJ="HTMLparser.o HTMLtree.o"
-    TEST_HTML=HTMLtests
-    if test "$with_push" != "no" ; then
-        TEST_PHTML=HTMLPushtests
-    else
-        TEST_PHTML=
-    fi
-fi
-AC_SUBST(WITH_HTML)
-AC_SUBST(HTML_OBJ)
-AC_SUBST(TEST_HTML)
-AC_SUBST(TEST_PHTML)
-
-if test "$with_valid" = "no" ; then
-    echo Disabling DTD validation support
-    WITH_VALID=0
-    TEST_VALID=
-    TEST_VTIME=
-else    
-    WITH_VALID=1
-    TEST_VALID=Validtests
-    TEST_VTIME=VTimingtests
-fi
-AC_SUBST(WITH_VALID)
-AC_SUBST(TEST_VALID)
-AC_SUBST(TEST_VTIME)
-
-if test "$with_catalog" = "no" ; then
-    echo Disabling Catalog support
-    WITH_CATALOG=0
-    CATALOG_OBJ=
-    TEST_CATALOG=
-else    
-    WITH_CATALOG=1
-    CATALOG_OBJ="catalog.o"
-    TEST_CATALOG=Catatests
-fi
-AC_SUBST(WITH_CATALOG)
-AC_SUBST(CATALOG_OBJ)
-AC_SUBST(TEST_CATALOG)
-
-if test "$with_docbook" = "no" ; then
-    echo Disabling Docbook support
-    WITH_DOCB=0
-    DOCB_OBJ=
-else    
-    WITH_DOCB=1
-    DOCB_OBJ="DOCBparser.o"
-fi
-AC_SUBST(WITH_DOCB)
-AC_SUBST(DOCB_OBJ)
-
-
-if test "$with_xptr" = "no" ; then
-    echo Disabling XPointer support
-    WITH_XPTR=0
-    XPTR_OBJ=
-    TEST_XPTR=
-else    
-    WITH_XPTR=1
-    XPTR_OBJ=xpointer.o
-    TEST_XPTR=XPtrtests
-    if test "$with_xpath" = "no" ; then
-        echo XPointer requires XPath support - enabling it
-	with_xpath=yes
-    fi
-fi
-AC_SUBST(WITH_XPTR)
-AC_SUBST(XPTR_OBJ)
-AC_SUBST(TEST_XPTR)
-
-if test "$with_c14n" = "no" ; then
-    echo Disabling C14N support
-    WITH_C14N=0
-    C14N_OBJ=
-    TEST_C14N=
-else    
-    WITH_C14N=1
-    C14N_OBJ="c14n.c"
-    TEST_C14N=C14Ntests
-    if test "$with_xpath" = "no" ; then
-        echo C14N requires XPath support - enabling it
-	with_xpath=yes
-    fi
-fi
-AC_SUBST(WITH_C14N)
-AC_SUBST(C14N_OBJ)
-AC_SUBST(TEST_C14N)
-
-if test "$with_xinclude" = "no" ; then
-    echo Disabling XInclude support
-    WITH_XINCLUDE=0
-    XINCLUDE_OBJ=
-    with_xinclude="no"
-    TEST_XINCLUDE=
-else    
-    WITH_XINCLUDE=1
-    XINCLUDE_OBJ=xinclude.o
-    TEST_XINCLUDE=XIncludetests
-    if test "$with_xpath" = "no" ; then
-        echo XInclude requires XPath support - enabling it
-	with_xpath=yes
-    fi
-fi
-AC_SUBST(WITH_XINCLUDE)
-AC_SUBST(XINCLUDE_OBJ)
-AC_SUBST(TEST_XINCLUDE)
-
-if test "$with_xptr" = "" -a "$with_xpath" = "no" ; then
-    with_xptr=no
-fi
-
-if test "$with_schematron" = "" -a "$with_xpath" = "no" ; then
-    with_schematron=no
-fi
-
-if test "$with_schematron" = "no" ; then
-    echo "Disabling Schematron support"
-    WITH_SCHEMATRON=0
-    TEST_SCHEMATRON=
-else 
-    echo "Enabled Schematron support"
-    WITH_SCHEMATRON=1
-    TEST_SCHEMATRON="Schematrontests"
-    with_xpath=yes
-    with_pattern=yes
-    with_schematron=yes
-fi
-AC_SUBST(WITH_SCHEMATRON)
-AC_SUBST(TEST_SCHEMATRON)
-
-if test "$with_xpath" = "no" ; then
-    echo Disabling XPATH support
-    WITH_XPATH=0
-    XPATH_OBJ=
-    TEST_XPATH=
-else    
-    WITH_XPATH=1
-    XPATH_OBJ=xpath.o
-    TEST_XPATH=XPathtests
-fi
-AC_SUBST(WITH_XPATH)
-AC_SUBST(XPATH_OBJ)
-AC_SUBST(TEST_XPATH)
-
-dnl
-dnl output functions
-dnl
-if test "$with_output" = "no" ; then
-    echo Disabling serialization/saving support
-    WITH_OUTPUT=0
-else    
-    WITH_OUTPUT=1
-fi
-AC_SUBST(WITH_OUTPUT)
-
-WITH_ICONV=0
-if test "$with_iconv" = "no" ; then
-    echo Disabling ICONV support
-else
-    if test "$with_iconv" != "yes" -a "$with_iconv" != "" ; then
-	CPPFLAGS="${CPPFLAGS} -I$with_iconv/include"
-	# Export this since our headers include iconv.h
-	XML_INCLUDEDIR="${XML_INCLUDEDIR} -I$with_iconv/include"
-	ICONV_LIBS="-L$with_iconv/lib"
-    fi
-
-    AC_CHECK_HEADER(iconv.h,
-	AC_MSG_CHECKING(for iconv)
-	AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
-#include <iconv.h>]],[[
-iconv_t cd = iconv_open ("","");
-iconv (cd, NULL, NULL, NULL, NULL);]])],[
-	    AC_MSG_RESULT(yes)
-	    WITH_ICONV=1],[
-	    AC_MSG_RESULT(no)
-	    AC_MSG_CHECKING(for iconv in -liconv)
-
-	    _ldflags="${LDFLAGS}"
-	    _libs="${LIBS}"
-	    LDFLAGS="${LDFLAGS} ${ICONV_LIBS}"
-	    LIBS="${LIBS} -liconv"
-
-	    AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
-#include <iconv.h>]],[[
-iconv_t cd = iconv_open ("","");
-iconv (cd, NULL, NULL, NULL, NULL);]])],[
-		AC_MSG_RESULT(yes)
-		WITH_ICONV=1
-		ICONV_LIBS="${ICONV_LIBS} -liconv"
-		LIBS="${_libs}"
-		LDFLAGS="${_ldflags}"],[
-		AC_MSG_RESULT(no)
-		LIBS="${_libs}"
-		LDFLAGS="${_ldflags}"])]))
-
-	if test "$WITH_ICONV" = "1" ; then
-		AC_MSG_CHECKING([for iconv declaration])
-		AC_CACHE_VAL(xml_cv_iconv_arg2, [
-			AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(__cplusplus)
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
-]], [])], xml_cv_iconv_arg2="", xml_cv_iconv_arg2="const")])
-
-		xml_cv_iconv_decl="extern size_t iconv (iconv_t cd, $xml_cv_iconv_arg2 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
-		AC_MSG_RESULT([${xml_xxx:-
-	}$xml_cv_iconv_decl])
-		AC_DEFINE_UNQUOTED(ICONV_CONST, $xml_cv_iconv_arg2,
-			[Define as const if the declaration of iconv() needs const.])
-	fi
-fi
-case "$host" in
-	*mingw*) M_LIBS=""
-	;;
-	*beos*) M_LIBS=""
-	;;
-        *haiku*) M_LIBS=""
-        ;;
-	*) M_LIBS="-lm"
-	;;
-esac
-AC_SUBST(WITH_ICONV)
-
-WITH_ICU=0
-ICU_LIBS=""
-if test "$with_icu" != "yes" ; then
-    echo Disabling ICU support
-else
-    # Try pkg-config first so that static linking works.
-    # If this succeeeds, we ignore the WITH_ICU directory.
-    PKG_CHECK_MODULES([ICU],[icu-i18n],
-        [have_libicu=yes],
-        [have_libicu=no])
-
-    # If pkg-config failed, fall back to AC_CHECK_LIB. This
-    # will not pick up the necessary LIBS flags for liblzma's
-    # private dependencies, though, so static linking may fail.
-    if test "x$have_libicu" = "xno"; then
-        ICU_CONFIG=icu-config
-        if ${ICU_CONFIG} --cflags >/dev/null 2>&1
-        then
-            ICU_LIBS=`${ICU_CONFIG} --ldflags`
-            have_libicu=yes
-            echo Enabling ICU support
-        else
-            if test "$with_icu" != "yes" -a "$with_iconv" != "" ; then
-                CPPFLAGS="${CPPFLAGS} -I$with_icu"
-                # Export this since our headers include icu.h
-                XML_INCLUDEDIR="${XML_INCLUDEDIR} -I$with_icu"
-            fi
-
-            AC_CHECK_HEADER(unicode/ucnv.h,
-            AC_MSG_CHECKING(for icu)
-            AC_TRY_LINK([#include <unicode/ucnv.h>],[
-        UConverter *utf = ucnv_open("UTF-8", NULL);],[
-                AC_MSG_RESULT(yes)
-                have_libicu=yes],[
-                AC_MSG_RESULT(no)
-                AC_MSG_CHECKING(for icu in -licucore)
-
-                _ldflags="${LDFLAGS}"
-                _libs="${LIBS}"
-                LDFLAGS="${LDFLAGS} ${ICU_LIBS}"
-                LIBS="${LIBS} -licucore"
-
-                AC_TRY_LINK([#include <unicode/ucnv.h>],[
-        UConverter *utf = ucnv_open("UTF-8", NULL);],[
-                    AC_MSG_RESULT(yes)
-                    have_libicu=yes
-                    ICU_LIBS="${ICU_LIBS} -licucore"
-                    LIBS="${_libs}"
-                    LDFLAGS="${_ldflags}"],[
-                    AC_MSG_RESULT(no)
-                    LIBS="${_libs}"
-                LDFLAGS="${_ldflags}"])]))
-        fi
-    fi
-
-    # Found the library via either method?
-    if test "x$have_libicu" = "xyes"; then
-        WITH_ICU=1
-    fi
-fi
-XML_LIBS="-lxml2 $Z_LIBS $LZMA_LIBS $THREAD_LIBS $ICONV_LIBS $ICU_LIBS $M_LIBS $LIBS"
-XML_LIBTOOLLIBS="libxml2.la"
-AC_SUBST(WITH_ICU)
-
-WITH_ISO8859X=1
-if test "$WITH_ICONV" != "1" ; then
-if test "$with_iso8859x" = "no" ; then
-    echo Disabling ISO8859X support
-    WITH_ISO8859X=0
-fi
-fi
-AC_SUBST(WITH_ISO8859X)
-
-if test "$with_schemas" = "no" ; then
-    echo "Disabling Schemas/Relax-NG support"
-    WITH_SCHEMAS=0
-    TEST_SCHEMAS=
-else    
-    echo "Enabled Schemas/Relax-NG support"
-    WITH_SCHEMAS=1
-    TEST_SCHEMAS="Schemastests Relaxtests"
-    if test "$PYTHON_INCLUDES" != "" ; then
-        PYTHON_TESTS="$PYTHON_TESTS RelaxNGPythonTests SchemasPythonTests"
-    fi
-    with_regexps=yes
-fi
-AC_SUBST(WITH_SCHEMAS)
-AC_SUBST(TEST_SCHEMAS)
-
-if test "$with_regexps" = "no" ; then
-    echo Disabling Regexps support
-    WITH_REGEXPS=0
-    TEST_REGEXPS=
-else    
-    WITH_REGEXPS=1
-    TEST_REGEXPS="Regexptests Automatatests"
-fi
-AC_SUBST(WITH_REGEXPS)
-AC_SUBST(TEST_REGEXPS)
-
-if test "$with_debug" = "no" ; then
-    echo Disabling DEBUG support
-    WITH_DEBUG=0
-    DEBUG_OBJ=
-    TEST_DEBUG=
-else    
-    WITH_DEBUG=1
-    DEBUG_OBJ=debugXML.o
-    TEST_DEBUG=Scripttests
-fi
-AC_SUBST(WITH_DEBUG)
-AC_SUBST(DEBUG_OBJ)
-AC_SUBST(TEST_DEBUG)
-
-if test "$with_mem_debug" = "yes" ; then
-    if test "$with_thread_alloc" = "yes" ; then
-        echo Disabling memory debug - cannot use mem-debug with thread-alloc!
-	WITH_MEM_DEBUG=0
-    else
-        echo Enabling memory debug support
-        WITH_MEM_DEBUG=1
-    fi
-else    
-    WITH_MEM_DEBUG=0
-fi
-AC_SUBST(WITH_MEM_DEBUG)
-
-if test "$with_run_debug" = "yes" ; then
-    echo Enabling runtime debug support
-    WITH_RUN_DEBUG=1
-else    
-    WITH_RUN_DEBUG=0
-fi
-AC_SUBST(WITH_RUN_DEBUG)
-
-WIN32_EXTRA_LIBADD=
-WIN32_EXTRA_LDFLAGS=
-CYGWIN_EXTRA_LDFLAGS=
-CYGWIN_EXTRA_PYTHON_LIBADD=
-WIN32_EXTRA_PYTHON_LIBADD=
-case "$host" in
- *-*-mingw*)
- CPPFLAGS="$CPPFLAGS -DWIN32"
- WIN32_EXTRA_LIBADD="-lws2_32"
- WIN32_EXTRA_LDFLAGS="-no-undefined"
- if test "${PYTHON}" != ""
- then
-   WIN32_EXTRA_PYTHON_LIBADD="-L${pythondir}/../../libs -lpython$(echo ${PYTHON_VERSION} | tr -d .)"
- fi
- ;;
- *-*-cygwin*)
- CYGWIN_EXTRA_LDFLAGS="-no-undefined"
- if test "${PYTHON}" != ""
- then
-   CYGWIN_EXTRA_PYTHON_LIBADD="-L/usr/lib/python${PYTHON_VERSION}/config -lpython${PYTHON_VERSION}"
- fi
- ;;
-esac
-AC_SUBST(WIN32_EXTRA_LIBADD)
-AC_SUBST(WIN32_EXTRA_LDFLAGS)
-AC_SUBST(WIN32_EXTRA_PYTHON_LIBADD)
-AC_SUBST(CYGWIN_EXTRA_LDFLAGS)
-AC_SUBST(CYGWIN_EXTRA_PYTHON_LIBADD)
-
-dnl Checking the standard string functions availability
-dnl
-dnl Note mingw* has C99 implementation that produce expected xml numbers
-dnl if code use {v}snprintf functions.
-dnl If you like to activate at run-time C99 compatible number output
-dnl see release note for mingw runtime 3.15:
-dnl  http://sourceforge.net/project/shownotes.php?release_id=24832
-dnl
-dnl Also *win32*config.h files redefine them for various MSC compilers.
-dnl
-dnl So do not redefine {v}snprintf to _{v}snprintf like follwing:
-dnl  AC_DEFINE([snprintf],[_snprintf],[Win32 Std C name mangling work-around])
-dnl  AC_DEFINE([vsnprintf],[_vsnprintf],[Win32 Std C name mangling work-around])
-dnl and do not redefine those functions is C-source files.
-dnl
-AC_CHECK_FUNCS(printf sprintf fprintf snprintf vfprintf vsprintf vsnprintf sscanf,,
-	NEED_TRIO=1)
-
-if test "$with_coverage" = "yes" -a "${GCC}" = "yes"
-then
-    echo Enabling code coverage for GCC
-    EXTRA_CFLAGS="$EXTRA_CFLAGS -fprofile-arcs -ftest-coverage"
-    LDFLAGS="$LDFLAGS -fprofile-arcs -ftest-coverage"
-else
-    echo Disabling code coverage for GCC
-fi
-
-AC_SUBST(CPPFLAGS)
-AC_SUBST(EXTRA_CFLAGS)
-AC_SUBST(LDFLAGS)
-AC_SUBST(XML_CFLAGS)
-
-AC_SUBST(XML_LIBDIR)
-AC_SUBST(XML_LIBS)
-AC_SUBST(XML_LIBTOOLLIBS)
-AC_SUBST(ICONV_LIBS)
-AC_SUBST(ICU_LIBS)
-AC_SUBST(XML_INCLUDEDIR)
-AC_SUBST(HTML_DIR)
-AC_SUBST(HAVE_ISNAN)
-AC_SUBST(HAVE_ISINF)
-AC_SUBST(PYTHON)
-AC_SUBST(PYTHON_VERSION)
-AC_SUBST(PYTHON_INCLUDES)
-AC_SUBST(PYTHON_SITE_PACKAGES)
-
-AC_SUBST(M_LIBS)
-AC_SUBST(RDL_LIBS)
-
-dnl for the spec file
-RELDATE=`date +'%a %b %e %Y'`
-AC_SUBST(RELDATE)
-AC_SUBST(PYTHON_TESTS)
-
-rm -f COPYING.LIB COPYING
-ln -s $srcdir/Copyright COPYING
-
-# keep on one line for cygwin c.f. #130896
-AC_CONFIG_FILES([libxml2.spec:libxml.spec.in Makefile include/Makefile include/libxml/Makefile doc/Makefile doc/examples/Makefile doc/devhelp/Makefile example/Makefile python/Makefile python/tests/Makefile xstc/Makefile include/libxml/xmlversion.h libxml-2.0.pc libxml-2.0-uninstalled.pc libxml2-config.cmake])
-AC_CONFIG_FILES([python/setup.py], [chmod +x python/setup.py])
-AC_CONFIG_FILES([xml2-config], [chmod +x xml2-config])
-AC_OUTPUT
-
-echo Done configuring
Index: radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/libxml2-2.9.9-new
===================================================================
--- radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/libxml2-2.9.9-new	(revision 120)
+++ radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/libxml2-2.9.9-new	(nonexistent)

Property changes on: radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/libxml2-2.9.9-new
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/create.patch.sh	(revision 120)
+++ radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/create.patch.sh	(nonexistent)
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-VERSION=2.9.9
-
-tar --files-from=file.list -xJvf ../libxml2-$VERSION.tar.xz
-mv libxml2-$VERSION libxml2-$VERSION-orig
-
-cp -rf ./libxml2-$VERSION-new ./libxml2-$VERSION
-
-diff --unified -Nr  libxml2-$VERSION-orig  libxml2-$VERSION > libxml2-$VERSION-python.patch
-
-mv libxml2-$VERSION-python.patch ../patches
-
-rm -rf ./libxml2-$VERSION
-rm -rf ./libxml2-$VERSION-orig

Property changes on: radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch/create.patch.sh
___________________________________________________________________
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch
===================================================================
--- radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch	(revision 120)
+++ radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch	(nonexistent)

Property changes on: radix-1.9/sources/packages/l/libxml2/create-2.9.9-python-patch
___________________________________________________________________
Deleted: svn:ignore
## -1,73 +0,0 ##
-
-# install dir
-dist
-
-# Target build dirs
-.a1x-newlib
-.a2x-newlib
-.at91sam7s-newlib
-
-.build-machine
-
-.a1x-glibc
-.a2x-glibc
-.h3-glibc
-.h5-glibc
-.i586-glibc
-.i686-glibc
-.imx6-glibc
-.jz47xx-glibc
-.makefile
-.am335x-glibc
-.omap543x-glibc
-.p5600-glibc
-.power8-glibc
-.power8le-glibc
-.power9-glibc
-.power9le-glibc
-.m1000-glibc
-.riscv64-glibc
-.rk328x-glibc
-.rk33xx-glibc
-.rk339x-glibc
-.s8xx-glibc
-.s9xx-glibc
-.x86_64-glibc
-
-# Hidden files (each file)
-.makefile
-.dist
-.rootfs
-
-# src & hw requires
-.src_requires
-.src_requires_depend
-.requires
-.requires_depend
-
-# Tarballs
-*.gz
-*.bz2
-*.lz
-*.xz
-*.tgz
-*.txz
-
-# Signatures
-*.asc
-*.sig
-*.sign
-*.sha1sum
-
-# Patches
-*.patch
-
-# Descriptions
-*.dsc
-*.txt
-
-# Default linux config files
-*.defconfig
-
-# backup copies
-*~
Index: radix-1.9/sources/packages/l/libxml2/Makefile
===================================================================
--- radix-1.9/sources/packages/l/libxml2/Makefile	(revision 120)
+++ radix-1.9/sources/packages/l/libxml2/Makefile	(revision 121)
@@ -7,7 +7,7 @@
 
 url         = $(DOWNLOAD_SERVER)/sources/packages/l/libxml2
 
-versions    = 2.9.9
+versions    = 2.11.4
 pkgname     = libxml2
 suffix      = tar.xz
 
@@ -14,7 +14,7 @@
 tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
 sha1s       = $(addsuffix .sha1sum, $(tarballs))
 
-patches     = $(CURDIR)/patches/libxml2-2.9.9-python.patch
+patches     = $(CURDIR)/patches/libxml2-2.11.4-python-unicode.patch
 
 .NOTPARALLEL: $(patches)
 
@@ -49,7 +49,7 @@
 
 $(patches): $(sha1s)
 	@echo -e "\n======= Create Patches =======\n" ; \
-	 ( cd create-2.9.9-python-patch ; ./create.patch.sh ) ; \
+	 ( cd create-2.11.4-python-unicode-patch ; ./create.patch.sh ) ; \
 	 echo -e "\n"
 
 download_clean:
Index: radix-1.9/sources/packages/l/libxml2/create-2.11.4-python-unicode-patch/create.patch.sh
===================================================================
--- radix-1.9/sources/packages/l/libxml2/create-2.11.4-python-unicode-patch/create.patch.sh	(nonexistent)
+++ radix-1.9/sources/packages/l/libxml2/create-2.11.4-python-unicode-patch/create.patch.sh	(revision 121)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=2.11.4
+
+tar --files-from=file.list -xJvf ../libxml2-$VERSION.tar.xz
+mv libxml2-$VERSION libxml2-$VERSION-orig
+
+cp -rf ./libxml2-$VERSION-new ./libxml2-$VERSION
+
+diff --unified -Nr  libxml2-$VERSION-orig  libxml2-$VERSION > libxml2-$VERSION-python-unicode.patch
+
+mv libxml2-$VERSION-python-unicode.patch ../patches
+
+rm -rf ./libxml2-$VERSION
+rm -rf ./libxml2-$VERSION-orig

Property changes on: radix-1.9/sources/packages/l/libxml2/create-2.11.4-python-unicode-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: radix-1.9/sources/packages/l/libxml2/create-2.11.4-python-unicode-patch/file.list
===================================================================
--- radix-1.9/sources/packages/l/libxml2/create-2.11.4-python-unicode-patch/file.list	(nonexistent)
+++ radix-1.9/sources/packages/l/libxml2/create-2.11.4-python-unicode-patch/file.list	(revision 121)
@@ -0,0 +1 @@
+libxml2-2.11.4/python/libxml.c
Index: radix-1.9/sources/packages/l/libxml2/create-2.11.4-python-unicode-patch/libxml2-2.11.4-new/python/libxml.c
===================================================================
--- radix-1.9/sources/packages/l/libxml2/create-2.11.4-python-unicode-patch/libxml2-2.11.4-new/python/libxml.c	(nonexistent)
+++ radix-1.9/sources/packages/l/libxml2/create-2.11.4-python-unicode-patch/libxml2-2.11.4-new/python/libxml.c	(revision 121)
@@ -0,0 +1,3929 @@
+/*
+ * libxml.c: this modules implements the main part of the glue of the
+ *           libxml2 library and the Python interpreter. It provides the
+ *           entry points where an automatically generated stub is either
+ *           unpractical or would not match cleanly the Python model.
+ *
+ * If compiled with MERGED_MODULES, the entry point will be used to
+ * initialize both the libxml2 and the libxslt wrappers
+ *
+ * See Copyright for the status of this software.
+ *
+ * daniel@veillard.com
+ */
+#define PY_SSIZE_T_CLEAN
+#include <Python.h>
+#include <fileobject.h>
+/* #include "config.h" */
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <libxml/xpath.h>
+#include <libxml/xmlerror.h>
+#include <libxml/xpathInternals.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/xmlIO.h>
+#include <libxml/c14n.h>
+#include <libxml/xmlreader.h>
+#include <libxml/xmlsave.h>
+#include "libxml_wrap.h"
+#include "libxml2-py.h"
+
+#if defined(WITH_TRIO)
+#include "trio.h"
+#define vsnprintf trio_vsnprintf
+#endif
+
+/* #define DEBUG */
+/* #define DEBUG_SAX */
+/* #define DEBUG_XPATH */
+/* #define DEBUG_ERROR */
+/* #define DEBUG_MEMORY */
+/* #define DEBUG_FILES */
+/* #define DEBUG_LOADER */
+
+#if PY_MAJOR_VERSION >= 3
+PyObject *PyInit_libxml2mod(void);
+
+#define PY_IMPORT_STRING_SIZE PyUnicode_FromStringAndSize
+#define PY_IMPORT_STRING PyUnicode_FromString
+#else
+void initlibxml2mod(void);
+#define PY_IMPORT_STRING_SIZE PyString_FromStringAndSize
+#define PY_IMPORT_STRING PyString_FromString
+#endif
+
+
+/**
+ * TODO:
+ *
+ * macro to flag unimplemented blocks
+ */
+#define TODO 								\
+    xmlGenericError(xmlGenericErrorContext,				\
+	    "Unimplemented block at %s:%d\n",				\
+            __FILE__, __LINE__);
+/*
+ * the following vars are used for XPath extensions, but
+ * are also referenced within the parser cleanup routine.
+ */
+static int libxml_xpathCallbacksInitialized = 0;
+
+typedef struct libxml_xpathCallback {
+    xmlXPathContextPtr ctx;
+    xmlChar *name;
+    xmlChar *ns_uri;
+    PyObject *function;
+} libxml_xpathCallback, *libxml_xpathCallbackPtr;
+typedef libxml_xpathCallback libxml_xpathCallbackArray[];
+static int libxml_xpathCallbacksAllocd = 10;
+static libxml_xpathCallbackArray *libxml_xpathCallbacks = NULL;
+static int libxml_xpathCallbacksNb = 0;
+
+/************************************************************************
+ *									*
+ *		Memory debug interface					*
+ *									*
+ ************************************************************************/
+
+#if 0
+extern void xmlMemFree(void *ptr);
+extern void *xmlMemMalloc(size_t size);
+extern void *xmlMemRealloc(void *ptr, size_t size);
+extern char *xmlMemoryStrdup(const char *str);
+#endif
+
+static int libxmlMemoryDebugActivated = 0;
+static long libxmlMemoryAllocatedBase = 0;
+
+static int libxmlMemoryDebug = 0;
+static xmlFreeFunc freeFunc = NULL;
+static xmlMallocFunc mallocFunc = NULL;
+static xmlReallocFunc reallocFunc = NULL;
+static xmlStrdupFunc strdupFunc = NULL;
+
+static void
+libxml_xmlErrorInitialize(void); /* forward declare */
+
+PyObject *
+libxml_xmlMemoryUsed(PyObject * self ATTRIBUTE_UNUSED, 
+        PyObject * args ATTRIBUTE_UNUSED)
+{
+    long ret;
+    PyObject *py_retval;
+
+    ret = xmlMemUsed();
+
+    py_retval = libxml_longWrap(ret);
+    return (py_retval);
+}
+
+PyObject *
+libxml_xmlDebugMemory(PyObject * self ATTRIBUTE_UNUSED, PyObject * args)
+{
+    int activate;
+    PyObject *py_retval;
+    long ret;
+
+    if (!PyArg_ParseTuple(args, (char *) "i:xmlDebugMemory", &activate))
+        return (NULL);
+
+#ifdef DEBUG_MEMORY
+    printf("libxml_xmlDebugMemory(%d) called\n", activate);
+#endif
+
+    if (activate != 0) {
+        if (libxmlMemoryDebug == 0) {
+            /*
+             * First initialize the library and grab the old memory handlers
+             * and switch the library to memory debugging
+             */
+            xmlMemGet((xmlFreeFunc *) & freeFunc,
+                      (xmlMallocFunc *) & mallocFunc,
+                      (xmlReallocFunc *) & reallocFunc,
+                      (xmlStrdupFunc *) & strdupFunc);
+            if ((freeFunc == xmlMemFree) && (mallocFunc == xmlMemMalloc) &&
+                (reallocFunc == xmlMemRealloc) &&
+                (strdupFunc == xmlMemoryStrdup)) {
+            } else {
+                ret = (long) xmlMemSetup(xmlMemFree, xmlMemMalloc,
+                                         xmlMemRealloc, xmlMemoryStrdup);
+                if (ret < 0)
+                    goto error;
+            }
+            libxmlMemoryAllocatedBase = xmlMemUsed();
+            ret = 0;
+        } else if (libxmlMemoryDebugActivated == 0) {
+            libxmlMemoryAllocatedBase = xmlMemUsed();
+            ret = 0;
+        } else {
+            ret = xmlMemUsed() - libxmlMemoryAllocatedBase;
+        }
+        libxmlMemoryDebug = 1;
+        libxmlMemoryDebugActivated = 1;
+    } else {
+        if (libxmlMemoryDebugActivated == 1)
+            ret = xmlMemUsed() - libxmlMemoryAllocatedBase;
+        else
+            ret = 0;
+        libxmlMemoryDebugActivated = 0;
+    }
+  error:
+    py_retval = libxml_longWrap(ret);
+    return (py_retval);
+}
+
+PyObject *
+libxml_xmlPythonCleanupParser(PyObject *self ATTRIBUTE_UNUSED,
+                              PyObject *args ATTRIBUTE_UNUSED) {
+
+    int ix;
+
+    /*
+     * Need to confirm whether we really want to do this (required for
+     * memcheck) in all cases...
+     */
+   
+    if (libxml_xpathCallbacks != NULL) {	/* if ext funcs declared */
+	for (ix=0; ix<libxml_xpathCallbacksNb; ix++) {
+	    if ((*libxml_xpathCallbacks)[ix].name != NULL)
+	        xmlFree((*libxml_xpathCallbacks)[ix].name);
+	    if ((*libxml_xpathCallbacks)[ix].ns_uri != NULL)
+	        xmlFree((*libxml_xpathCallbacks)[ix].ns_uri);
+	}
+	libxml_xpathCallbacksNb = 0;
+        xmlFree(libxml_xpathCallbacks);
+	libxml_xpathCallbacks = NULL;
+    }
+
+    xmlCleanupParser();
+
+    Py_INCREF(Py_None);
+    return(Py_None);
+}
+
+PyObject *
+libxml_xmlDumpMemory(ATTRIBUTE_UNUSED PyObject * self,
+                     ATTRIBUTE_UNUSED PyObject * args)
+{
+
+    if (libxmlMemoryDebug != 0)
+        xmlMemoryDump();
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+/************************************************************************
+ *									*
+ *		Handling Python FILE I/O at the C level			*
+ *	The raw I/O attack directly the File objects, while the		*
+ *	other routines address the ioWrapper instance instead		*
+ *									*
+ ************************************************************************/
+
+/**
+ * xmlPythonFileCloseUnref:
+ * @context:  the I/O context
+ *
+ * Close an I/O channel
+ */
+static int
+xmlPythonFileCloseRaw (void * context) {
+    PyObject *file, *ret;
+
+#ifdef DEBUG_FILES
+    printf("xmlPythonFileCloseUnref\n");
+#endif
+    file = (PyObject *) context;
+    if (file == NULL) return(-1);
+    ret = PyObject_CallMethod(file, (char *) "close", (char *) "()");
+    if (ret != NULL) {
+	Py_DECREF(ret);
+    }
+    Py_DECREF(file);
+    return(0);
+}
+
+/**
+ * xmlPythonFileReadRaw:
+ * @context:  the I/O context
+ * @buffer:  where to drop data
+ * @len:  number of bytes to write
+ *
+ * Read @len bytes to @buffer from the Python file in the I/O channel
+ *
+ * Returns the number of bytes read
+ */
+static int
+xmlPythonFileReadRaw (void * context, char * buffer, int len) {
+    PyObject *file;
+    PyObject *ret;
+    int lenread = -1;
+    char *data;
+
+#ifdef DEBUG_FILES
+    printf("xmlPythonFileReadRaw: %d\n", len);
+#endif
+    file = (PyObject *) context;
+    if (file == NULL) return(-1);
+    ret = PyObject_CallMethod(file, (char *) "read", (char *) "(i)", len);
+    if (ret == NULL) {
+	printf("xmlPythonFileReadRaw: result is NULL\n");
+	return(-1);
+    } else if (PyBytes_Check(ret)) {
+	lenread = PyBytes_Size(ret);
+	data = PyBytes_AsString(ret);
+#ifdef PyUnicode_Check
+    } else if (PyUnicode_Check (ret)) {
+#if PY_VERSION_HEX >= 0x03030000
+        Py_ssize_t size;
+	const char *tmp;
+
+	/* tmp doesn't need to be deallocated */
+        tmp = PyUnicode_AsUTF8AndSize(ret, &size);
+
+	lenread = (int) size;
+	data = (char *) tmp;
+#else
+        PyObject *b;
+	b = PyUnicode_AsUTF8String(ret);
+	if (b == NULL) {
+	    printf("xmlPythonFileReadRaw: failed to convert to UTF-8\n");
+	    return(-1);
+	}
+	lenread = PyBytes_Size(b);
+	data = PyBytes_AsString(b);
+	Py_DECREF(b);
+#endif
+#endif
+    } else {
+	printf("xmlPythonFileReadRaw: result is not a String\n");
+	Py_DECREF(ret);
+	return(-1);
+    }
+    if (lenread > len)
+	memcpy(buffer, data, len);
+    else
+	memcpy(buffer, data, lenread);
+    Py_DECREF(ret);
+    return(lenread);
+}
+
+/**
+ * xmlPythonFileRead:
+ * @context:  the I/O context
+ * @buffer:  where to drop data
+ * @len:  number of bytes to write
+ *
+ * Read @len bytes to @buffer from the I/O channel.
+ *
+ * Returns the number of bytes read
+ */
+static int
+xmlPythonFileRead (void * context, char * buffer, int len) {
+    PyObject *file;
+    PyObject *ret;
+    int lenread = -1;
+    char *data;
+
+#ifdef DEBUG_FILES
+    printf("xmlPythonFileRead: %d\n", len);
+#endif
+    file = (PyObject *) context;
+    if (file == NULL) return(-1);
+    ret = PyObject_CallMethod(file, (char *) "io_read", (char *) "(i)", len);
+    if (ret == NULL) {
+	printf("xmlPythonFileRead: result is NULL\n");
+	return(-1);
+    } else if (PyBytes_Check(ret)) {
+	lenread = PyBytes_Size(ret);
+	data = PyBytes_AsString(ret);
+#ifdef PyUnicode_Check
+    } else if (PyUnicode_Check (ret)) {
+#if PY_VERSION_HEX >= 0x03030000
+        Py_ssize_t size;
+	const char *tmp;
+
+	/* tmp doesn't need to be deallocated */
+        tmp = PyUnicode_AsUTF8AndSize(ret, &size);
+
+	lenread = (int) size;
+	data = (char *) tmp;
+#else
+        PyObject *b;
+	b = PyUnicode_AsUTF8String(ret);
+	if (b == NULL) {
+	    printf("xmlPythonFileRead: failed to convert to UTF-8\n");
+	    return(-1);
+	}
+	lenread = PyBytes_Size(b);
+	data = PyBytes_AsString(b);
+	Py_DECREF(b);
+#endif
+#endif
+    } else {
+	printf("xmlPythonFileRead: result is not a String\n");
+	Py_DECREF(ret);
+	return(-1);
+    }
+    if (lenread > len)
+	memcpy(buffer, data, len);
+    else
+	memcpy(buffer, data, lenread);
+    Py_DECREF(ret);
+    return(lenread);
+}
+
+/**
+ * xmlFileWrite:
+ * @context:  the I/O context
+ * @buffer:  where to drop data
+ * @len:  number of bytes to write
+ *
+ * Write @len bytes from @buffer to the I/O channel.
+ *
+ * Returns the number of bytes written
+ */
+static int
+xmlPythonFileWrite (void * context, const char * buffer, int len) {
+    PyObject *file;
+    PyObject *string;
+    PyObject *ret = NULL;
+    int written = -1;
+
+#ifdef DEBUG_FILES
+    printf("xmlPythonFileWrite: %d\n", len);
+#endif
+    file = (PyObject *) context;
+    if (file == NULL) return(-1);
+    string = PY_IMPORT_STRING_SIZE(buffer, len);
+    if (string == NULL) return(-1);
+    if (PyObject_HasAttrString(file, (char *) "io_write")) {
+        ret = PyObject_CallMethod(file, (char *) "io_write", (char *) "(O)",
+	                        string);
+    } else if (PyObject_HasAttrString(file, (char *) "write")) {
+        ret = PyObject_CallMethod(file, (char *) "write", (char *) "(O)",
+	                        string);
+    }
+    Py_DECREF(string);
+    if (ret == NULL) {
+	printf("xmlPythonFileWrite: result is NULL\n");
+	return(-1);
+    } else if (PyLong_Check(ret)) {
+	written = (int) PyLong_AsLong(ret);
+	Py_DECREF(ret);
+    } else if (ret == Py_None) {
+	written = len;
+	Py_DECREF(ret);
+    } else {
+	printf("xmlPythonFileWrite: result is not an Int nor None\n");
+	Py_DECREF(ret);
+    }
+    return(written);
+}
+
+/**
+ * xmlPythonFileClose:
+ * @context:  the I/O context
+ *
+ * Close an I/O channel
+ */
+static int
+xmlPythonFileClose (void * context) {
+    PyObject *file, *ret = NULL;
+
+#ifdef DEBUG_FILES
+    printf("xmlPythonFileClose\n");
+#endif
+    file = (PyObject *) context;
+    if (file == NULL) return(-1);
+    if (PyObject_HasAttrString(file, (char *) "io_close")) {
+        ret = PyObject_CallMethod(file, (char *) "io_close", (char *) "()");
+    } else if (PyObject_HasAttrString(file, (char *) "flush")) {
+        ret = PyObject_CallMethod(file, (char *) "flush", (char *) "()");
+    }
+    if (ret != NULL) {
+	Py_DECREF(ret);
+    }
+    return(0);
+}
+
+#ifdef LIBXML_OUTPUT_ENABLED
+/**
+ * xmlOutputBufferCreatePythonFile:
+ * @file:  a PyFile_Type
+ * @encoder:  the encoding converter or NULL
+ *
+ * Create a buffered output for the progressive saving to a PyFile_Type
+ * buffered C I/O
+ *
+ * Returns the new parser output or NULL
+ */
+static xmlOutputBufferPtr
+xmlOutputBufferCreatePythonFile(PyObject *file, 
+	                        xmlCharEncodingHandlerPtr encoder) {
+    xmlOutputBufferPtr ret;
+
+    if (file == NULL) return(NULL);
+
+    ret = xmlAllocOutputBuffer(encoder);
+    if (ret != NULL) {
+        ret->context = file;
+	/* Py_INCREF(file); */
+	ret->writecallback = xmlPythonFileWrite;
+	ret->closecallback = xmlPythonFileClose;
+    }
+
+    return(ret);
+}
+
+PyObject *
+libxml_xmlCreateOutputBuffer(ATTRIBUTE_UNUSED PyObject *self, PyObject *args) {
+    PyObject *py_retval;
+    PyObject *file;
+    xmlChar  *encoding;
+    xmlCharEncodingHandlerPtr handler = NULL;
+    xmlOutputBufferPtr buffer;
+
+
+    if (!PyArg_ParseTuple(args, (char *)"Oz:xmlOutputBufferCreate",
+		&file, &encoding))
+	return(NULL);
+    if ((encoding != NULL) && (encoding[0] != 0)) {
+	handler = xmlFindCharEncodingHandler((const char *) encoding);
+    }
+    buffer = xmlOutputBufferCreatePythonFile(file, handler);
+    if (buffer == NULL)
+	printf("libxml_xmlCreateOutputBuffer: buffer == NULL\n");
+    py_retval = libxml_xmlOutputBufferPtrWrap(buffer);
+    return(py_retval);
+}
+
+/**
+ * libxml_outputBufferGetPythonFile:
+ * @buffer:  the I/O buffer
+ *
+ * read the Python I/O from the CObject
+ *
+ * Returns the new parser output or NULL
+ */
+static PyObject *
+libxml_outputBufferGetPythonFile(ATTRIBUTE_UNUSED PyObject *self,
+                                    PyObject *args) {
+    PyObject *buffer;
+    PyObject *file;
+    xmlOutputBufferPtr obj;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:outputBufferGetPythonFile",
+			  &buffer))
+	return(NULL);
+
+    obj = PyoutputBuffer_Get(buffer);
+    if (obj == NULL) {
+	fprintf(stderr,
+	        "outputBufferGetPythonFile: obj == NULL\n");
+	Py_INCREF(Py_None);
+	return(Py_None);
+    }
+    if (obj->closecallback != xmlPythonFileClose) {
+	fprintf(stderr,
+	        "outputBufferGetPythonFile: not a python file wrapper\n");
+	Py_INCREF(Py_None);
+	return(Py_None);
+    }
+    file = (PyObject *) obj->context;
+    if (file == NULL) {
+	Py_INCREF(Py_None);
+	return(Py_None);
+    }
+    Py_INCREF(file);
+    return(file);
+}
+
+static PyObject *
+libxml_xmlOutputBufferClose(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+    PyObject *py_retval;
+    int c_retval;
+    xmlOutputBufferPtr out;
+    PyObject *pyobj_out;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:xmlOutputBufferClose", &pyobj_out))
+        return(NULL);
+    out = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_out);
+    /* Buffer may already have been destroyed elsewhere. This is harmless. */
+    if (out == NULL) {
+	Py_INCREF(Py_None);
+	return(Py_None);
+    }
+
+    c_retval = xmlOutputBufferClose(out);
+    py_retval = libxml_intWrap((int) c_retval);
+    return(py_retval);
+}
+
+static PyObject *
+libxml_xmlOutputBufferFlush(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+    PyObject *py_retval;
+    int c_retval;
+    xmlOutputBufferPtr out;
+    PyObject *pyobj_out;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:xmlOutputBufferFlush", &pyobj_out))
+        return(NULL);
+    out = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_out);
+
+    c_retval = xmlOutputBufferFlush(out);
+    py_retval = libxml_intWrap((int) c_retval);
+    return(py_retval);
+}
+
+static PyObject *
+libxml_xmlSaveFileTo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+    PyObject *py_retval;
+    int c_retval;
+    xmlOutputBufferPtr buf;
+    PyObject *pyobj_buf;
+    xmlDocPtr cur;
+    PyObject *pyobj_cur;
+    char * encoding;
+
+    if (!PyArg_ParseTuple(args, (char *)"OOz:xmlSaveFileTo", &pyobj_buf, &pyobj_cur, &encoding))
+        return(NULL);
+    buf = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_buf);
+    cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+    c_retval = xmlSaveFileTo(buf, cur, encoding);
+	/* xmlSaveTo() freed the memory pointed to by buf, so record that in the
+	 * Python object. */
+    ((PyoutputBuffer_Object *)(pyobj_buf))->obj = NULL;
+    py_retval = libxml_intWrap((int) c_retval);
+    return(py_retval);
+}
+
+static PyObject *
+libxml_xmlSaveFormatFileTo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+    PyObject *py_retval;
+    int c_retval;
+    xmlOutputBufferPtr buf;
+    PyObject *pyobj_buf;
+    xmlDocPtr cur;
+    PyObject *pyobj_cur;
+    char * encoding;
+    int format;
+
+    if (!PyArg_ParseTuple(args, (char *)"OOzi:xmlSaveFormatFileTo", &pyobj_buf, &pyobj_cur, &encoding, &format))
+        return(NULL);
+    buf = (xmlOutputBufferPtr) PyoutputBuffer_Get(pyobj_buf);
+    cur = (xmlDocPtr) PyxmlNode_Get(pyobj_cur);
+
+    c_retval = xmlSaveFormatFileTo(buf, cur, encoding, format);
+	/* xmlSaveFormatFileTo() freed the memory pointed to by buf, so record that
+	 * in the Python object */
+	((PyoutputBuffer_Object *)(pyobj_buf))->obj = NULL;
+    py_retval = libxml_intWrap((int) c_retval);
+    return(py_retval);
+}
+#endif /* LIBXML_OUTPUT_ENABLED */
+
+
+/**
+ * xmlParserInputBufferCreatePythonFile:
+ * @file:  a PyFile_Type
+ * @encoder:  the encoding converter or NULL
+ *
+ * Create a buffered output for the progressive saving to a PyFile_Type
+ * buffered C I/O
+ *
+ * Returns the new parser output or NULL
+ */
+static xmlParserInputBufferPtr
+xmlParserInputBufferCreatePythonFile(PyObject *file, 
+	                        xmlCharEncoding encoding) {
+    xmlParserInputBufferPtr ret;
+
+    if (file == NULL) return(NULL);
+
+    ret = xmlAllocParserInputBuffer(encoding);
+    if (ret != NULL) {
+        ret->context = file;
+	/* Py_INCREF(file); */
+	ret->readcallback = xmlPythonFileRead;
+	ret->closecallback = xmlPythonFileClose;
+    }
+
+    return(ret);
+}
+
+PyObject *
+libxml_xmlCreateInputBuffer(ATTRIBUTE_UNUSED PyObject *self, PyObject *args) {
+    PyObject *py_retval;
+    PyObject *file;
+    xmlChar  *encoding;
+    xmlCharEncoding enc = XML_CHAR_ENCODING_NONE;
+    xmlParserInputBufferPtr buffer;
+
+
+    if (!PyArg_ParseTuple(args, (char *)"Oz:xmlParserInputBufferCreate",
+		&file, &encoding))
+	return(NULL);
+    if ((encoding != NULL) && (encoding[0] != 0)) {
+	enc = xmlParseCharEncoding((const char *) encoding);
+    }
+    buffer = xmlParserInputBufferCreatePythonFile(file, enc);
+    if (buffer == NULL)
+	printf("libxml_xmlParserInputBufferCreate: buffer == NULL\n");
+    py_retval = libxml_xmlParserInputBufferPtrWrap(buffer);
+    return(py_retval);
+}
+
+/************************************************************************
+ *									*
+ *		Providing the resolver at the Python level		*
+ *									*
+ ************************************************************************/
+
+static xmlExternalEntityLoader defaultExternalEntityLoader = NULL;
+static PyObject *pythonExternalEntityLoaderObjext;
+
+static xmlParserInputPtr
+pythonExternalEntityLoader(const char *URL, const char *ID,
+			   xmlParserCtxtPtr ctxt) {
+    xmlParserInputPtr result = NULL;
+    if (pythonExternalEntityLoaderObjext != NULL) {
+	PyObject *ret;
+	PyObject *ctxtobj;
+
+	ctxtobj = libxml_xmlParserCtxtPtrWrap(ctxt);
+#ifdef DEBUG_LOADER
+	printf("pythonExternalEntityLoader: ready to call\n");
+#endif
+
+	ret = PyObject_CallFunction(pythonExternalEntityLoaderObjext,
+		      (char *) "(ssO)", URL, ID, ctxtobj);
+	Py_XDECREF(ctxtobj);
+#ifdef DEBUG_LOADER
+	printf("pythonExternalEntityLoader: result ");
+	PyObject_Print(ret, stdout, 0);
+	printf("\n");
+#endif
+
+	if (ret != NULL) {
+	    if (PyObject_HasAttrString(ret, (char *) "read")) {
+		xmlParserInputBufferPtr buf;
+
+		buf = xmlAllocParserInputBuffer(XML_CHAR_ENCODING_NONE);
+		if (buf != NULL) {
+		    buf->context = ret;
+		    buf->readcallback = xmlPythonFileReadRaw;
+		    buf->closecallback = xmlPythonFileCloseRaw;
+		    result = xmlNewIOInputStream(ctxt, buf,
+			                         XML_CHAR_ENCODING_NONE);
+		}
+#if 0
+	    } else {
+		if (URL != NULL)
+		    printf("pythonExternalEntityLoader: can't read %s\n",
+		           URL);
+#endif
+	    }
+	    if (result == NULL) {
+		Py_DECREF(ret);
+	    } else if (URL != NULL) {
+		result->filename = (char *) xmlStrdup((const xmlChar *)URL);
+		result->directory = xmlParserGetDirectory((const char *) URL);
+	    }
+	}
+    }
+    if ((result == NULL) && (defaultExternalEntityLoader != NULL)) {
+	result = defaultExternalEntityLoader(URL, ID, ctxt);
+    }
+    return(result);
+}
+
+PyObject *
+libxml_xmlSetEntityLoader(ATTRIBUTE_UNUSED PyObject *self, PyObject *args) {
+    PyObject *py_retval;
+    PyObject *loader;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:libxml_xmlSetEntityLoader",
+		&loader))
+	return(NULL);
+
+    if (!PyCallable_Check(loader)) {
+	PyErr_SetString(PyExc_ValueError, "entity loader is not callable");
+	return(NULL);
+    }
+
+#ifdef DEBUG_LOADER
+    printf("libxml_xmlSetEntityLoader\n");
+#endif
+    if (defaultExternalEntityLoader == NULL) 
+	defaultExternalEntityLoader = xmlGetExternalEntityLoader();
+
+    Py_XDECREF(pythonExternalEntityLoaderObjext);
+    pythonExternalEntityLoaderObjext = loader;
+    Py_XINCREF(pythonExternalEntityLoaderObjext);
+    xmlSetExternalEntityLoader(pythonExternalEntityLoader);
+
+    py_retval = PyLong_FromLong(0);
+    return(py_retval);
+}
+
+/************************************************************************
+ *									*
+ *		Input callback registration				*
+ *									*
+ ************************************************************************/
+static PyObject *pythonInputOpenCallbackObject;
+static int pythonInputCallbackID = -1;
+
+static int
+pythonInputMatchCallback(ATTRIBUTE_UNUSED const char *URI)
+{
+    /* Always return success, real decision whether URI is supported will be
+     * made in open callback.  */
+    return 1;
+}
+
+static void *
+pythonInputOpenCallback(const char *URI)
+{
+    PyObject *ret;
+
+    ret = PyObject_CallFunction(pythonInputOpenCallbackObject,
+	    (char *)"s", URI);
+    if (ret == Py_None) {
+	Py_DECREF(Py_None);
+	return NULL;
+    }
+    return ret;
+}
+
+PyObject *
+libxml_xmlRegisterInputCallback(ATTRIBUTE_UNUSED PyObject *self,
+                                PyObject *args) {
+    PyObject *cb;
+
+    if (!PyArg_ParseTuple(args,
+		(const char *)"O:libxml_xmlRegisterInputCallback", &cb))
+	return(NULL);
+
+    if (!PyCallable_Check(cb)) {
+	PyErr_SetString(PyExc_ValueError, "input callback is not callable");
+	return(NULL);
+    }
+
+    /* Python module registers a single callback and manages the list of
+     * all callbacks internally. This is necessitated by xmlInputMatchCallback
+     * API, which does not allow for passing of data objects to discriminate
+     * different Python methods.  */
+    if (pythonInputCallbackID == -1) {
+	pythonInputCallbackID = xmlRegisterInputCallbacks(
+		pythonInputMatchCallback, pythonInputOpenCallback,
+		xmlPythonFileReadRaw, xmlPythonFileCloseRaw);
+	if (pythonInputCallbackID == -1)
+	    return PyErr_NoMemory();
+	pythonInputOpenCallbackObject = cb;
+	Py_INCREF(pythonInputOpenCallbackObject);
+    }
+
+    Py_INCREF(Py_None);
+    return(Py_None);
+}
+
+PyObject *
+libxml_xmlUnregisterInputCallback(ATTRIBUTE_UNUSED PyObject *self,
+                                ATTRIBUTE_UNUSED PyObject *args) {
+    int ret;
+
+    ret = xmlPopInputCallbacks();
+    if (pythonInputCallbackID != -1) {
+	/* Assert that the right input callback was popped. libxml's API does not
+	 * allow removal by ID, so all that could be done is an assert.  */
+	if (pythonInputCallbackID == ret) {
+	    pythonInputCallbackID = -1;
+	    Py_DECREF(pythonInputOpenCallbackObject);
+	    pythonInputOpenCallbackObject = NULL;
+	} else {
+	    PyErr_SetString(PyExc_AssertionError, "popped non-python input callback");
+	    return(NULL);
+	}
+    } else if (ret == -1) {
+	/* No more callbacks to pop */
+	PyErr_SetString(PyExc_IndexError, "no input callbacks to pop");
+	return(NULL);
+    }
+
+    Py_INCREF(Py_None);
+    return(Py_None);
+}
+
+/************************************************************************
+ *									*
+ *		Handling SAX/xmllib/sgmlop callback interfaces		*
+ *									*
+ ************************************************************************/
+
+static void
+pythonStartElement(void *user_data, const xmlChar * name,
+                   const xmlChar ** attrs)
+{
+    int i;
+    PyObject *handler;
+    PyObject *dict;
+    PyObject *attrname;
+    PyObject *attrvalue;
+    PyObject *result = NULL;
+    int type = 0;
+
+#ifdef DEBUG_SAX
+    printf("pythonStartElement(%s) called\n", name);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "startElement"))
+        type = 1;
+    else if (PyObject_HasAttrString(handler, (char *) "start"))
+        type = 2;
+    if (type != 0) {
+        /*
+         * the xmllib interface always generates a dictionary,
+         * possibly empty
+         */
+        if ((attrs == NULL) && (type == 1)) {
+            Py_XINCREF(Py_None);
+            dict = Py_None;
+        } else if (attrs == NULL) {
+            dict = PyDict_New();
+        } else {
+            dict = PyDict_New();
+            for (i = 0; attrs[i] != NULL; i++) {
+                attrname = PY_IMPORT_STRING((char *) attrs[i]);
+                i++;
+                if (attrs[i] != NULL) {
+                    attrvalue = PY_IMPORT_STRING((char *) attrs[i]);
+                } else {
+                    Py_XINCREF(Py_None);
+                    attrvalue = Py_None;
+                }
+                PyDict_SetItem(dict, attrname, attrvalue);
+		Py_DECREF(attrname);
+		Py_DECREF(attrvalue);
+            }
+        }
+
+        if (type == 1)
+            result = PyObject_CallMethod(handler, (char *) "startElement",
+                                         (char *) "sO", name, dict);
+        else if (type == 2)
+            result = PyObject_CallMethod(handler, (char *) "start",
+                                         (char *) "sO", name, dict);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(dict);
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonStartDocument(void *user_data)
+{
+    PyObject *handler;
+    PyObject *result;
+
+#ifdef DEBUG_SAX
+    printf("pythonStartDocument() called\n");
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "startDocument")) {
+        result =
+            PyObject_CallMethod(handler, (char *) "startDocument", NULL);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonEndDocument(void *user_data)
+{
+    PyObject *handler;
+    PyObject *result;
+
+#ifdef DEBUG_SAX
+    printf("pythonEndDocument() called\n");
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "endDocument")) {
+        result =
+            PyObject_CallMethod(handler, (char *) "endDocument", NULL);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+    /*
+     * The reference to the handler is released there
+     */
+    Py_XDECREF(handler);
+}
+
+static void
+pythonEndElement(void *user_data, const xmlChar * name)
+{
+    PyObject *handler;
+    PyObject *result;
+
+#ifdef DEBUG_SAX
+    printf("pythonEndElement(%s) called\n", name);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "endElement")) {
+        result = PyObject_CallMethod(handler, (char *) "endElement",
+                                     (char *) "s", name);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    } else if (PyObject_HasAttrString(handler, (char *) "end")) {
+        result = PyObject_CallMethod(handler, (char *) "end",
+                                     (char *) "s", name);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonReference(void *user_data, const xmlChar * name)
+{
+    PyObject *handler;
+    PyObject *result;
+
+#ifdef DEBUG_SAX
+    printf("pythonReference(%s) called\n", name);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "reference")) {
+        result = PyObject_CallMethod(handler, (char *) "reference",
+                                     (char *) "s", name);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonCharacters(void *user_data, const xmlChar * ch, int len)
+{
+    PyObject *handler;
+    PyObject *result = NULL;
+    int type = 0;
+
+#ifdef DEBUG_SAX
+    printf("pythonCharacters(%s, %d) called\n", ch, len);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "characters"))
+        type = 1;
+    else if (PyObject_HasAttrString(handler, (char *) "data"))
+        type = 2;
+    if (type != 0) {
+        if (type == 1)
+            result = PyObject_CallMethod(handler, (char *) "characters",
+                                         (char *) "s#", ch, (Py_ssize_t)len);
+        else if (type == 2)
+            result = PyObject_CallMethod(handler, (char *) "data",
+                                         (char *) "s#", ch, (Py_ssize_t)len);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonIgnorableWhitespace(void *user_data, const xmlChar * ch, int len)
+{
+    PyObject *handler;
+    PyObject *result = NULL;
+    int type = 0;
+
+#ifdef DEBUG_SAX
+    printf("pythonIgnorableWhitespace(%s, %d) called\n", ch, len);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "ignorableWhitespace"))
+        type = 1;
+    else if (PyObject_HasAttrString(handler, (char *) "data"))
+        type = 2;
+    if (type != 0) {
+        if (type == 1)
+            result =
+                PyObject_CallMethod(handler,
+                                    (char *) "ignorableWhitespace",
+                                    (char *) "s#", ch, (Py_ssize_t)len);
+        else if (type == 2)
+            result =
+                PyObject_CallMethod(handler, (char *) "data",
+                                    (char *) "s#", ch, (Py_ssize_t)len);
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonProcessingInstruction(void *user_data,
+                            const xmlChar * target, const xmlChar * data)
+{
+    PyObject *handler;
+    PyObject *result;
+
+#ifdef DEBUG_SAX
+    printf("pythonProcessingInstruction(%s, %s) called\n", target, data);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "processingInstruction")) {
+        result = PyObject_CallMethod(handler, (char *)
+                                     "processingInstruction",
+                                     (char *) "ss", target, data);
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonComment(void *user_data, const xmlChar * value)
+{
+    PyObject *handler;
+    PyObject *result;
+
+#ifdef DEBUG_SAX
+    printf("pythonComment(%s) called\n", value);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "comment")) {
+        result =
+            PyObject_CallMethod(handler, (char *) "comment", (char *) "s",
+                                value);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonWarning(void *user_data, const char *msg, ...)
+{
+    PyObject *handler;
+    PyObject *result;
+    va_list args;
+    char buf[1024];
+
+#ifdef DEBUG_SAX
+    printf("pythonWarning(%s) called\n", msg);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "warning")) {
+        va_start(args, msg);
+        vsnprintf(buf, 1023, msg, args);
+        va_end(args);
+        buf[1023] = 0;
+        result =
+            PyObject_CallMethod(handler, (char *) "warning", (char *) "s",
+                                buf);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonError(void *user_data, const char *msg, ...)
+{
+    PyObject *handler;
+    PyObject *result;
+    va_list args;
+    char buf[1024];
+
+#ifdef DEBUG_SAX
+    printf("pythonError(%s) called\n", msg);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "error")) {
+        va_start(args, msg);
+        vsnprintf(buf, 1023, msg, args);
+        va_end(args);
+        buf[1023] = 0;
+        result =
+            PyObject_CallMethod(handler, (char *) "error", (char *) "s",
+                                buf);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonFatalError(void *user_data, const char *msg, ...)
+{
+    PyObject *handler;
+    PyObject *result;
+    va_list args;
+    char buf[1024];
+
+#ifdef DEBUG_SAX
+    printf("pythonFatalError(%s) called\n", msg);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "fatalError")) {
+        va_start(args, msg);
+        vsnprintf(buf, 1023, msg, args);
+        va_end(args);
+        buf[1023] = 0;
+        result =
+            PyObject_CallMethod(handler, (char *) "fatalError",
+                                (char *) "s", buf);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonCdataBlock(void *user_data, const xmlChar * ch, int len)
+{
+    PyObject *handler;
+    PyObject *result = NULL;
+    int type = 0;
+
+#ifdef DEBUG_SAX
+    printf("pythonCdataBlock(%s, %d) called\n", ch, len);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "cdataBlock"))
+        type = 1;
+    else if (PyObject_HasAttrString(handler, (char *) "cdata"))
+        type = 2;
+    if (type != 0) {
+        if (type == 1)
+            result =
+                PyObject_CallMethod(handler, (char *) "cdataBlock",
+                                    (char *) "s#", ch, (Py_ssize_t)len);
+        else if (type == 2)
+            result =
+                PyObject_CallMethod(handler, (char *) "cdata",
+                                    (char *) "s#", ch, (Py_ssize_t)len);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonExternalSubset(void *user_data,
+                     const xmlChar * name,
+                     const xmlChar * externalID, const xmlChar * systemID)
+{
+    PyObject *handler;
+    PyObject *result;
+
+#ifdef DEBUG_SAX
+    printf("pythonExternalSubset(%s, %s, %s) called\n",
+           name, externalID, systemID);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "externalSubset")) {
+        result =
+            PyObject_CallMethod(handler, (char *) "externalSubset",
+                                (char *) "sss", name, externalID,
+                                systemID);
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonEntityDecl(void *user_data,
+                 const xmlChar * name,
+                 int type,
+                 const xmlChar * publicId,
+                 const xmlChar * systemId, xmlChar * content)
+{
+    PyObject *handler;
+    PyObject *result;
+
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "entityDecl")) {
+        result = PyObject_CallMethod(handler, (char *) "entityDecl",
+                                     (char *) "sisss", name, type,
+                                     publicId, systemId, content);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+
+
+static void
+
+pythonNotationDecl(void *user_data,
+                   const xmlChar * name,
+                   const xmlChar * publicId, const xmlChar * systemId)
+{
+    PyObject *handler;
+    PyObject *result;
+
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "notationDecl")) {
+        result = PyObject_CallMethod(handler, (char *) "notationDecl",
+                                     (char *) "sss", name, publicId,
+                                     systemId);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonAttributeDecl(void *user_data,
+                    const xmlChar * elem,
+                    const xmlChar * name,
+                    int type,
+                    int def,
+                    const xmlChar * defaultValue, xmlEnumerationPtr tree)
+{
+    PyObject *handler;
+    PyObject *nameList;
+    PyObject *newName;
+    xmlEnumerationPtr node;
+    PyObject *result;
+    int count;
+
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "attributeDecl")) {
+        count = 0;
+        for (node = tree; node != NULL; node = node->next) {
+            count++;
+        }
+        nameList = PyList_New(count);
+        count = 0;
+        for (node = tree; node != NULL; node = node->next) {
+            newName = PY_IMPORT_STRING((char *) node->name);
+            PyList_SetItem(nameList, count, newName);
+	    Py_DECREF(newName);
+            count++;
+        }
+        result = PyObject_CallMethod(handler, (char *) "attributeDecl",
+                                     (char *) "ssiisO", elem, name, type,
+                                     def, defaultValue, nameList);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(nameList);
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonElementDecl(void *user_data,
+                  const xmlChar * name,
+                  int type, ATTRIBUTE_UNUSED xmlElementContentPtr content)
+{
+    PyObject *handler;
+    PyObject *obj;
+    PyObject *result;
+
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "elementDecl")) {
+        /* TODO: wrap in an elementContent object */
+        printf
+            ("pythonElementDecl: xmlElementContentPtr wrapper missing !\n");
+        obj = Py_None;
+        /* Py_XINCREF(Py_None); isn't the reference just borrowed ??? */
+        result = PyObject_CallMethod(handler, (char *) "elementDecl",
+                                     (char *) "siO", name, type, obj);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonUnparsedEntityDecl(void *user_data,
+                         const xmlChar * name,
+                         const xmlChar * publicId,
+                         const xmlChar * systemId,
+                         const xmlChar * notationName)
+{
+    PyObject *handler;
+    PyObject *result;
+
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "unparsedEntityDecl")) {
+        result =
+            PyObject_CallMethod(handler, (char *) "unparsedEntityDecl",
+                                (char *) "ssss", name, publicId, systemId,
+                                notationName);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static void
+pythonInternalSubset(void *user_data, const xmlChar * name,
+                     const xmlChar * ExternalID, const xmlChar * SystemID)
+{
+    PyObject *handler;
+    PyObject *result;
+
+#ifdef DEBUG_SAX
+    printf("pythonInternalSubset(%s, %s, %s) called\n",
+           name, ExternalID, SystemID);
+#endif
+    handler = (PyObject *) user_data;
+    if (PyObject_HasAttrString(handler, (char *) "internalSubset")) {
+        result = PyObject_CallMethod(handler, (char *) "internalSubset",
+                                     (char *) "sss", name, ExternalID,
+                                     SystemID);
+        if (PyErr_Occurred())
+            PyErr_Print();
+        Py_XDECREF(result);
+    }
+}
+
+static xmlSAXHandler pythonSaxHandler = {
+    pythonInternalSubset,
+    NULL,                       /* TODO pythonIsStandalone, */
+    NULL,                       /* TODO pythonHasInternalSubset, */
+    NULL,                       /* TODO pythonHasExternalSubset, */
+    NULL,                       /* TODO pythonResolveEntity, */
+    NULL,                       /* TODO pythonGetEntity, */
+    pythonEntityDecl,
+    pythonNotationDecl,
+    pythonAttributeDecl,
+    pythonElementDecl,
+    pythonUnparsedEntityDecl,
+    NULL,                       /* OBSOLETED pythonSetDocumentLocator, */
+    pythonStartDocument,
+    pythonEndDocument,
+    pythonStartElement,
+    pythonEndElement,
+    pythonReference,
+    pythonCharacters,
+    pythonIgnorableWhitespace,
+    pythonProcessingInstruction,
+    pythonComment,
+    pythonWarning,
+    pythonError,
+    pythonFatalError,
+    NULL,                       /* TODO pythonGetParameterEntity, */
+    pythonCdataBlock,
+    pythonExternalSubset,
+    1,
+    NULL,			/* TODO migrate to SAX2 */
+    NULL,
+    NULL,
+    NULL
+};
+
+/************************************************************************
+ *									*
+ *		Handling of specific parser context			*
+ *									*
+ ************************************************************************/
+
+PyObject *
+libxml_xmlCreatePushParser(ATTRIBUTE_UNUSED PyObject * self,
+                           PyObject * args)
+{
+    const char *chunk;
+    int size;
+    const char *URI;
+    PyObject *pyobj_SAX = NULL;
+    xmlSAXHandlerPtr SAX = NULL;
+    xmlParserCtxtPtr ret;
+    PyObject *pyret;
+
+    if (!PyArg_ParseTuple
+        (args, (char *) "Oziz:xmlCreatePushParser", &pyobj_SAX, &chunk,
+         &size, &URI))
+        return (NULL);
+
+#ifdef DEBUG
+    printf("libxml_xmlCreatePushParser(%p, %s, %d, %s) called\n",
+           pyobj_SAX, chunk, size, URI);
+#endif
+    if (pyobj_SAX != Py_None) {
+        SAX = &pythonSaxHandler;
+        Py_INCREF(pyobj_SAX);
+        /* The reference is released in pythonEndDocument() */
+    }
+    ret = xmlCreatePushParserCtxt(SAX, pyobj_SAX, chunk, size, URI);
+    pyret = libxml_xmlParserCtxtPtrWrap(ret);
+    return (pyret);
+}
+
+PyObject *
+libxml_htmlCreatePushParser(ATTRIBUTE_UNUSED PyObject * self,
+                            PyObject * args)
+{
+#ifdef LIBXML_HTML_ENABLED
+    const char *chunk;
+    int size;
+    const char *URI;
+    PyObject *pyobj_SAX = NULL;
+    xmlSAXHandlerPtr SAX = NULL;
+    xmlParserCtxtPtr ret;
+    PyObject *pyret;
+
+    if (!PyArg_ParseTuple
+        (args, (char *) "Oziz:htmlCreatePushParser", &pyobj_SAX, &chunk,
+         &size, &URI))
+        return (NULL);
+
+#ifdef DEBUG
+    printf("libxml_htmlCreatePushParser(%p, %s, %d, %s) called\n",
+           pyobj_SAX, chunk, size, URI);
+#endif
+    if (pyobj_SAX != Py_None) {
+        SAX = &pythonSaxHandler;
+        Py_INCREF(pyobj_SAX);
+        /* The reference is released in pythonEndDocument() */
+    }
+    ret = htmlCreatePushParserCtxt(SAX, pyobj_SAX, chunk, size, URI,
+                                   XML_CHAR_ENCODING_NONE);
+    pyret = libxml_xmlParserCtxtPtrWrap(ret);
+    return (pyret);
+#else
+    Py_INCREF(Py_None);
+    return (Py_None);
+#endif /* LIBXML_HTML_ENABLED */
+}
+
+PyObject *
+libxml_xmlSAXParseFile(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+#ifdef LIBXML_SAX1_ENABLED
+    int recover;
+    const char *URI;
+    PyObject *pyobj_SAX = NULL;
+    xmlSAXHandlerPtr SAX = NULL;
+    xmlParserCtxtPtr ctxt;
+
+    if (!PyArg_ParseTuple(args, (char *) "Osi:xmlSAXParseFile", &pyobj_SAX,
+                          &URI, &recover))
+        return (NULL);
+
+#ifdef DEBUG
+    printf("libxml_xmlSAXParseFile(%p, %s, %d) called\n",
+           pyobj_SAX, URI, recover);
+#endif
+    if (pyobj_SAX == Py_None) {
+        Py_INCREF(Py_None);
+        return (Py_None);
+    }
+    SAX = &pythonSaxHandler;
+    Py_INCREF(pyobj_SAX);
+    /* The reference is released in pythonEndDocument() */
+    ctxt = xmlNewSAXParserCtxt(SAX, pyobj_SAX);
+    xmlCtxtReadFile(ctxt, URI, NULL, 0);
+    xmlFreeParserCtxt(ctxt);
+#endif /* LIBXML_SAX1_ENABLED */
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+PyObject *
+libxml_htmlSAXParseFile(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+#ifdef LIBXML_HTML_ENABLED
+    const char *URI;
+    const char *encoding;
+    PyObject *pyobj_SAX = NULL;
+    xmlSAXHandlerPtr SAX = NULL;
+    htmlParserCtxtPtr ctxt;
+
+    if (!PyArg_ParseTuple
+        (args, (char *) "Osz:htmlSAXParseFile", &pyobj_SAX, &URI,
+         &encoding))
+        return (NULL);
+
+#ifdef DEBUG
+    printf("libxml_htmlSAXParseFile(%p, %s, %s) called\n",
+           pyobj_SAX, URI, encoding);
+#endif
+    if (pyobj_SAX == Py_None) {
+        Py_INCREF(Py_None);
+        return (Py_None);
+    }
+    SAX = &pythonSaxHandler;
+    Py_INCREF(pyobj_SAX);
+    /* The reference is released in pythonEndDocument() */
+    ctxt = htmlNewSAXParserCtxt(SAX, pyobj_SAX);
+    htmlCtxtReadFile(ctxt, URI, encoding, 0);
+    htmlFreeParserCtxt(ctxt);
+    Py_INCREF(Py_None);
+    return (Py_None);
+#else
+    Py_INCREF(Py_None);
+    return (Py_None);
+#endif /* LIBXML_HTML_ENABLED */
+}
+
+/************************************************************************
+ *									*
+ *			Error message callback				*
+ *									*
+ ************************************************************************/
+
+static PyObject *libxml_xmlPythonErrorFuncHandler = NULL;
+static PyObject *libxml_xmlPythonErrorFuncCtxt = NULL;
+
+/* helper to build a xmlMalloc'ed string from a format and va_list */
+/* 
+ * disabled the loop, the repeated call to vsnprintf without reset of ap
+ * in case the initial buffer was too small segfaulted on x86_64
+ * we now directly vsnprintf on a large buffer.
+ */
+static char *
+libxml_buildMessage(const char *msg, va_list ap)
+{
+    int chars;
+    char *str;
+
+    str = (char *) xmlMalloc(1000);
+    if (str == NULL)
+        return NULL;
+
+    chars = vsnprintf(str, 999, msg, ap);
+    if (chars >= 998)
+        str[999] = 0;
+
+    return str;
+}
+
+static void
+libxml_xmlErrorFuncHandler(ATTRIBUTE_UNUSED void *ctx, const char *msg,
+                           ...)
+{
+    va_list ap;
+    PyObject *list;
+    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);
+#endif
+
+
+    if (libxml_xmlPythonErrorFuncHandler == NULL) {
+        va_start(ap, msg);
+        vfprintf(stderr, msg, ap);
+        va_end(ap);
+    } else {
+        va_start(ap, msg);
+        if (vsnprintf(str, 999, msg, ap) >= 998)
+	    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(ptr);
+        PyTuple_SetItem(list, 1, message);
+        result = PyObject_CallObject(libxml_xmlPythonErrorFuncHandler, list);
+        /* Forget any errors caused in the error handler. */
+        PyErr_Clear();
+        Py_XDECREF(list);
+        Py_XDECREF(result);
+    }
+}
+
+static void
+libxml_xmlErrorInitialize(void)
+{
+#ifdef DEBUG_ERROR
+    printf("libxml_xmlErrorInitialize() called\n");
+#endif
+    xmlSetGenericErrorFunc(NULL, libxml_xmlErrorFuncHandler);
+    xmlThrDefSetGenericErrorFunc(NULL, libxml_xmlErrorFuncHandler);
+}
+
+static PyObject *
+libxml_xmlRegisterErrorHandler(ATTRIBUTE_UNUSED PyObject * self,
+                               PyObject * args)
+{
+    PyObject *py_retval;
+    PyObject *pyobj_f;
+    PyObject *pyobj_ctx;
+
+    if (!PyArg_ParseTuple
+        (args, (char *) "OO:xmlRegisterErrorHandler", &pyobj_f,
+         &pyobj_ctx))
+        return (NULL);
+
+#ifdef DEBUG_ERROR
+    printf("libxml_xmlRegisterErrorHandler(%p, %p) called\n", pyobj_ctx,
+           pyobj_f);
+#endif
+
+    if (libxml_xmlPythonErrorFuncHandler != NULL) {
+        Py_XDECREF(libxml_xmlPythonErrorFuncHandler);
+    }
+    if (libxml_xmlPythonErrorFuncCtxt != NULL) {
+        Py_XDECREF(libxml_xmlPythonErrorFuncCtxt);
+    }
+
+    Py_XINCREF(pyobj_ctx);
+    Py_XINCREF(pyobj_f);
+
+    /* TODO: check f is a function ! */
+    libxml_xmlPythonErrorFuncHandler = pyobj_f;
+    libxml_xmlPythonErrorFuncCtxt = pyobj_ctx;
+
+    py_retval = libxml_intWrap(1);
+    return (py_retval);
+}
+
+
+/************************************************************************
+ *									*
+ *                      Per parserCtxt error handler                    *
+ *									*
+ ************************************************************************/
+
+typedef struct 
+{
+    PyObject *f;
+    PyObject *arg;
+} xmlParserCtxtPyCtxt;
+typedef xmlParserCtxtPyCtxt *xmlParserCtxtPyCtxtPtr;
+
+static void
+libxml_xmlParserCtxtGenericErrorFuncHandler(void *ctx, int severity, char *str) 
+{
+    PyObject *list;
+    PyObject *result;
+    xmlParserCtxtPtr ctxt;
+    xmlParserCtxtPyCtxtPtr pyCtxt;
+    
+#ifdef DEBUG_ERROR
+    printf("libxml_xmlParserCtxtGenericErrorFuncHandler(%p, %s, ...) called\n", ctx, str);
+#endif
+
+    ctxt = (xmlParserCtxtPtr)ctx;
+    pyCtxt = (xmlParserCtxtPyCtxtPtr)ctxt->_private;
+
+    list = PyTuple_New(4);
+    PyTuple_SetItem(list, 0, pyCtxt->arg);
+    Py_XINCREF(pyCtxt->arg);
+    PyTuple_SetItem(list, 1, libxml_charPtrWrap(str));
+    PyTuple_SetItem(list, 2, libxml_intWrap(severity));
+    PyTuple_SetItem(list, 3, Py_None);
+    Py_INCREF(Py_None);
+    result = PyObject_CallObject(pyCtxt->f, list);
+    if (result == NULL) 
+    {
+	/* TODO: manage for the exception to be propagated... */
+	PyErr_Print();
+    }
+    Py_XDECREF(list);
+    Py_XDECREF(result);
+}
+
+static void 
+libxml_xmlParserCtxtErrorFuncHandler(void *ctx, const char *msg, ...) 
+{
+    va_list ap;
+
+    va_start(ap, msg);
+    libxml_xmlParserCtxtGenericErrorFuncHandler(ctx,XML_PARSER_SEVERITY_ERROR,libxml_buildMessage(msg,ap));
+    va_end(ap);
+}
+
+static void 
+libxml_xmlParserCtxtWarningFuncHandler(void *ctx, const char *msg, ...) 
+{
+    va_list ap;
+
+    va_start(ap, msg);
+    libxml_xmlParserCtxtGenericErrorFuncHandler(ctx,XML_PARSER_SEVERITY_WARNING,libxml_buildMessage(msg,ap));
+    va_end(ap);
+}
+
+static void 
+libxml_xmlParserCtxtValidityErrorFuncHandler(void *ctx, const char *msg, ...) 
+{
+    va_list ap;
+
+    va_start(ap, msg);
+    libxml_xmlParserCtxtGenericErrorFuncHandler(ctx,XML_PARSER_SEVERITY_VALIDITY_ERROR,libxml_buildMessage(msg,ap));
+    va_end(ap);
+}
+
+static void 
+libxml_xmlParserCtxtValidityWarningFuncHandler(void *ctx, const char *msg, ...) 
+{
+    va_list ap;
+
+    va_start(ap, msg);
+    libxml_xmlParserCtxtGenericErrorFuncHandler(ctx,XML_PARSER_SEVERITY_VALIDITY_WARNING,libxml_buildMessage(msg,ap));
+    va_end(ap);
+}
+
+static PyObject *
+libxml_xmlParserCtxtSetErrorHandler(ATTRIBUTE_UNUSED PyObject *self, PyObject *args) 
+{
+    PyObject *py_retval;
+    xmlParserCtxtPtr ctxt;
+    xmlParserCtxtPyCtxtPtr pyCtxt;
+    PyObject *pyobj_ctxt;
+    PyObject *pyobj_f;
+    PyObject *pyobj_arg;
+
+    if (!PyArg_ParseTuple(args, (char *)"OOO:xmlParserCtxtSetErrorHandler",
+		          &pyobj_ctxt, &pyobj_f, &pyobj_arg))
+        return(NULL);
+    ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+    if (ctxt->_private == NULL) {
+	pyCtxt = xmlMalloc(sizeof(xmlParserCtxtPyCtxt));
+	if (pyCtxt == NULL) {
+	    py_retval = libxml_intWrap(-1);
+	    return(py_retval);
+	}
+	memset(pyCtxt,0,sizeof(xmlParserCtxtPyCtxt));
+	ctxt->_private = pyCtxt;
+    }
+    else {
+	pyCtxt = (xmlParserCtxtPyCtxtPtr)ctxt->_private;
+    }
+    /* TODO: check f is a function ! */
+    Py_XDECREF(pyCtxt->f);
+    Py_XINCREF(pyobj_f);
+    pyCtxt->f = pyobj_f;
+    Py_XDECREF(pyCtxt->arg);
+    Py_XINCREF(pyobj_arg);
+    pyCtxt->arg = pyobj_arg;
+
+    if (pyobj_f != Py_None) {
+	ctxt->sax->error = libxml_xmlParserCtxtErrorFuncHandler;
+	ctxt->sax->warning = libxml_xmlParserCtxtWarningFuncHandler;
+	ctxt->vctxt.error = libxml_xmlParserCtxtValidityErrorFuncHandler;
+	ctxt->vctxt.warning = libxml_xmlParserCtxtValidityWarningFuncHandler;
+    }
+    else {
+	ctxt->sax->error = xmlParserError;
+	ctxt->vctxt.error = xmlParserValidityError;
+	ctxt->sax->warning = xmlParserWarning;
+	ctxt->vctxt.warning = xmlParserValidityWarning;
+    }
+
+    py_retval = libxml_intWrap(1);
+    return(py_retval);
+}
+
+static PyObject *
+libxml_xmlParserCtxtGetErrorHandler(ATTRIBUTE_UNUSED PyObject *self, PyObject *args) 
+{
+    PyObject *py_retval;
+    xmlParserCtxtPtr ctxt;
+    xmlParserCtxtPyCtxtPtr pyCtxt;
+    PyObject *pyobj_ctxt;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:xmlParserCtxtGetErrorHandler",
+		          &pyobj_ctxt))
+        return(NULL);
+    ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+    py_retval = PyTuple_New(2);
+    if (ctxt->_private != NULL) {
+	pyCtxt = (xmlParserCtxtPyCtxtPtr)ctxt->_private;
+
+	PyTuple_SetItem(py_retval, 0, pyCtxt->f);
+	Py_XINCREF(pyCtxt->f);
+	PyTuple_SetItem(py_retval, 1, pyCtxt->arg);
+	Py_XINCREF(pyCtxt->arg);
+    }
+    else {
+	/* no python error handler registered */
+	PyTuple_SetItem(py_retval, 0, Py_None);
+	Py_XINCREF(Py_None);
+	PyTuple_SetItem(py_retval, 1, Py_None);
+	Py_XINCREF(Py_None);
+    }
+    return(py_retval);
+}
+
+static PyObject *
+libxml_xmlFreeParserCtxt(ATTRIBUTE_UNUSED PyObject *self, PyObject *args) {
+    xmlParserCtxtPtr ctxt;
+    PyObject *pyobj_ctxt;
+    xmlParserCtxtPyCtxtPtr pyCtxt;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeParserCtxt", &pyobj_ctxt))
+        return(NULL);
+    ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+    if (ctxt != NULL) {
+	pyCtxt = (xmlParserCtxtPyCtxtPtr)((xmlParserCtxtPtr)ctxt)->_private;
+	if (pyCtxt) {
+	    Py_XDECREF(pyCtxt->f);
+	    Py_XDECREF(pyCtxt->arg);
+	    xmlFree(pyCtxt);
+	}
+	xmlFreeParserCtxt(ctxt);
+    }
+
+    Py_INCREF(Py_None);
+    return(Py_None);
+}
+
+#ifdef LIBXML_VALID_ENABLED
+/***
+ * xmlValidCtxt stuff
+ */
+
+typedef struct 
+{
+    PyObject *warn;
+    PyObject *error;
+    PyObject *arg;
+} xmlValidCtxtPyCtxt;
+typedef xmlValidCtxtPyCtxt *xmlValidCtxtPyCtxtPtr;
+
+static void
+libxml_xmlValidCtxtGenericErrorFuncHandler(void *ctx, ATTRIBUTE_UNUSED int severity, char *str)
+{
+    PyObject *list;
+    PyObject *result;
+    xmlValidCtxtPyCtxtPtr pyCtxt;
+    
+#ifdef DEBUG_ERROR
+    printf("libxml_xmlValidCtxtGenericErrorFuncHandler(%p, %d, %s, ...) called\n", ctx, severity, str);
+#endif
+
+    pyCtxt = (xmlValidCtxtPyCtxtPtr)ctx;
+    
+    list = PyTuple_New(2);
+    PyTuple_SetItem(list, 0, libxml_charPtrWrap(str));
+    PyTuple_SetItem(list, 1, pyCtxt->arg);
+    Py_XINCREF(pyCtxt->arg);
+    result = PyObject_CallObject(pyCtxt->error, list);
+    if (result == NULL) 
+    {
+	/* TODO: manage for the exception to be propagated... */
+	PyErr_Print();
+    }
+    Py_XDECREF(list);
+    Py_XDECREF(result);
+}
+
+static void
+libxml_xmlValidCtxtGenericWarningFuncHandler(void *ctx, ATTRIBUTE_UNUSED int severity, char *str)
+{
+    PyObject *list;
+    PyObject *result;
+    xmlValidCtxtPyCtxtPtr pyCtxt;
+    
+#ifdef DEBUG_ERROR
+    printf("libxml_xmlValidCtxtGenericWarningFuncHandler(%p, %d, %s, ...) called\n", ctx, severity, str);
+#endif
+
+    pyCtxt = (xmlValidCtxtPyCtxtPtr)ctx;
+
+    list = PyTuple_New(2);
+    PyTuple_SetItem(list, 0, libxml_charPtrWrap(str));
+    PyTuple_SetItem(list, 1, pyCtxt->arg);
+    Py_XINCREF(pyCtxt->arg);
+    result = PyObject_CallObject(pyCtxt->warn, list);
+    if (result == NULL) 
+    {
+	/* TODO: manage for the exception to be propagated... */
+	PyErr_Print();
+    }
+    Py_XDECREF(list);
+    Py_XDECREF(result);
+}
+
+static void 
+libxml_xmlValidCtxtErrorFuncHandler(void *ctx, const char *msg, ...) 
+{
+    va_list ap;
+
+    va_start(ap, msg);
+    libxml_xmlValidCtxtGenericErrorFuncHandler(ctx,XML_PARSER_SEVERITY_VALIDITY_ERROR,libxml_buildMessage(msg,ap));
+    va_end(ap);
+}
+
+static void 
+libxml_xmlValidCtxtWarningFuncHandler(void *ctx, const char *msg, ...) 
+{
+    va_list ap;
+
+    va_start(ap, msg);
+    libxml_xmlValidCtxtGenericWarningFuncHandler(ctx,XML_PARSER_SEVERITY_VALIDITY_WARNING,libxml_buildMessage(msg,ap));
+    va_end(ap);
+}
+
+static PyObject *
+libxml_xmlSetValidErrors(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *py_retval;
+    PyObject *pyobj_error;
+    PyObject *pyobj_warn;
+    PyObject *pyobj_ctx;
+    PyObject *pyobj_arg = Py_None;
+    xmlValidCtxtPtr ctxt;
+    xmlValidCtxtPyCtxtPtr pyCtxt;
+
+    if (!PyArg_ParseTuple
+        (args, (char *) "OOO|O:xmlSetValidErrors", &pyobj_ctx, &pyobj_error, &pyobj_warn, &pyobj_arg))
+        return (NULL);
+
+#ifdef DEBUG_ERROR
+    printf("libxml_xmlSetValidErrors(%p, %p, %p) called\n", pyobj_ctx, pyobj_error, pyobj_warn);
+#endif
+
+    ctxt = PyValidCtxt_Get(pyobj_ctx);
+    pyCtxt = xmlMalloc(sizeof(xmlValidCtxtPyCtxt));
+    if (pyCtxt == NULL) {
+            py_retval = libxml_intWrap(-1);
+            return(py_retval);
+    }
+    memset(pyCtxt, 0, sizeof(xmlValidCtxtPyCtxt));
+
+    
+    /* TODO: check warn and error is a function ! */
+    Py_XDECREF(pyCtxt->error);
+    Py_XINCREF(pyobj_error);
+    pyCtxt->error = pyobj_error;
+    
+    Py_XDECREF(pyCtxt->warn);
+    Py_XINCREF(pyobj_warn);
+    pyCtxt->warn = pyobj_warn;
+    
+    Py_XDECREF(pyCtxt->arg);
+    Py_XINCREF(pyobj_arg);
+    pyCtxt->arg = pyobj_arg;
+
+    ctxt->error = libxml_xmlValidCtxtErrorFuncHandler;
+    ctxt->warning = libxml_xmlValidCtxtWarningFuncHandler;
+    ctxt->userData = pyCtxt;
+
+    py_retval = libxml_intWrap(1);
+    return (py_retval);
+}
+
+
+static PyObject *
+libxml_xmlFreeValidCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+    xmlValidCtxtPtr cur;
+    xmlValidCtxtPyCtxtPtr pyCtxt;
+    PyObject *pyobj_cur;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeValidCtxt", &pyobj_cur))
+        return(NULL);
+    cur = (xmlValidCtxtPtr) PyValidCtxt_Get(pyobj_cur);
+
+    pyCtxt = (xmlValidCtxtPyCtxtPtr)(cur->userData);
+    if (pyCtxt != NULL)
+    {
+            Py_XDECREF(pyCtxt->error);
+            Py_XDECREF(pyCtxt->warn);
+            Py_XDECREF(pyCtxt->arg);
+            xmlFree(pyCtxt);
+    }
+
+    xmlFreeValidCtxt(cur);
+    Py_INCREF(Py_None);
+    return(Py_None);
+}
+#endif /* LIBXML_VALID_ENABLED */
+
+#ifdef LIBXML_READER_ENABLED
+/************************************************************************
+ *									*
+ *                      Per xmlTextReader error handler                 *
+ *									*
+ ************************************************************************/
+
+typedef struct 
+{
+    PyObject *f;
+    PyObject *arg;
+} xmlTextReaderPyCtxt;
+typedef xmlTextReaderPyCtxt *xmlTextReaderPyCtxtPtr;
+
+static void 
+libxml_xmlTextReaderErrorCallback(void *arg, 
+				  const char *msg,
+				  int severity,
+				  xmlTextReaderLocatorPtr locator)
+{
+    xmlTextReaderPyCtxt *pyCtxt = (xmlTextReaderPyCtxt *)arg;
+    PyObject *list;
+    PyObject *result;
+    
+    list = PyTuple_New(4);
+    PyTuple_SetItem(list, 0, pyCtxt->arg);
+    Py_XINCREF(pyCtxt->arg);
+    PyTuple_SetItem(list, 1, libxml_charPtrConstWrap(msg));
+    PyTuple_SetItem(list, 2, libxml_intWrap(severity));
+    PyTuple_SetItem(list, 3, libxml_xmlTextReaderLocatorPtrWrap(locator));
+    result = PyObject_CallObject(pyCtxt->f, list);
+    if (result == NULL)
+    {
+	/* TODO: manage for the exception to be propagated... */
+	PyErr_Print();
+    }
+    Py_XDECREF(list);
+    Py_XDECREF(result);
+}
+
+static PyObject *
+libxml_xmlTextReaderSetErrorHandler(ATTRIBUTE_UNUSED PyObject *self, PyObject *args)
+{
+    xmlTextReaderPtr reader;
+    xmlTextReaderPyCtxtPtr pyCtxt;
+    xmlTextReaderErrorFunc f;
+    void *arg;
+    PyObject *pyobj_reader;
+    PyObject *pyobj_f;
+    PyObject *pyobj_arg;
+    PyObject *py_retval;
+
+    if (!PyArg_ParseTuple(args, (char *)"OOO:xmlTextReaderSetErrorHandler", &pyobj_reader, &pyobj_f, &pyobj_arg))
+        return(NULL);
+    reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+    /* clear previous error handler */
+    xmlTextReaderGetErrorHandler(reader,&f,&arg);
+    if (arg != NULL) {
+	if (f == (xmlTextReaderErrorFunc) libxml_xmlTextReaderErrorCallback) {
+	    /* ok, it's our error handler! */
+	    pyCtxt = (xmlTextReaderPyCtxtPtr)arg;
+	    Py_XDECREF(pyCtxt->f);
+	    Py_XDECREF(pyCtxt->arg);
+	    xmlFree(pyCtxt);
+	}
+	else {
+	    /* 
+	     * there already an arg, and it's not ours,
+	     * there is definitely something wrong going on here...
+	     * we don't know how to free it, so we bail out... 
+	     */
+	    py_retval = libxml_intWrap(-1);
+	    return(py_retval);
+	}
+    }
+    xmlTextReaderSetErrorHandler(reader,NULL,NULL);
+    /* set new error handler */
+    if (pyobj_f != Py_None)
+    {
+	pyCtxt = (xmlTextReaderPyCtxtPtr)xmlMalloc(sizeof(xmlTextReaderPyCtxt));
+	if (pyCtxt == NULL) {
+	    py_retval = libxml_intWrap(-1);
+	    return(py_retval);
+	}
+	Py_XINCREF(pyobj_f);
+	pyCtxt->f = pyobj_f;
+	Py_XINCREF(pyobj_arg);
+	pyCtxt->arg = pyobj_arg;
+	xmlTextReaderSetErrorHandler(reader,
+	    (xmlTextReaderErrorFunc) libxml_xmlTextReaderErrorCallback,
+	                             pyCtxt);
+    }
+
+    py_retval = libxml_intWrap(1);
+    return(py_retval);
+}
+
+static PyObject *
+libxml_xmlTextReaderGetErrorHandler(ATTRIBUTE_UNUSED PyObject *self, PyObject *args)
+{
+    xmlTextReaderPtr reader;
+    xmlTextReaderPyCtxtPtr pyCtxt;
+    xmlTextReaderErrorFunc f;
+    void *arg;
+    PyObject *pyobj_reader;
+    PyObject *py_retval;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:xmlTextReaderSetErrorHandler", &pyobj_reader))
+        return(NULL);
+    reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+    xmlTextReaderGetErrorHandler(reader,&f,&arg);
+    py_retval = PyTuple_New(2);
+    if (f == (xmlTextReaderErrorFunc)libxml_xmlTextReaderErrorCallback) {
+	/* ok, it's our error handler! */
+	pyCtxt = (xmlTextReaderPyCtxtPtr)arg;
+	PyTuple_SetItem(py_retval, 0, pyCtxt->f);
+	Py_XINCREF(pyCtxt->f);
+	PyTuple_SetItem(py_retval, 1, pyCtxt->arg);
+	Py_XINCREF(pyCtxt->arg);
+    }
+    else
+    {
+	/* f is null or it's not our error handler */
+	PyTuple_SetItem(py_retval, 0, Py_None);
+	Py_XINCREF(Py_None);
+	PyTuple_SetItem(py_retval, 1, Py_None);
+	Py_XINCREF(Py_None);
+    }
+    return(py_retval);
+}
+
+static PyObject *
+libxml_xmlFreeTextReader(ATTRIBUTE_UNUSED PyObject *self, PyObject *args) {
+    xmlTextReaderPtr reader;
+    PyObject *pyobj_reader;
+    xmlTextReaderPyCtxtPtr pyCtxt;
+    xmlTextReaderErrorFunc f;
+    void *arg;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:xmlFreeTextReader", &pyobj_reader))
+        return(NULL);
+    if (!PyCapsule_CheckExact(pyobj_reader)) {
+	Py_INCREF(Py_None);
+	return(Py_None);
+    }
+    reader = (xmlTextReaderPtr) PyxmlTextReader_Get(pyobj_reader);
+    if (reader == NULL) {
+	Py_INCREF(Py_None);
+	return(Py_None);
+    }
+
+    xmlTextReaderGetErrorHandler(reader,&f,&arg);
+    if (arg != NULL) {
+	if (f == (xmlTextReaderErrorFunc) libxml_xmlTextReaderErrorCallback) {
+	    /* ok, it's our error handler! */
+	    pyCtxt = (xmlTextReaderPyCtxtPtr)arg;
+	    Py_XDECREF(pyCtxt->f);
+	    Py_XDECREF(pyCtxt->arg);
+	    xmlFree(pyCtxt);
+	}
+	/* 
+	 * else, something wrong happened, because the error handler is
+	 * not owned by the python bindings...
+	 */
+    }
+
+    xmlFreeTextReader(reader);
+    Py_INCREF(Py_None);
+    return(Py_None);
+}
+#endif
+
+/************************************************************************
+ *									*
+ *			XPath extensions				*
+ *									*
+ ************************************************************************/
+
+static void
+libxml_xmlXPathFuncCallback(xmlXPathParserContextPtr ctxt, int nargs)
+{
+    PyObject *list, *cur, *result;
+    xmlXPathObjectPtr obj;
+    xmlXPathContextPtr rctxt;
+    PyObject *current_function = NULL;
+    const xmlChar *name;
+    const xmlChar *ns_uri;
+    int i;
+
+    if (ctxt == NULL)
+        return;
+    rctxt = ctxt->context;
+    if (rctxt == NULL)
+        return;
+    name = rctxt->function;
+    ns_uri = rctxt->functionURI;
+#ifdef DEBUG_XPATH
+    printf("libxml_xmlXPathFuncCallback called name %s URI %s\n", name,
+           ns_uri);
+#endif
+
+    /*
+     * Find the function, it should be there it was there at lookup
+     */
+    for (i = 0; i < libxml_xpathCallbacksNb; i++) {
+        if (                    /* TODO (ctxt == libxml_xpathCallbacks[i].ctx) && */
+						(xmlStrEqual(name, (*libxml_xpathCallbacks)[i].name)) &&
+               (xmlStrEqual(ns_uri, (*libxml_xpathCallbacks)[i].ns_uri))) {
+					current_function = (*libxml_xpathCallbacks)[i].function;
+        }
+    }
+    if (current_function == NULL) {
+        printf
+            ("libxml_xmlXPathFuncCallback: internal error %s not found !\n",
+             name);
+        return;
+    }
+
+    list = PyTuple_New(nargs + 1);
+    PyTuple_SetItem(list, 0, libxml_xmlXPathParserContextPtrWrap(ctxt));
+    for (i = nargs - 1; i >= 0; i--) {
+        obj = valuePop(ctxt);
+        cur = libxml_xmlXPathObjectPtrWrap(obj);
+        PyTuple_SetItem(list, i + 1, cur);
+    }
+    result = PyObject_CallObject(current_function, list);
+    Py_DECREF(list);
+
+    obj = libxml_xmlXPathObjectPtrConvert(result);
+    valuePush(ctxt, obj);
+}
+
+static xmlXPathFunction
+libxml_xmlXPathFuncLookupFunc(void *ctxt, const xmlChar * name,
+                              const xmlChar * ns_uri)
+{
+    int i;
+
+#ifdef DEBUG_XPATH
+    printf("libxml_xmlXPathFuncLookupFunc(%p, %s, %s) called\n",
+           ctxt, name, ns_uri);
+#endif
+    /*
+     * This is called once only. The address is then stored in the
+     * XPath expression evaluation, the proper object to call can
+     * then still be found using the execution context function
+     * and functionURI fields.
+     */
+    for (i = 0; i < libxml_xpathCallbacksNb; i++) {
+			if ((ctxt == (*libxml_xpathCallbacks)[i].ctx) &&
+					(xmlStrEqual(name, (*libxml_xpathCallbacks)[i].name)) &&
+					(xmlStrEqual(ns_uri, (*libxml_xpathCallbacks)[i].ns_uri))) {
+            return (libxml_xmlXPathFuncCallback);
+        }
+    }
+    return (NULL);
+}
+
+static void
+libxml_xpathCallbacksInitialize(void)
+{
+    int i;
+
+    if (libxml_xpathCallbacksInitialized != 0)
+        return;
+
+#ifdef DEBUG_XPATH
+    printf("libxml_xpathCallbacksInitialized called\n");
+#endif
+    libxml_xpathCallbacks = (libxml_xpathCallbackArray*)xmlMalloc(
+    		libxml_xpathCallbacksAllocd*sizeof(libxml_xpathCallback));
+
+    for (i = 0; i < libxml_xpathCallbacksAllocd; i++) {
+			(*libxml_xpathCallbacks)[i].ctx = NULL;
+			(*libxml_xpathCallbacks)[i].name = NULL;
+			(*libxml_xpathCallbacks)[i].ns_uri = NULL;
+			(*libxml_xpathCallbacks)[i].function = NULL;
+    }
+    libxml_xpathCallbacksInitialized = 1;
+}
+
+PyObject *
+libxml_xmlRegisterXPathFunction(ATTRIBUTE_UNUSED PyObject * self,
+                                PyObject * args)
+{
+    PyObject *py_retval;
+    int c_retval = 0;
+    xmlChar *name;
+    xmlChar *ns_uri;
+    xmlXPathContextPtr ctx;
+    PyObject *pyobj_ctx;
+    PyObject *pyobj_f;
+    int i;
+
+    if (!PyArg_ParseTuple
+        (args, (char *) "OszO:registerXPathFunction", &pyobj_ctx, &name,
+         &ns_uri, &pyobj_f))
+        return (NULL);
+
+    ctx = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctx);
+    if (libxml_xpathCallbacksInitialized == 0)
+        libxml_xpathCallbacksInitialize();
+    xmlXPathRegisterFuncLookup(ctx, libxml_xmlXPathFuncLookupFunc, ctx);
+
+    if ((pyobj_ctx == NULL) || (name == NULL) || (pyobj_f == NULL)) {
+        py_retval = libxml_intWrap(-1);
+        return (py_retval);
+    }
+#ifdef DEBUG_XPATH
+    printf("libxml_registerXPathFunction(%p, %s, %s) called\n",
+           ctx, name, ns_uri);
+#endif
+    for (i = 0; i < libxml_xpathCallbacksNb; i++) {
+	if ((ctx == (*libxml_xpathCallbacks)[i].ctx) &&
+            (xmlStrEqual(name, (*libxml_xpathCallbacks)[i].name)) &&
+            (xmlStrEqual(ns_uri, (*libxml_xpathCallbacks)[i].ns_uri))) {
+            Py_XINCREF(pyobj_f);
+            Py_XDECREF((*libxml_xpathCallbacks)[i].function);
+            (*libxml_xpathCallbacks)[i].function = pyobj_f;
+            c_retval = 1;
+            goto done;
+        }
+    }
+    if (libxml_xpathCallbacksNb >= libxml_xpathCallbacksAllocd) {
+			libxml_xpathCallbacksAllocd+=10;
+	libxml_xpathCallbacks = (libxml_xpathCallbackArray*)xmlRealloc(
+		libxml_xpathCallbacks,
+		libxml_xpathCallbacksAllocd*sizeof(libxml_xpathCallback));
+    } 
+    i = libxml_xpathCallbacksNb++;
+    Py_XINCREF(pyobj_f);
+    (*libxml_xpathCallbacks)[i].ctx = ctx;
+    (*libxml_xpathCallbacks)[i].name = xmlStrdup(name);
+    (*libxml_xpathCallbacks)[i].ns_uri = xmlStrdup(ns_uri);
+    (*libxml_xpathCallbacks)[i].function = pyobj_f;
+        c_retval = 1;
+    
+  done:
+    py_retval = libxml_intWrap((int) c_retval);
+    return (py_retval);
+}
+
+PyObject *
+libxml_xmlXPathRegisterVariable(ATTRIBUTE_UNUSED PyObject * self,
+                                PyObject * args)
+{
+    PyObject *py_retval;
+    int c_retval = 0;
+    xmlChar *name;
+    xmlChar *ns_uri;
+    xmlXPathContextPtr ctx;
+    xmlXPathObjectPtr val;
+    PyObject *pyobj_ctx;
+    PyObject *pyobj_value;
+
+    if (!PyArg_ParseTuple
+        (args, (char *) "OszO:xpathRegisterVariable", &pyobj_ctx, &name,
+         &ns_uri, &pyobj_value))
+        return (NULL);
+
+    ctx = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctx);
+    val = libxml_xmlXPathObjectPtrConvert(pyobj_value);
+
+    c_retval = xmlXPathRegisterVariableNS(ctx, name, ns_uri, val);
+    py_retval = libxml_intWrap(c_retval);
+    return (py_retval);
+}
+
+/************************************************************************
+ *									*
+ *			Global properties access			*
+ *									*
+ ************************************************************************/
+static PyObject *
+libxml_name(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *resultobj, *obj;
+    xmlNodePtr cur;
+    const xmlChar *res;
+
+    if (!PyArg_ParseTuple(args, (char *) "O:name", &obj))
+        return NULL;
+    cur = PyxmlNode_Get(obj);
+
+#ifdef DEBUG
+    printf("libxml_name: cur = %p type %d\n", cur, cur->type);
+#endif
+
+    switch (cur->type) {
+        case XML_DOCUMENT_NODE:
+        case XML_HTML_DOCUMENT_NODE:{
+                xmlDocPtr doc = (xmlDocPtr) cur;
+
+                res = doc->URL;
+                break;
+            }
+        case XML_ATTRIBUTE_NODE:{
+                xmlAttrPtr attr = (xmlAttrPtr) cur;
+
+                res = attr->name;
+                break;
+            }
+        case XML_NAMESPACE_DECL:{
+                xmlNsPtr ns = (xmlNsPtr) cur;
+
+                res = ns->prefix;
+                break;
+            }
+        default:
+            res = cur->name;
+            break;
+    }
+    resultobj = libxml_constxmlCharPtrWrap(res);
+
+    return resultobj;
+}
+
+static PyObject *
+libxml_doc(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *resultobj, *obj;
+    xmlNodePtr cur;
+    xmlDocPtr res;
+
+    if (!PyArg_ParseTuple(args, (char *) "O:doc", &obj))
+        return NULL;
+    cur = PyxmlNode_Get(obj);
+
+#ifdef DEBUG
+    printf("libxml_doc: cur = %p\n", cur);
+#endif
+
+    switch (cur->type) {
+        case XML_DOCUMENT_NODE:
+        case XML_HTML_DOCUMENT_NODE:
+            res = NULL;
+            break;
+        case XML_ATTRIBUTE_NODE:{
+                xmlAttrPtr attr = (xmlAttrPtr) cur;
+
+                res = attr->doc;
+                break;
+            }
+        case XML_NAMESPACE_DECL:
+            res = NULL;
+            break;
+        default:
+            res = cur->doc;
+            break;
+    }
+    resultobj = libxml_xmlDocPtrWrap(res);
+    return resultobj;
+}
+
+static PyObject *
+libxml_properties(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *resultobj, *obj;
+    xmlNodePtr cur;
+    xmlAttrPtr res;
+
+    if (!PyArg_ParseTuple(args, (char *) "O:properties", &obj))
+        return NULL;
+    cur = PyxmlNode_Get(obj);
+    if ((cur != NULL) && (cur->type == XML_ELEMENT_NODE))
+        res = cur->properties;
+    else
+        res = NULL;
+    resultobj = libxml_xmlAttrPtrWrap(res);
+    return resultobj;
+}
+
+static PyObject *
+libxml_next(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *resultobj, *obj;
+    xmlNodePtr cur;
+    xmlNodePtr res;
+
+    if (!PyArg_ParseTuple(args, (char *) "O:next", &obj))
+        return NULL;
+    cur = PyxmlNode_Get(obj);
+
+#ifdef DEBUG
+    printf("libxml_next: cur = %p\n", cur);
+#endif
+
+    switch (cur->type) {
+        case XML_DOCUMENT_NODE:
+        case XML_HTML_DOCUMENT_NODE:
+            res = NULL;
+            break;
+        case XML_ATTRIBUTE_NODE:{
+                xmlAttrPtr attr = (xmlAttrPtr) cur;
+
+                res = (xmlNodePtr) attr->next;
+                break;
+            }
+        case XML_NAMESPACE_DECL:{
+                xmlNsPtr ns = (xmlNsPtr) cur;
+
+                res = (xmlNodePtr) ns->next;
+                break;
+            }
+        default:
+            res = cur->next;
+            break;
+
+    }
+    resultobj = libxml_xmlNodePtrWrap(res);
+    return resultobj;
+}
+
+static PyObject *
+libxml_prev(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *resultobj, *obj;
+    xmlNodePtr cur;
+    xmlNodePtr res;
+
+    if (!PyArg_ParseTuple(args, (char *) "O:prev", &obj))
+        return NULL;
+    cur = PyxmlNode_Get(obj);
+
+#ifdef DEBUG
+    printf("libxml_prev: cur = %p\n", cur);
+#endif
+
+    switch (cur->type) {
+        case XML_DOCUMENT_NODE:
+        case XML_HTML_DOCUMENT_NODE:
+            res = NULL;
+            break;
+        case XML_ATTRIBUTE_NODE:{
+                xmlAttrPtr attr = (xmlAttrPtr) cur;
+
+                res = (xmlNodePtr) attr->prev;
+            }
+            break;
+        case XML_NAMESPACE_DECL:
+            res = NULL;
+            break;
+        default:
+            res = cur->prev;
+            break;
+    }
+    resultobj = libxml_xmlNodePtrWrap(res);
+    return resultobj;
+}
+
+static PyObject *
+libxml_children(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *resultobj, *obj;
+    xmlNodePtr cur;
+    xmlNodePtr res;
+
+    if (!PyArg_ParseTuple(args, (char *) "O:children", &obj))
+        return NULL;
+    cur = PyxmlNode_Get(obj);
+
+#ifdef DEBUG
+    printf("libxml_children: cur = %p\n", cur);
+#endif
+
+    switch (cur->type) {
+        case XML_ELEMENT_NODE:
+        case XML_ENTITY_REF_NODE:
+        case XML_ENTITY_NODE:
+        case XML_PI_NODE:
+        case XML_COMMENT_NODE:
+        case XML_DOCUMENT_NODE:
+        case XML_HTML_DOCUMENT_NODE:
+        case XML_DTD_NODE:
+            res = cur->children;
+            break;
+        case XML_ATTRIBUTE_NODE:{
+                xmlAttrPtr attr = (xmlAttrPtr) cur;
+
+                res = attr->children;
+                break;
+            }
+        default:
+            res = NULL;
+            break;
+    }
+    resultobj = libxml_xmlNodePtrWrap(res);
+    return resultobj;
+}
+
+static PyObject *
+libxml_last(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *resultobj, *obj;
+    xmlNodePtr cur;
+    xmlNodePtr res;
+
+    if (!PyArg_ParseTuple(args, (char *) "O:last", &obj))
+        return NULL;
+    cur = PyxmlNode_Get(obj);
+
+#ifdef DEBUG
+    printf("libxml_last: cur = %p\n", cur);
+#endif
+
+    switch (cur->type) {
+        case XML_ELEMENT_NODE:
+        case XML_ENTITY_REF_NODE:
+        case XML_ENTITY_NODE:
+        case XML_PI_NODE:
+        case XML_COMMENT_NODE:
+        case XML_DOCUMENT_NODE:
+        case XML_HTML_DOCUMENT_NODE:
+        case XML_DTD_NODE:
+            res = cur->last;
+            break;
+        case XML_ATTRIBUTE_NODE:{
+                xmlAttrPtr attr = (xmlAttrPtr) cur;
+
+                res = attr->last;
+		break;
+            }
+        default:
+            res = NULL;
+            break;
+    }
+    resultobj = libxml_xmlNodePtrWrap(res);
+    return resultobj;
+}
+
+static PyObject *
+libxml_parent(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *resultobj, *obj;
+    xmlNodePtr cur;
+    xmlNodePtr res;
+
+    if (!PyArg_ParseTuple(args, (char *) "O:parent", &obj))
+        return NULL;
+    cur = PyxmlNode_Get(obj);
+
+#ifdef DEBUG
+    printf("libxml_parent: cur = %p\n", cur);
+#endif
+
+    switch (cur->type) {
+        case XML_DOCUMENT_NODE:
+        case XML_HTML_DOCUMENT_NODE:
+            res = NULL;
+            break;
+        case XML_ATTRIBUTE_NODE:{
+                xmlAttrPtr attr = (xmlAttrPtr) cur;
+
+                res = attr->parent;
+            }
+	    break;
+        case XML_ENTITY_DECL:
+        case XML_NAMESPACE_DECL:
+        case XML_XINCLUDE_START:
+        case XML_XINCLUDE_END:
+            res = NULL;
+            break;
+        default:
+            res = cur->parent;
+            break;
+    }
+    resultobj = libxml_xmlNodePtrWrap(res);
+    return resultobj;
+}
+
+static PyObject *
+libxml_type(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *resultobj, *obj;
+    xmlNodePtr cur;
+    const xmlChar *res = NULL;
+
+    if (!PyArg_ParseTuple(args, (char *) "O:last", &obj))
+        return NULL;
+    cur = PyxmlNode_Get(obj);
+    if (cur == NULL) {
+        Py_INCREF(Py_None);
+	return (Py_None);
+    }
+
+#ifdef DEBUG
+    printf("libxml_type: cur = %p\n", cur);
+#endif
+
+    switch (cur->type) {
+        case XML_ELEMENT_NODE:
+            res = (const xmlChar *) "element";
+            break;
+        case XML_ATTRIBUTE_NODE:
+            res = (const xmlChar *) "attribute";
+            break;
+        case XML_TEXT_NODE:
+            res = (const xmlChar *) "text";
+            break;
+        case XML_CDATA_SECTION_NODE:
+            res = (const xmlChar *) "cdata";
+            break;
+        case XML_ENTITY_REF_NODE:
+            res = (const xmlChar *) "entity_ref";
+            break;
+        case XML_ENTITY_NODE:
+            res = (const xmlChar *) "entity";
+            break;
+        case XML_PI_NODE:
+            res = (const xmlChar *) "pi";
+            break;
+        case XML_COMMENT_NODE:
+            res = (const xmlChar *) "comment";
+            break;
+        case XML_DOCUMENT_NODE:
+            res = (const xmlChar *) "document_xml";
+            break;
+        case XML_DOCUMENT_TYPE_NODE:
+            res = (const xmlChar *) "doctype";
+            break;
+        case XML_DOCUMENT_FRAG_NODE:
+            res = (const xmlChar *) "fragment";
+            break;
+        case XML_NOTATION_NODE:
+            res = (const xmlChar *) "notation";
+            break;
+        case XML_HTML_DOCUMENT_NODE:
+            res = (const xmlChar *) "document_html";
+            break;
+        case XML_DTD_NODE:
+            res = (const xmlChar *) "dtd";
+            break;
+        case XML_ELEMENT_DECL:
+            res = (const xmlChar *) "elem_decl";
+            break;
+        case XML_ATTRIBUTE_DECL:
+            res = (const xmlChar *) "attribute_decl";
+            break;
+        case XML_ENTITY_DECL:
+            res = (const xmlChar *) "entity_decl";
+            break;
+        case XML_NAMESPACE_DECL:
+            res = (const xmlChar *) "namespace";
+            break;
+        case XML_XINCLUDE_START:
+            res = (const xmlChar *) "xinclude_start";
+            break;
+        case XML_XINCLUDE_END:
+            res = (const xmlChar *) "xinclude_end";
+            break;
+    }
+#ifdef DEBUG
+    printf("libxml_type: cur = %p: %s\n", cur, res);
+#endif
+
+    resultobj = libxml_constxmlCharPtrWrap(res);
+    return resultobj;
+}
+
+/************************************************************************
+ *									*
+ *			Specific accessor functions			*
+ *									*
+ ************************************************************************/
+PyObject *
+libxml_xmlNodeGetNsDefs(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *py_retval;
+    xmlNsPtr c_retval;
+    xmlNodePtr node;
+    PyObject *pyobj_node;
+
+    if (!PyArg_ParseTuple
+        (args, (char *) "O:xmlNodeGetNsDefs", &pyobj_node))
+        return (NULL);
+    node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+    if ((node == NULL) || (node->type != XML_ELEMENT_NODE)) {
+        Py_INCREF(Py_None);
+        return (Py_None);
+    }
+    c_retval = node->nsDef;
+    py_retval = libxml_xmlNsPtrWrap((xmlNsPtr) c_retval);
+    return (py_retval);
+}
+
+PyObject *
+libxml_xmlNodeRemoveNsDef(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *py_retval;
+    xmlNsPtr ns, prev;
+    xmlNodePtr node;
+    PyObject *pyobj_node;
+    xmlChar *href;
+    xmlNsPtr c_retval;
+
+    if (!PyArg_ParseTuple
+        (args, (char *) "Oz:xmlNodeRemoveNsDef", &pyobj_node, &href))
+        return (NULL);
+    node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+    ns = NULL;
+
+    if ((node == NULL) || (node->type != XML_ELEMENT_NODE)) {
+        Py_INCREF(Py_None);
+        return (Py_None);
+    }
+
+    if (href == NULL) {
+	ns = node->nsDef;
+	node->nsDef = NULL;
+	c_retval = 0;
+    }
+    else {
+	prev = NULL;
+	ns = node->nsDef;
+	while (ns != NULL) {
+	    if (xmlStrEqual(ns->href, href)) {
+		if (prev != NULL)
+		    prev->next = ns->next;
+		else
+		    node->nsDef = ns->next;
+		ns->next = NULL;
+		c_retval = 0;
+		break;
+	    }
+	    prev = ns;
+	    ns = ns->next;
+	}
+    }
+
+    c_retval = ns;
+    py_retval = libxml_xmlNsPtrWrap((xmlNsPtr) c_retval);
+    return (py_retval);
+}
+
+PyObject *
+libxml_xmlNodeGetNs(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *py_retval;
+    xmlNsPtr c_retval;
+    xmlNodePtr node;
+    PyObject *pyobj_node;
+
+    if (!PyArg_ParseTuple(args, (char *) "O:xmlNodeGetNs", &pyobj_node))
+        return (NULL);
+    node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+    if ((node == NULL) ||
+        ((node->type != XML_ELEMENT_NODE) &&
+	 (node->type != XML_ATTRIBUTE_NODE))) {
+        Py_INCREF(Py_None);
+        return (Py_None);
+    }
+    c_retval = node->ns;
+    py_retval = libxml_xmlNsPtrWrap((xmlNsPtr) c_retval);
+    return (py_retval);
+}
+
+#ifdef LIBXML_OUTPUT_ENABLED
+/************************************************************************
+ *									*
+ *			Serialization front-end				*
+ *									*
+ ************************************************************************/
+
+static PyObject *
+libxml_serializeNode(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *py_retval = NULL;
+    xmlChar *c_retval;
+    PyObject *pyobj_node;
+    xmlNodePtr node;
+    xmlDocPtr doc;
+    const char *encoding;
+    int format;
+    xmlSaveCtxtPtr ctxt;
+    xmlBufferPtr buf;
+    int options = 0;
+
+    if (!PyArg_ParseTuple(args, (char *) "Ozi:serializeNode", &pyobj_node,
+                          &encoding, &format))
+        return (NULL);
+    node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+
+    if (node == NULL) {
+        Py_INCREF(Py_None);
+        return (Py_None);
+    }
+    if (node->type == XML_DOCUMENT_NODE) {
+        doc = (xmlDocPtr) node;
+	node = NULL;
+#ifdef LIBXML_HTML_ENABLED
+    } else if (node->type == XML_HTML_DOCUMENT_NODE) {
+        doc = (xmlDocPtr) node;
+	node = NULL;
+#endif
+    } else {
+        if (node->type == XML_NAMESPACE_DECL)
+	    doc = NULL;
+	else
+            doc = node->doc;
+        if ((doc == NULL) || (doc->type == XML_DOCUMENT_NODE)) {
+#ifdef LIBXML_HTML_ENABLED
+        } else if (doc->type == XML_HTML_DOCUMENT_NODE) {
+#endif /* LIBXML_HTML_ENABLED */
+        } else {
+            Py_INCREF(Py_None);
+            return (Py_None);
+        }
+    }
+
+
+    buf = xmlBufferCreate();
+    if (buf == NULL) {
+	Py_INCREF(Py_None);
+	return (Py_None);
+    }
+    if (format) options |= XML_SAVE_FORMAT;
+    ctxt = xmlSaveToBuffer(buf, encoding, options);
+    if (ctxt == NULL) {
+	xmlBufferFree(buf);
+	Py_INCREF(Py_None);
+	return (Py_None);
+    }
+    if (node == NULL)
+	xmlSaveDoc(ctxt, doc);
+    else
+	xmlSaveTree(ctxt, node);
+    xmlSaveClose(ctxt);
+
+    c_retval = buf->content;
+    buf->content = NULL;
+
+    xmlBufferFree(buf);
+    py_retval = libxml_charPtrWrap((char *) c_retval);
+
+    return (py_retval);
+}
+
+static PyObject *
+libxml_saveNodeTo(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *py_file = NULL;
+    FILE *output;
+    PyObject *pyobj_node;
+    xmlNodePtr node;
+    xmlDocPtr doc;
+    const char *encoding;
+    int format;
+    int len;
+    xmlOutputBufferPtr buf;
+    xmlCharEncodingHandlerPtr handler = NULL;
+
+    if (!PyArg_ParseTuple(args, (char *) "OOzi:serializeNode", &pyobj_node,
+                          &py_file, &encoding, &format))
+        return (NULL);
+    node = (xmlNodePtr) PyxmlNode_Get(pyobj_node);
+    if (node == NULL) {
+        return (PyLong_FromLong((long) -1));
+    }
+    output = PyFile_Get(py_file);
+    if (output == NULL) {
+        return (PyLong_FromLong((long) -1));
+    }
+
+    if (node->type == XML_DOCUMENT_NODE) {
+        doc = (xmlDocPtr) node;
+    } else if (node->type == XML_HTML_DOCUMENT_NODE) {
+        doc = (xmlDocPtr) node;
+    } else {
+        doc = node->doc;
+    }
+#ifdef LIBXML_HTML_ENABLED
+    if (doc->type == XML_HTML_DOCUMENT_NODE) {
+        if (encoding == NULL)
+            encoding = (const char *) htmlGetMetaEncoding(doc);
+    }
+#endif /* LIBXML_HTML_ENABLED */
+    if (encoding != NULL) {
+        handler = xmlFindCharEncodingHandler(encoding);
+        if (handler == NULL) {
+            PyFile_Release(output);
+            return (PyLong_FromLong((long) -1));
+        }
+    }
+    if (doc->type == XML_HTML_DOCUMENT_NODE) {
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("HTML");
+        if (handler == NULL)
+            handler = xmlFindCharEncodingHandler("ascii");
+    }
+
+    buf = xmlOutputBufferCreateFile(output, handler);
+    if (node->type == XML_DOCUMENT_NODE) {
+        len = xmlSaveFormatFileTo(buf, doc, encoding, format);
+#ifdef LIBXML_HTML_ENABLED
+    } else if (node->type == XML_HTML_DOCUMENT_NODE) {
+        htmlDocContentDumpFormatOutput(buf, doc, encoding, format);
+        len = xmlOutputBufferClose(buf);
+    } else if (doc->type == XML_HTML_DOCUMENT_NODE) {
+        htmlNodeDumpFormatOutput(buf, doc, node, encoding, format);
+        len = xmlOutputBufferClose(buf);
+#endif /* LIBXML_HTML_ENABLED */
+    } else {
+        xmlNodeDumpOutput(buf, doc, node, 0, format, encoding);
+        len = xmlOutputBufferClose(buf);
+    }
+    PyFile_Release(output);
+    return (PyLong_FromLong((long) len));
+}
+#endif /* LIBXML_OUTPUT_ENABLED */
+
+/************************************************************************
+ *									*
+ *			Extra stuff					*
+ *									*
+ ************************************************************************/
+PyObject *
+libxml_xmlNewNode(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *py_retval;
+    xmlChar *name;
+    xmlNodePtr node;
+
+    if (!PyArg_ParseTuple(args, (char *) "s:xmlNewNode", &name))
+        return (NULL);
+    node = (xmlNodePtr) xmlNewNode(NULL, name);
+#ifdef DEBUG
+    printf("NewNode: %s : %p\n", name, (void *) node);
+#endif
+
+    if (node == NULL) {
+        Py_INCREF(Py_None);
+        return (Py_None);
+    }
+    py_retval = libxml_xmlNodePtrWrap(node);
+    return (py_retval);
+}
+
+
+/************************************************************************
+ *									*
+ *			Local Catalog stuff				*
+ *									*
+ ************************************************************************/
+static PyObject *
+libxml_addLocalCatalog(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    xmlChar *URL;
+    xmlParserCtxtPtr ctxt;
+    PyObject *pyobj_ctxt;
+
+    if (!PyArg_ParseTuple(args, (char *)"Os:addLocalCatalog", &pyobj_ctxt, &URL))
+        return(NULL);
+
+    ctxt = (xmlParserCtxtPtr) PyparserCtxt_Get(pyobj_ctxt);
+
+    if (URL != NULL) {
+	ctxt->catalogs = xmlCatalogAddLocal(ctxt->catalogs, URL);
+    }
+
+#ifdef DEBUG
+    printf("LocalCatalog: %s\n", URL);
+#endif
+
+    Py_INCREF(Py_None);
+    return (Py_None);
+}
+
+#ifdef LIBXML_SCHEMAS_ENABLED
+
+/************************************************************************
+ *                                                                      *
+ * RelaxNG error handler registration                                   *
+ *                                                                      *
+ ************************************************************************/
+
+typedef struct 
+{
+    PyObject *warn;
+    PyObject *error;
+    PyObject *arg;
+} xmlRelaxNGValidCtxtPyCtxt;
+typedef xmlRelaxNGValidCtxtPyCtxt *xmlRelaxNGValidCtxtPyCtxtPtr;
+
+static void
+libxml_xmlRelaxNGValidityGenericErrorFuncHandler(void *ctx, char *str) 
+{
+    PyObject *list;
+    PyObject *result;
+    xmlRelaxNGValidCtxtPyCtxtPtr pyCtxt;
+    
+#ifdef DEBUG_ERROR
+    printf("libxml_xmlRelaxNGValidityGenericErrorFuncHandler(%p, %s, ...) called\n", ctx, str);
+#endif
+
+    pyCtxt = (xmlRelaxNGValidCtxtPyCtxtPtr)ctx;
+
+    list = PyTuple_New(2);
+    PyTuple_SetItem(list, 0, libxml_charPtrWrap(str));
+    PyTuple_SetItem(list, 1, pyCtxt->arg);
+    Py_XINCREF(pyCtxt->arg);
+    result = PyObject_CallObject(pyCtxt->error, list);
+    if (result == NULL) 
+    {
+        /* TODO: manage for the exception to be propagated... */
+        PyErr_Print();
+    }
+    Py_XDECREF(list);
+    Py_XDECREF(result);
+}
+
+static void
+libxml_xmlRelaxNGValidityGenericWarningFuncHandler(void *ctx, char *str) 
+{
+    PyObject *list;
+    PyObject *result;
+    xmlRelaxNGValidCtxtPyCtxtPtr pyCtxt;
+    
+#ifdef DEBUG_ERROR
+    printf("libxml_xmlRelaxNGValidityGenericWarningFuncHandler(%p, %s, ...) called\n", ctx, str);
+#endif
+
+    pyCtxt = (xmlRelaxNGValidCtxtPyCtxtPtr)ctx;
+
+    list = PyTuple_New(2);
+    PyTuple_SetItem(list, 0, libxml_charPtrWrap(str));
+    PyTuple_SetItem(list, 1, pyCtxt->arg);
+    Py_XINCREF(pyCtxt->arg);
+    result = PyObject_CallObject(pyCtxt->warn, list);
+    if (result == NULL) 
+    {
+        /* TODO: manage for the exception to be propagated... */
+        PyErr_Print();
+    }
+    Py_XDECREF(list);
+    Py_XDECREF(result);
+}
+
+static void
+libxml_xmlRelaxNGValidityErrorFunc(void *ctx, const char *msg, ...)
+{
+    va_list ap;
+
+    va_start(ap, msg);
+    libxml_xmlRelaxNGValidityGenericErrorFuncHandler(ctx, libxml_buildMessage(msg, ap));
+    va_end(ap);
+}
+
+static void
+libxml_xmlRelaxNGValidityWarningFunc(void *ctx, const char *msg, ...)
+{
+    va_list ap;
+
+    va_start(ap, msg);
+    libxml_xmlRelaxNGValidityGenericWarningFuncHandler(ctx, libxml_buildMessage(msg, ap));
+    va_end(ap);
+}
+
+static PyObject *
+libxml_xmlRelaxNGSetValidErrors(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+    PyObject *py_retval;
+    PyObject *pyobj_error;
+    PyObject *pyobj_warn;
+    PyObject *pyobj_ctx;
+    PyObject *pyobj_arg = Py_None;
+    xmlRelaxNGValidCtxtPtr ctxt;
+    xmlRelaxNGValidCtxtPyCtxtPtr pyCtxt;
+
+    if (!PyArg_ParseTuple
+        (args, (char *) "OOO|O:xmlRelaxNGSetValidErrors", &pyobj_ctx, &pyobj_error, &pyobj_warn, &pyobj_arg))
+        return (NULL);
+
+#ifdef DEBUG_ERROR
+    printf("libxml_xmlRelaxNGSetValidErrors(%p, %p, %p) called\n", pyobj_ctx, pyobj_error, pyobj_warn);
+#endif
+
+    ctxt = PyrelaxNgValidCtxt_Get(pyobj_ctx);
+    if (xmlRelaxNGGetValidErrors(ctxt, NULL, NULL, (void **) &pyCtxt) == -1)
+    {
+        py_retval = libxml_intWrap(-1);
+        return(py_retval);
+    }
+    
+    if (pyCtxt == NULL)
+    {
+        /* first time to set the error handlers */
+        pyCtxt = xmlMalloc(sizeof(xmlRelaxNGValidCtxtPyCtxt));
+        if (pyCtxt == NULL) {
+            py_retval = libxml_intWrap(-1);
+            return(py_retval);
+        }
+        memset(pyCtxt, 0, sizeof(xmlRelaxNGValidCtxtPyCtxt));
+    }
+    
+    /* TODO: check warn and error is a function ! */
+    Py_XDECREF(pyCtxt->error);
+    Py_XINCREF(pyobj_error);
+    pyCtxt->error = pyobj_error;
+    
+    Py_XDECREF(pyCtxt->warn);
+    Py_XINCREF(pyobj_warn);
+    pyCtxt->warn = pyobj_warn;
+    
+    Py_XDECREF(pyCtxt->arg);
+    Py_XINCREF(pyobj_arg);
+    pyCtxt->arg = pyobj_arg;
+
+    xmlRelaxNGSetValidErrors(ctxt, &libxml_xmlRelaxNGValidityErrorFunc, &libxml_xmlRelaxNGValidityWarningFunc, pyCtxt);
+
+    py_retval = libxml_intWrap(1);
+    return (py_retval);
+}
+
+static PyObject *
+libxml_xmlRelaxNGFreeValidCtxt(ATTRIBUTE_UNUSED PyObject *self, PyObject *args) {
+    xmlRelaxNGValidCtxtPtr ctxt;
+    xmlRelaxNGValidCtxtPyCtxtPtr pyCtxt;
+    PyObject *pyobj_ctxt;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:xmlRelaxNGFreeValidCtxt", &pyobj_ctxt))
+        return(NULL);
+    ctxt = (xmlRelaxNGValidCtxtPtr) PyrelaxNgValidCtxt_Get(pyobj_ctxt);
+
+    if (xmlRelaxNGGetValidErrors(ctxt, NULL, NULL, (void **) &pyCtxt) == 0)
+    {
+        if (pyCtxt != NULL)
+        {
+            Py_XDECREF(pyCtxt->error);
+            Py_XDECREF(pyCtxt->warn);
+            Py_XDECREF(pyCtxt->arg);
+            xmlFree(pyCtxt);
+        }
+    }
+    
+    xmlRelaxNGFreeValidCtxt(ctxt);
+    Py_INCREF(Py_None);
+    return(Py_None);
+}
+
+typedef struct
+{
+	PyObject *warn;
+	PyObject *error;
+	PyObject *arg;
+} xmlSchemaValidCtxtPyCtxt;
+typedef xmlSchemaValidCtxtPyCtxt *xmlSchemaValidCtxtPyCtxtPtr;
+
+static void
+libxml_xmlSchemaValidityGenericErrorFuncHandler(void *ctx, char *str)
+{
+	PyObject *list;
+	PyObject *result;
+	xmlSchemaValidCtxtPyCtxtPtr pyCtxt;
+
+#ifdef DEBUG_ERROR
+	printf("libxml_xmlSchemaValidityGenericErrorFuncHandler(%p, %s, ...) called\n", ctx, str);
+#endif
+
+	pyCtxt = (xmlSchemaValidCtxtPyCtxtPtr) ctx;
+
+	list = PyTuple_New(2);
+	PyTuple_SetItem(list, 0, libxml_charPtrWrap(str));
+	PyTuple_SetItem(list, 1, pyCtxt->arg);
+	Py_XINCREF(pyCtxt->arg);
+	result = PyObject_CallObject(pyCtxt->error, list);
+	if (result == NULL) 
+	{
+		/* TODO: manage for the exception to be propagated... */
+		PyErr_Print();
+	}
+	Py_XDECREF(list);
+	Py_XDECREF(result);
+}
+
+static void
+libxml_xmlSchemaValidityGenericWarningFuncHandler(void *ctx, char *str)
+{
+	PyObject *list;
+	PyObject *result;
+	xmlSchemaValidCtxtPyCtxtPtr pyCtxt;
+
+#ifdef DEBUG_ERROR
+	printf("libxml_xmlSchemaValidityGenericWarningFuncHandler(%p, %s, ...) called\n", ctx, str);
+#endif
+	
+	pyCtxt = (xmlSchemaValidCtxtPyCtxtPtr) ctx;
+
+	list = PyTuple_New(2);
+	PyTuple_SetItem(list, 0, libxml_charPtrWrap(str));
+	PyTuple_SetItem(list, 1, pyCtxt->arg);
+	Py_XINCREF(pyCtxt->arg);
+	result = PyObject_CallObject(pyCtxt->warn, list);
+	if (result == NULL)
+	{
+		/* TODO: manage for the exception to be propagated... */
+		PyErr_Print();
+	}
+	Py_XDECREF(list);
+	Py_XDECREF(result);
+}
+
+static void
+libxml_xmlSchemaValidityErrorFunc(void *ctx, const char *msg, ...)
+{
+	va_list ap;
+	
+	va_start(ap, msg);
+	libxml_xmlSchemaValidityGenericErrorFuncHandler(ctx, libxml_buildMessage(msg, ap));
+	va_end(ap);
+}
+
+static void
+libxml_xmlSchemaValidityWarningFunc(void *ctx, const char *msg, ...)
+{
+	va_list ap;
+
+	va_start(ap, msg);
+	libxml_xmlSchemaValidityGenericWarningFuncHandler(ctx, libxml_buildMessage(msg, ap));
+	va_end(ap);
+}
+
+PyObject *
+libxml_xmlSchemaSetValidErrors(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+	PyObject *py_retval;
+	PyObject *pyobj_error;
+	PyObject *pyobj_warn;
+	PyObject *pyobj_ctx;
+	PyObject *pyobj_arg = Py_None;
+	xmlSchemaValidCtxtPtr ctxt;
+	xmlSchemaValidCtxtPyCtxtPtr pyCtxt;
+
+	if (!PyArg_ParseTuple
+		(args, (char *) "OOO|O:xmlSchemaSetValidErrors", &pyobj_ctx, &pyobj_error, &pyobj_warn, &pyobj_arg))
+		return (NULL);
+
+#ifdef DEBUG_ERROR
+	printf("libxml_xmlSchemaSetValidErrors(%p, %p, %p) called\n", pyobj_ctx, pyobj_error, pyobj_warn);
+#endif
+
+	ctxt = PySchemaValidCtxt_Get(pyobj_ctx);
+	if (xmlSchemaGetValidErrors(ctxt, NULL, NULL, (void **) &pyCtxt) == -1)
+	{
+		py_retval = libxml_intWrap(-1);
+		return(py_retval);
+	}
+
+	if (pyCtxt == NULL)
+	{
+		/* first time to set the error handlers */
+		pyCtxt = xmlMalloc(sizeof(xmlSchemaValidCtxtPyCtxt));
+		if (pyCtxt == NULL) {
+			py_retval = libxml_intWrap(-1);
+			return(py_retval);
+		}
+		memset(pyCtxt, 0, sizeof(xmlSchemaValidCtxtPyCtxt));
+	}
+
+	/* TODO: check warn and error is a function ! */
+	Py_XDECREF(pyCtxt->error);
+	Py_XINCREF(pyobj_error);
+	pyCtxt->error = pyobj_error;
+
+	Py_XDECREF(pyCtxt->warn);
+	Py_XINCREF(pyobj_warn);
+	pyCtxt->warn = pyobj_warn;
+
+	Py_XDECREF(pyCtxt->arg);
+	Py_XINCREF(pyobj_arg);
+	pyCtxt->arg = pyobj_arg;
+
+	xmlSchemaSetValidErrors(ctxt, &libxml_xmlSchemaValidityErrorFunc, &libxml_xmlSchemaValidityWarningFunc, pyCtxt);
+
+	py_retval = libxml_intWrap(1);
+	return(py_retval);
+}
+
+static PyObject *
+libxml_xmlSchemaFreeValidCtxt(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
+{
+	xmlSchemaValidCtxtPtr ctxt;
+	xmlSchemaValidCtxtPyCtxtPtr pyCtxt;
+	PyObject *pyobj_ctxt;
+
+	if (!PyArg_ParseTuple(args, (char *)"O:xmlSchemaFreeValidCtxt", &pyobj_ctxt))
+		return(NULL);
+	ctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_ctxt);
+
+	if (xmlSchemaGetValidErrors(ctxt, NULL, NULL, (void **) &pyCtxt) == 0)
+	{
+		if (pyCtxt != NULL)
+		{
+			Py_XDECREF(pyCtxt->error);
+			Py_XDECREF(pyCtxt->warn);
+			Py_XDECREF(pyCtxt->arg);
+			xmlFree(pyCtxt);
+		}
+	}
+
+	xmlSchemaFreeValidCtxt(ctxt);
+	Py_INCREF(Py_None);
+	return(Py_None);
+}
+
+#endif
+
+#ifdef LIBXML_C14N_ENABLED
+#ifdef LIBXML_OUTPUT_ENABLED
+
+/************************************************************************
+ *                                                                      *
+ * XML Canonicalization c14n                                            *
+ *                                                                      *
+ ************************************************************************/
+
+static int
+PyxmlNodeSet_Convert(PyObject *py_nodeset, xmlNodeSetPtr *result)
+{
+    xmlNodeSetPtr nodeSet;
+    int is_tuple = 0;
+
+    if (PyTuple_Check(py_nodeset))
+        is_tuple = 1;
+    else if (PyList_Check(py_nodeset))
+        is_tuple = 0;
+    else if (py_nodeset == Py_None) {
+        *result = NULL;
+        return 0;
+    }
+    else {
+        PyErr_SetString(PyExc_TypeError,
+                        "must be a tuple or list of nodes.");
+        return -1;
+    }
+
+    nodeSet = (xmlNodeSetPtr) xmlMalloc(sizeof(xmlNodeSet));
+    if (nodeSet == NULL) {
+        PyErr_SetString(PyExc_MemoryError, "");
+        return -1;
+    }
+
+    nodeSet->nodeNr = 0;
+    nodeSet->nodeMax = (is_tuple
+                        ? PyTuple_GET_SIZE(py_nodeset)
+                        : PyList_GET_SIZE(py_nodeset));
+    nodeSet->nodeTab
+        = (xmlNodePtr *) xmlMalloc (nodeSet->nodeMax
+                                    * sizeof(xmlNodePtr));
+    if (nodeSet->nodeTab == NULL) {
+        xmlFree(nodeSet);
+        PyErr_SetString(PyExc_MemoryError, "");
+        return -1;
+    }
+    memset(nodeSet->nodeTab, 0 ,
+           nodeSet->nodeMax * sizeof(xmlNodePtr));
+
+    {
+        int idx;
+        for (idx=0; idx < nodeSet->nodeMax; ++idx) {
+            xmlNodePtr pynode =
+                PyxmlNode_Get (is_tuple
+                               ? PyTuple_GET_ITEM(py_nodeset, idx)
+                               : PyList_GET_ITEM(py_nodeset, idx));
+            if (pynode)
+                nodeSet->nodeTab[nodeSet->nodeNr++] = pynode;
+        }
+    }
+    *result = nodeSet;
+    return 0;
+}
+
+static int
+PystringSet_Convert(PyObject *py_strings, xmlChar *** result)
+{
+    /* NOTE: the array should be freed, but the strings are shared
+       with the python strings and so must not be freed. */
+
+    xmlChar ** strings;
+    int is_tuple = 0;
+    int count;
+    int init_index = 0;
+
+    if (PyTuple_Check(py_strings))
+        is_tuple = 1;
+    else if (PyList_Check(py_strings))
+        is_tuple = 0;
+    else if (py_strings == Py_None) {
+        *result = NULL;
+        return 0;
+    }
+    else {
+        PyErr_SetString(PyExc_TypeError,
+                        "must be a tuple or list of strings.");
+        return -1;
+    }
+
+    count = (is_tuple
+             ? PyTuple_GET_SIZE(py_strings)
+             : PyList_GET_SIZE(py_strings));
+
+    strings = (xmlChar **) xmlMalloc(sizeof(xmlChar *) * count);
+
+    if (strings == NULL) {
+        PyErr_SetString(PyExc_MemoryError, "");
+        return -1;
+    }
+
+    memset(strings, 0 , sizeof(xmlChar *) * count);
+
+    {
+        int idx;
+        for (idx=0; idx < count; ++idx) {
+            char* s = PyBytes_AsString
+                (is_tuple
+                 ? PyTuple_GET_ITEM(py_strings, idx)
+                 : PyList_GET_ITEM(py_strings, idx));
+            if (s)
+                strings[init_index++] = (xmlChar *)s;
+            else {
+                xmlFree(strings);
+                PyErr_SetString(PyExc_TypeError,
+                                "must be a tuple or list of strings.");
+                return -1;
+            }
+        }
+    }
+
+    *result = strings;
+    return 0;
+}
+
+static PyObject *
+libxml_C14NDocDumpMemory(ATTRIBUTE_UNUSED PyObject * self,
+                         PyObject * args)
+{
+    PyObject *py_retval = NULL;
+
+    PyObject *pyobj_doc;
+    PyObject *pyobj_nodes;
+    int exclusive;
+    PyObject *pyobj_prefixes;
+    int with_comments;
+
+    xmlDocPtr doc;
+    xmlNodeSetPtr nodes;
+    xmlChar **prefixes = NULL;
+    xmlChar *doc_txt;
+
+    int result;
+
+    if (!PyArg_ParseTuple(args, (char *) "OOiOi:C14NDocDumpMemory",
+                          &pyobj_doc,
+                          &pyobj_nodes,
+                          &exclusive,
+                          &pyobj_prefixes,
+                          &with_comments))
+        return (NULL);
+
+    doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+    if (!doc) {
+        PyErr_SetString(PyExc_TypeError, "bad document.");
+        return NULL;
+    }
+
+    result = PyxmlNodeSet_Convert(pyobj_nodes, &nodes);
+    if (result < 0) return NULL;
+
+    if (exclusive) {
+        result = PystringSet_Convert(pyobj_prefixes, &prefixes);
+        if (result < 0) {
+            if (nodes) {
+                xmlFree(nodes->nodeTab);
+                xmlFree(nodes);
+            }
+            return NULL;
+        }
+    }
+
+    result = xmlC14NDocDumpMemory(doc,
+                                  nodes,
+                                  exclusive,
+                                  prefixes,
+                                  with_comments,
+                                  &doc_txt);
+
+    if (nodes) {
+        xmlFree(nodes->nodeTab);
+        xmlFree(nodes);
+    }
+    if (prefixes) {
+        xmlChar ** idx = prefixes;
+        while (*idx) xmlFree(*(idx++));
+        xmlFree(prefixes);
+    }
+
+    if (result < 0) {
+        PyErr_SetString(PyExc_Exception,
+                        "libxml2 xmlC14NDocDumpMemory failure.");
+        return NULL;
+    }
+    else {
+        py_retval = PY_IMPORT_STRING_SIZE((const char *) doc_txt,
+                                                result);
+        xmlFree(doc_txt);
+        return py_retval;
+    }
+}
+
+static PyObject *
+libxml_C14NDocSaveTo(ATTRIBUTE_UNUSED PyObject * self,
+                     PyObject * args)
+{
+    PyObject *pyobj_doc;
+    PyObject *py_file;
+    PyObject *pyobj_nodes;
+    int exclusive;
+    PyObject *pyobj_prefixes;
+    int with_comments;
+
+    xmlDocPtr doc;
+    xmlNodeSetPtr nodes;
+    xmlChar **prefixes = NULL;
+    FILE * output;
+    xmlOutputBufferPtr buf;
+
+    int result;
+    int len;
+
+    if (!PyArg_ParseTuple(args, (char *) "OOiOiO:C14NDocSaveTo",
+                          &pyobj_doc,
+                          &pyobj_nodes,
+                          &exclusive,
+                          &pyobj_prefixes,
+                          &with_comments,
+                          &py_file))
+        return (NULL);
+
+    doc = (xmlDocPtr) PyxmlNode_Get(pyobj_doc);
+    if (!doc) {
+        PyErr_SetString(PyExc_TypeError, "bad document.");
+        return NULL;
+    }
+
+    output = PyFile_Get(py_file);
+    if (output == NULL) {
+        PyErr_SetString(PyExc_TypeError, "bad file.");
+        return NULL;
+    }
+    buf = xmlOutputBufferCreateFile(output, NULL);
+
+    result = PyxmlNodeSet_Convert(pyobj_nodes, &nodes);
+    if (result < 0) {
+        xmlOutputBufferClose(buf);
+        return NULL;
+    }
+
+    if (exclusive) {
+        result = PystringSet_Convert(pyobj_prefixes, &prefixes);
+        if (result < 0) {
+            if (nodes) {
+                xmlFree(nodes->nodeTab);
+                xmlFree(nodes);
+            }
+            xmlOutputBufferClose(buf);
+            return NULL;
+        }
+    }
+
+    result = xmlC14NDocSaveTo(doc,
+                              nodes,
+                              exclusive,
+                              prefixes,
+                              with_comments,
+                              buf);
+
+    if (nodes) {
+        xmlFree(nodes->nodeTab);
+        xmlFree(nodes);
+    }
+    if (prefixes) {
+        xmlChar ** idx = prefixes;
+        while (*idx) xmlFree(*(idx++));
+        xmlFree(prefixes);
+    }
+
+    PyFile_Release(output);
+    len = xmlOutputBufferClose(buf);
+
+    if (result < 0) {
+        PyErr_SetString(PyExc_Exception,
+                        "libxml2 xmlC14NDocSaveTo failure.");
+        return NULL;
+    }
+    else
+        return PyLong_FromLong((long) len);
+}
+
+#endif
+#endif
+
+static PyObject *
+libxml_getObjDesc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+
+    PyObject *obj;
+    char *str;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:getObjDesc", &obj))
+        return NULL;
+    str = PyCapsule_GetPointer(obj, PyCapsule_GetName(obj));
+    return Py_BuildValue((char *)"s", str);
+}
+
+static PyObject *
+libxml_compareNodesEqual(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+    
+    PyObject *py_node1, *py_node2;
+    xmlNodePtr node1, node2;
+
+    if (!PyArg_ParseTuple(args, (char *)"OO:compareNodesEqual",
+		&py_node1, &py_node2))
+        return NULL;
+    /* To compare two node objects, we compare their pointer addresses */
+    node1 = PyxmlNode_Get(py_node1);
+    node2 = PyxmlNode_Get(py_node2);
+    if ( node1 == node2 )
+        return Py_BuildValue((char *)"i", 1);
+    else
+        return Py_BuildValue((char *)"i", 0);
+    
+}
+
+static PyObject *
+libxml_nodeHash(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
+
+    PyObject *py_node1;
+    xmlNodePtr node1;
+
+    if (!PyArg_ParseTuple(args, (char *)"O:nodeHash", &py_node1))
+	    return NULL;
+    /* For simplicity, we use the node pointer address as a hash value */
+    node1 = PyxmlNode_Get(py_node1);
+
+    return PyLong_FromVoidPtr(node1);
+
+}
+
+/************************************************************************
+ *									*
+ *		Deprecation warnings					*
+ *									*
+ ************************************************************************/
+
+int
+libxml_deprecationWarning(const char *func) {
+#if PY_VERSION_HEX >= 0x03020000
+    return PyErr_WarnFormat(PyExc_PendingDeprecationWarning, 1,
+            "libxml2mod.%s is deprecated and will be removed "
+            "in future versions", func);
+#else
+    return PyErr_WarnEx(PyExc_PendingDeprecationWarning, func, 1);
+#endif
+}
+
+/************************************************************************
+ *									*
+ *			The registration stuff				*
+ *									*
+ ************************************************************************/
+static PyMethodDef libxmlMethods[] = {
+#include "libxml2-export.c"
+    {(char *) "name", libxml_name, METH_VARARGS, NULL},
+    {(char *) "children", libxml_children, METH_VARARGS, NULL},
+    {(char *) "properties", libxml_properties, METH_VARARGS, NULL},
+    {(char *) "last", libxml_last, METH_VARARGS, NULL},
+    {(char *) "prev", libxml_prev, METH_VARARGS, NULL},
+    {(char *) "next", libxml_next, METH_VARARGS, NULL},
+    {(char *) "parent", libxml_parent, METH_VARARGS, NULL},
+    {(char *) "type", libxml_type, METH_VARARGS, NULL},
+    {(char *) "doc", libxml_doc, METH_VARARGS, NULL},
+    {(char *) "xmlNewNode", libxml_xmlNewNode, METH_VARARGS, NULL},
+    {(char *) "xmlNodeRemoveNsDef", libxml_xmlNodeRemoveNsDef, METH_VARARGS, NULL},
+#ifdef LIBXML_VALID_ENABLED
+    {(char *)"xmlSetValidErrors", libxml_xmlSetValidErrors, METH_VARARGS, NULL},
+    {(char *)"xmlFreeValidCtxt", libxml_xmlFreeValidCtxt, METH_VARARGS, NULL},
+#endif /* LIBXML_VALID_ENABLED */
+#ifdef LIBXML_OUTPUT_ENABLED
+    {(char *) "serializeNode", libxml_serializeNode, METH_VARARGS, NULL},
+    {(char *) "saveNodeTo", libxml_saveNodeTo, METH_VARARGS, NULL},
+    {(char *) "outputBufferCreate", libxml_xmlCreateOutputBuffer, METH_VARARGS, NULL},
+    {(char *) "outputBufferGetPythonFile", libxml_outputBufferGetPythonFile, METH_VARARGS, NULL},
+    {(char *) "xmlOutputBufferClose", libxml_xmlOutputBufferClose, METH_VARARGS, NULL},
+    { (char *)"xmlOutputBufferFlush", libxml_xmlOutputBufferFlush, METH_VARARGS, NULL },
+    { (char *)"xmlSaveFileTo", libxml_xmlSaveFileTo, METH_VARARGS, NULL },
+    { (char *)"xmlSaveFormatFileTo", libxml_xmlSaveFormatFileTo, METH_VARARGS, NULL },
+#endif /* LIBXML_OUTPUT_ENABLED */
+    {(char *) "inputBufferCreate", libxml_xmlCreateInputBuffer, METH_VARARGS, NULL},
+    {(char *) "setEntityLoader", libxml_xmlSetEntityLoader, METH_VARARGS, NULL},
+    {(char *)"xmlRegisterErrorHandler", libxml_xmlRegisterErrorHandler, METH_VARARGS, NULL },
+    {(char *)"xmlParserCtxtSetErrorHandler", libxml_xmlParserCtxtSetErrorHandler, METH_VARARGS, NULL },
+    {(char *)"xmlParserCtxtGetErrorHandler", libxml_xmlParserCtxtGetErrorHandler, METH_VARARGS, NULL },
+    {(char *)"xmlFreeParserCtxt", libxml_xmlFreeParserCtxt, METH_VARARGS, NULL },
+#ifdef LIBXML_READER_ENABLED
+    {(char *)"xmlTextReaderSetErrorHandler", libxml_xmlTextReaderSetErrorHandler, METH_VARARGS, NULL },
+    {(char *)"xmlTextReaderGetErrorHandler", libxml_xmlTextReaderGetErrorHandler, METH_VARARGS, NULL },
+    {(char *)"xmlFreeTextReader", libxml_xmlFreeTextReader, METH_VARARGS, NULL },
+#endif
+    {(char *)"addLocalCatalog", libxml_addLocalCatalog, METH_VARARGS, NULL },
+#ifdef LIBXML_SCHEMAS_ENABLED
+    {(char *)"xmlRelaxNGSetValidErrors", libxml_xmlRelaxNGSetValidErrors, METH_VARARGS, NULL},
+    {(char *)"xmlRelaxNGFreeValidCtxt", libxml_xmlRelaxNGFreeValidCtxt, METH_VARARGS, NULL},
+    {(char *)"xmlSchemaSetValidErrors", libxml_xmlSchemaSetValidErrors, METH_VARARGS, NULL},
+    {(char *)"xmlSchemaFreeValidCtxt", libxml_xmlSchemaFreeValidCtxt, METH_VARARGS, NULL},
+#endif
+#ifdef LIBXML_C14N_ENABLED
+#ifdef LIBXML_OUTPUT_ENABLED
+    {(char *)"xmlC14NDocDumpMemory", libxml_C14NDocDumpMemory, METH_VARARGS, NULL},
+    {(char *)"xmlC14NDocSaveTo", libxml_C14NDocSaveTo, METH_VARARGS, NULL},
+#endif
+#endif
+    {(char *) "getObjDesc", libxml_getObjDesc, METH_VARARGS, NULL},
+    {(char *) "compareNodesEqual", libxml_compareNodesEqual, METH_VARARGS, NULL},
+    {(char *) "nodeHash", libxml_nodeHash, METH_VARARGS, NULL},
+    {(char *) "xmlRegisterInputCallback", libxml_xmlRegisterInputCallback, METH_VARARGS, NULL},
+    {(char *) "xmlUnregisterInputCallback", libxml_xmlUnregisterInputCallback, METH_VARARGS, NULL},
+    {NULL, NULL, 0, NULL}
+};
+
+#if PY_MAJOR_VERSION >= 3
+#define INITERROR return NULL
+
+static struct PyModuleDef moduledef = {
+        PyModuleDef_HEAD_INIT,
+        "libxml2mod",
+        NULL,
+        -1,
+        libxmlMethods,
+        NULL,
+        NULL,
+        NULL,
+        NULL
+};
+
+#else
+#define INITERROR return
+
+#ifdef MERGED_MODULES
+extern void initlibxsltmod(void);
+#endif
+
+#endif
+
+#if PY_MAJOR_VERSION >= 3
+PyObject *PyInit_libxml2mod(void)
+#else
+void initlibxml2mod(void)
+#endif
+{
+    PyObject *module;
+
+#if PY_MAJOR_VERSION >= 3
+    module = PyModule_Create(&moduledef);
+#else
+    /* initialize the python extension module */
+    module = Py_InitModule((char *) "libxml2mod", libxmlMethods);
+#endif
+    if (module == NULL)
+        INITERROR;
+
+    /* initialize libxml2 */
+    xmlInitParser();
+    /* TODO this probably need to be revamped for Python3 */
+    libxml_xmlErrorInitialize();
+
+#if PY_MAJOR_VERSION < 3
+#ifdef MERGED_MODULES
+    initlibxsltmod();
+#endif
+#endif
+
+#if PY_MAJOR_VERSION >= 3
+    return module;
+#endif
+}