Patchwork [meta-perl,v2] libxml-libxml-perl: add recipe

login
register
mail settings
Submitter rongqing.li@windriver.com
Date July 15, 2014, 12:42 a.m.
Message ID <1405384958-24589-1-git-send-email-rongqing.li@windriver.com>
Download mbox | patch
Permalink /patch/75485/
State Accepted, archived
Headers show

Comments

rongqing.li@windriver.com - July 15, 2014, 12:42 a.m.
From: Roy Li <rongqing.li@windriver.com>

This module is an interface to libxml2, providing XML and HTML parsers \
with DOM, SAX and XMLReader interfaces, a large subset of DOM Layer 3 \
interface and a XML::XPath-like interface to XPath API of libxml2. \
The module is split into several packages which are not described in this \
section; unless stated otherwise, you only need to use XML::LibXML; in \
your programs.

Signed-off-by: Roy Li <rongqing.li@windriver.com>
---
 .../libxml-libxml-perl/disable-libxml2-check.patch |   79 +++++++++++++++++
 .../fix-CATALOG-conditional-compile.patch          |   31 +++++++
 .../using-DOCB-conditional.patch                   |   91 ++++++++++++++++++++
 .../libxml/libxml-libxml-perl_2.0116.bb            |   47 ++++++++++
 4 files changed, 248 insertions(+)
 create mode 100644 meta-perl/recipes-perl/libxml/libxml-libxml-perl/disable-libxml2-check.patch
 create mode 100644 meta-perl/recipes-perl/libxml/libxml-libxml-perl/fix-CATALOG-conditional-compile.patch
 create mode 100644 meta-perl/recipes-perl/libxml/libxml-libxml-perl/using-DOCB-conditional.patch
 create mode 100644 meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0116.bb
Hongxu Jia - July 15, 2014, 1:42 a.m.
Acked-by: Hongxu Jia <hongxu.jia@windriver.com>

//Hongxu


On 07/15/2014 08:42 AM, rongqing.li@windriver.com wrote:
> From: Roy Li <rongqing.li@windriver.com>
>
> This module is an interface to libxml2, providing XML and HTML parsers \
> with DOM, SAX and XMLReader interfaces, a large subset of DOM Layer 3 \
> interface and a XML::XPath-like interface to XPath API of libxml2. \
> The module is split into several packages which are not described in this \
> section; unless stated otherwise, you only need to use XML::LibXML; in \
> your programs.
>
> Signed-off-by: Roy Li <rongqing.li@windriver.com>
> ---
>   .../libxml-libxml-perl/disable-libxml2-check.patch |   79 +++++++++++++++++
>   .../fix-CATALOG-conditional-compile.patch          |   31 +++++++
>   .../using-DOCB-conditional.patch                   |   91 ++++++++++++++++++++
>   .../libxml/libxml-libxml-perl_2.0116.bb            |   47 ++++++++++
>   4 files changed, 248 insertions(+)
>   create mode 100644 meta-perl/recipes-perl/libxml/libxml-libxml-perl/disable-libxml2-check.patch
>   create mode 100644 meta-perl/recipes-perl/libxml/libxml-libxml-perl/fix-CATALOG-conditional-compile.patch
>   create mode 100644 meta-perl/recipes-perl/libxml/libxml-libxml-perl/using-DOCB-conditional.patch
>   create mode 100644 meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0116.bb
>
> diff --git a/meta-perl/recipes-perl/libxml/libxml-libxml-perl/disable-libxml2-check.patch b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/disable-libxml2-check.patch
> new file mode 100644
> index 0000000..a8e7cc1
> --- /dev/null
> +++ b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/disable-libxml2-check.patch
> @@ -0,0 +1,79 @@
> +Do not use the _libxml_check_lib() on cross-compile
> +
> +Upstream-Status: Inappropriate [configuration]
> +
> +xml2 have been added into package's DEPENDS, so not need to use the
> +_libxml_check_lib() to check it again, and _libxml_check_lib() always
> +return false on cross-compile environment
> +
> +Signed-off-by: Roy Li <rongqing.li@windriver.com>
> +---
> + Makefile.PL |   52 ++++++++++++++++++++++++++--------------------------
> + 1 file changed, 26 insertions(+), 26 deletions(-)
> +
> +diff --git a/Makefile.PL b/Makefile.PL
> +index c0485f1..09c676b 100644
> +--- a/Makefile.PL
> ++++ b/Makefile.PL
> +@@ -411,32 +411,32 @@ sub _libxml_check_lib {
> +     }
> + }
> +
> +-print "Checking for ability to link against xml2...";
> +-if ( _libxml_check_lib('xml2') ) {
> +-    print "yes\n";
> +-}
> +-else {
> +-    print "no\n";
> +-    print "Checking for ability to link against libxml2...";
> +-    if ( _libxml_check_lib('libxml2')) {
> +-        print "yes\n";
> +-    }
> +-    else {
> +-        print STDERR <<"DEATH";
> +-libxml2, zlib, and/or the Math library (-lm) have not been found.
> +-Try setting LIBS and INC values on the command line
> +-Or get libxml2 from
> +-  http://xmlsoft.org/
> +-If you install via RPMs, make sure you also install the -devel
> +-RPMs, as this is where the headers (.h files) are.
> +-
> +-Also, you may try to run perl Makefile.PL with the DEBUG=1 parameter
> +-to see the exact reason why the detection of libxml2 installation
> +-failed or why Makefile.PL was not able to compile a test program.
> +-DEATH
> +-        exit 0; # 0 recommended by http://cpantest.grango.org (Notes for CPAN Authors)
> +-    }
> +-}
> ++#print "Checking for ability to link against xml2...";
> ++#if ( _libxml_check_lib('xml2') ) {
> ++#    print "yes\n";
> ++#}
> ++#else {
> ++#    print "no\n";
> ++#    print "Checking for ability to link against libxml2...";
> ++#    if ( _libxml_check_lib('libxml2')) {
> ++#        print "yes\n";
> ++#    }
> ++#    else {
> ++#        print STDERR <<"DEATH";
> ++#libxml2, zlib, and/or the Math library (-lm) have not been found.
> ++#Try setting LIBS and INC values on the command line
> ++#Or get libxml2 from
> ++#  http://xmlsoft.org/
> ++#If you install via RPMs, make sure you also install the -devel
> ++#RPMs, as this is where the headers (.h files) are.
> ++#
> ++#Also, you may try to run perl Makefile.PL with the DEBUG=1 parameter
> ++#to see the exact reason why the detection of libxml2 installation
> ++#failed or why Makefile.PL was not able to compile a test program.
> ++#DEATH
> ++#        exit 0; # 0 recommended by http://cpantest.grango.org (Notes for CPAN Authors)
> ++#    }
> ++#}
> +
> + # -------------------------------------------------------------------------- #
> + # _NOW_ write the Makefile
> +--
> +1.7.10.4
> +
> diff --git a/meta-perl/recipes-perl/libxml/libxml-libxml-perl/fix-CATALOG-conditional-compile.patch b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/fix-CATALOG-conditional-compile.patch
> new file mode 100644
> index 0000000..1dd9fb3
> --- /dev/null
> +++ b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/fix-CATALOG-conditional-compile.patch
> @@ -0,0 +1,31 @@
> +[PATCH] Fix a compile error
> +
> +Upstream-Status: Pending
> +
> +Fix a compile error by conditional using 'catal' since catal
> +is only defined when LIBXML_CATALOG_ENABLED is enabled.
> +
> +Signed-off-by: Roy Li <rongqing.li@windriver.com>
> +---
> + LibXML.xs |    2 ++
> + 1 file changed, 2 insertions(+)
> +
> +diff --git a/LibXML.xs b/LibXML.xs
> +index 66da04b..45da681 100644
> +--- a/LibXML.xs
> ++++ b/LibXML.xs
> +@@ -2777,9 +2777,11 @@ _default_catalog( self, catalog )
> +         xmlCatalogPtr catal = INT2PTR(xmlCatalogPtr,SvIV(SvRV(catalog)));
> + #endif
> +     INIT:
> ++#ifdef LIBXML_CATALOG_ENABLED
> +         if ( catal == NULL ) {
> +             croak( "empty catalog\n" );
> +         }
> ++#endif
> +     CODE:
> +         warn( "this feature is not implemented" );
> +         RETVAL = 0;
> +--
> +1.7.10.4
> +
> diff --git a/meta-perl/recipes-perl/libxml/libxml-libxml-perl/using-DOCB-conditional.patch b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/using-DOCB-conditional.patch
> new file mode 100644
> index 0000000..d255ec7
> --- /dev/null
> +++ b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/using-DOCB-conditional.patch
> @@ -0,0 +1,91 @@
> +[PATCH] Fix a compile error
> +
> +Upstream-Status: Pending
> +
> +by conditional using 'XML_DOCB_DOCUMENT_NODE' since it is only
> +defined when LIBXML_DOCB_ENABLED is enabled in xmlversion.h.
> +
> +Signed-off-by: Roy Li <rongqing.li@windriver.com>
> +---
> + LibXML.xs        |    9 +-
> + dom.c            |    2 +
> + perl-libxml-mm.c |    4 +
> + 4 files changed, 678 insertions(+), 658 deletions(-)
> +
> +diff --git a/LibXML.xs b/LibXML.xs
> +index b299ba4..66da04b 100644
> +--- a/LibXML.xs
> ++++ b/LibXML.xs
> +@@ -5026,7 +5026,9 @@ addChild( self, nNode )
> +             XSRETURN_UNDEF;
> +         case XML_DOCUMENT_NODE :
> +         case XML_HTML_DOCUMENT_NODE :
> ++#ifdef LIBXML_DOCB_ENABLED
> +         case XML_DOCB_DOCUMENT_NODE :
> ++#endif
> +             croak("addChild: HIERARCHY_REQUEST_ERR\n");
> +             XSRETURN_UNDEF;
> +         case XML_NOTATION_NODE :
> +@@ -5286,7 +5288,9 @@ _toStringC14N(self, comments=0, xpath=&PL_sv_undef, exclusive=0, inc_prefix_list
> +         if ( nodepath == NULL
> +              && self->type != XML_DOCUMENT_NODE
> +              && self->type != XML_HTML_DOCUMENT_NODE
> ++#ifdef LIBXML_DOCB_ENABLED
> +              && self->type != XML_DOCB_DOCUMENT_NODE
> ++#endif
> +            ) {
> +             if (comments)
> + 	      nodepath = xmlStrdup( (const xmlChar *) "(. | .//node() | .//@* | .//namespace::*)" );
> +@@ -5297,7 +5301,10 @@ _toStringC14N(self, comments=0, xpath=&PL_sv_undef, exclusive=0, inc_prefix_list
> +         if ( nodepath != NULL ) {
> +             if ( self->type == XML_DOCUMENT_NODE
> +                  || self->type == XML_HTML_DOCUMENT_NODE
> +-                 || self->type == XML_DOCB_DOCUMENT_NODE ) {
> ++#ifdef LIBXML_DOCB_ENABLED
> ++                 || self->type == XML_DOCB_DOCUMENT_NODE
> ++#endif
> ++	    ) {
> +                 refNode = xmlDocGetRootElement( self->doc );
> +             }
> + 	    if (SvOK(xpath_context)) {
> +diff --git a/dom.c b/dom.c
> +index 87eb61d..cbd391b 100644
> +--- a/dom.c
> ++++ b/dom.c
> +@@ -654,7 +654,9 @@ domName(xmlNodePtr node) {
> +
> +     case XML_DOCUMENT_NODE :
> +     case XML_HTML_DOCUMENT_NODE :
> ++#ifdef LIBXML_DOCB_ENABLED
> +     case XML_DOCB_DOCUMENT_NODE :
> ++#endif
> +         name = (const xmlChar *) "#document";
> +         break;
> +
> +diff --git a/perl-libxml-mm.c b/perl-libxml-mm.c
> +index d162b06..7ac5436 100644
> +--- a/perl-libxml-mm.c
> ++++ b/perl-libxml-mm.c
> +@@ -331,7 +331,9 @@ PmmNewNode(xmlNodePtr node)
> +         switch ( node->type ) {
> +         case XML_DOCUMENT_NODE:
> +         case XML_HTML_DOCUMENT_NODE:
> ++#ifdef LIBXML_DOCB_ENABLED
> +         case XML_DOCB_DOCUMENT_NODE:
> ++#endif
> +             proxy = (ProxyNodePtr)xmlMalloc(sizeof(struct _DocProxyNode));
> +             if (proxy != NULL) {
> +                 ((DocProxyNodePtr)proxy)->psvi_status = Pmm_NO_PSVI;
> +@@ -550,7 +552,9 @@ PmmNodeToSv( xmlNodePtr node, ProxyNodePtr owner )
> +         switch ( node->type ) {
> +         case XML_DOCUMENT_NODE:
> +         case XML_HTML_DOCUMENT_NODE:
> ++#ifdef LIBXML_DOCB_ENABLED
> +         case XML_DOCB_DOCUMENT_NODE:
> ++#endif
> +             if ( ((xmlDocPtr)node)->encoding != NULL ) {
> +                 SetPmmENCODING(dfProxy, (int)xmlParseCharEncoding( (const char*)((xmlDocPtr)node)->encoding ));
> +             }
> +--
> +1.7.10.4
> +
> diff --git a/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0116.bb b/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0116.bb
> new file mode 100644
> index 0000000..2a6dbc2
> --- /dev/null
> +++ b/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0116.bb
> @@ -0,0 +1,47 @@
> +SUMMARY = "Perl interface to the libxml2 library"
> +DESCRIPTION = "This module is an interface to libxml2, providing XML and HTML parsers \
> +with DOM, SAX and XMLReader interfaces, a large subset of DOM Layer 3 \
> +interface and a XML::XPath-like interface to XPath API of libxml2. \
> +The module is split into several packages which are not described in this \
> +section; unless stated otherwise, you only need to use XML::LibXML; in \
> +your programs."
> +
> +HOMEPAGE = "http://search.cpan.org/dist/XML-LibXML-1.99/"
> +SECTION = "libs"
> +LICENSE = "Artistic-1.0|GPLv1+"
> +DEPENDS += "libxml2 \
> +        libxml-sax-perl-native \
> +        zlib \
> +"
> +RDEPENDS_${PN} += "libxml2 \
> +        libxml-sax-perl \
> +        libxml-sax-base-perl \
> +        zlib \
> +"
> +
> +SRC_URI = "http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-LibXML-${PV}.tar.gz;name=libxml \
> +	file://disable-libxml2-check.patch \
> +	file://fix-CATALOG-conditional-compile.patch \
> +	file://using-DOCB-conditional.patch \
> +"
> +LIC_FILES_CHKSUM = "file://debian/copyright;md5=75e021e35a906347f46c9ff163653e2a \
> +			file://LICENSE;md5=97871bde150daeb5e61ad95137ff2446"
> +SRC_URI[libxml.md5sum] = "a53a743bf053a0cb4afb41513fb8a684"
> +SRC_URI[libxml.sha256sum] = "b154f2dad3033b30d22ac81b8985b69ad35450b0c552db394cd03bb36845812a"
> +
> +S = "${WORKDIR}/XML-LibXML-${PV}"
> +
> +inherit cpan
> +
> +EXTRA_CPANFLAGS = "INC=-I${STAGING_INCDIR}/libxml2 LIBS=-L${STAGING_LIBDIR}"
> +
> +BBCLASSEXTEND = "native"
> +
> +CFLAGS += " -D_GNU_SOURCE "
> +BUILD_CFLAGS += " -D_GNU_SOURCE "
> +
> +do_configure_prepend() {
> +	rm -rf ${S}/.pc/*
> +}
> +
> +FILES_${PN}-dbg =+ "${libdir}/perl/vendor_perl/*/auto/XML/LibXML/.debug/"

Patch

diff --git a/meta-perl/recipes-perl/libxml/libxml-libxml-perl/disable-libxml2-check.patch b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/disable-libxml2-check.patch
new file mode 100644
index 0000000..a8e7cc1
--- /dev/null
+++ b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/disable-libxml2-check.patch
@@ -0,0 +1,79 @@ 
+Do not use the _libxml_check_lib() on cross-compile
+
+Upstream-Status: Inappropriate [configuration] 
+
+xml2 have been added into package's DEPENDS, so not need to use the
+_libxml_check_lib() to check it again, and _libxml_check_lib() always
+return false on cross-compile environment
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ Makefile.PL |   52 ++++++++++++++++++++++++++--------------------------
+ 1 file changed, 26 insertions(+), 26 deletions(-)
+
+diff --git a/Makefile.PL b/Makefile.PL
+index c0485f1..09c676b 100644
+--- a/Makefile.PL
++++ b/Makefile.PL
+@@ -411,32 +411,32 @@ sub _libxml_check_lib {
+     }
+ }
+ 
+-print "Checking for ability to link against xml2...";
+-if ( _libxml_check_lib('xml2') ) {
+-    print "yes\n";
+-}
+-else {
+-    print "no\n";
+-    print "Checking for ability to link against libxml2...";
+-    if ( _libxml_check_lib('libxml2')) {
+-        print "yes\n";
+-    }
+-    else {
+-        print STDERR <<"DEATH";
+-libxml2, zlib, and/or the Math library (-lm) have not been found.
+-Try setting LIBS and INC values on the command line
+-Or get libxml2 from
+-  http://xmlsoft.org/
+-If you install via RPMs, make sure you also install the -devel
+-RPMs, as this is where the headers (.h files) are.
+-
+-Also, you may try to run perl Makefile.PL with the DEBUG=1 parameter
+-to see the exact reason why the detection of libxml2 installation
+-failed or why Makefile.PL was not able to compile a test program.
+-DEATH
+-        exit 0; # 0 recommended by http://cpantest.grango.org (Notes for CPAN Authors)
+-    }
+-}
++#print "Checking for ability to link against xml2...";
++#if ( _libxml_check_lib('xml2') ) {
++#    print "yes\n";
++#}
++#else {
++#    print "no\n";
++#    print "Checking for ability to link against libxml2...";
++#    if ( _libxml_check_lib('libxml2')) {
++#        print "yes\n";
++#    }
++#    else {
++#        print STDERR <<"DEATH";
++#libxml2, zlib, and/or the Math library (-lm) have not been found.
++#Try setting LIBS and INC values on the command line
++#Or get libxml2 from
++#  http://xmlsoft.org/
++#If you install via RPMs, make sure you also install the -devel
++#RPMs, as this is where the headers (.h files) are.
++#
++#Also, you may try to run perl Makefile.PL with the DEBUG=1 parameter
++#to see the exact reason why the detection of libxml2 installation
++#failed or why Makefile.PL was not able to compile a test program.
++#DEATH
++#        exit 0; # 0 recommended by http://cpantest.grango.org (Notes for CPAN Authors)
++#    }
++#}
+ 
+ # -------------------------------------------------------------------------- #
+ # _NOW_ write the Makefile
+-- 
+1.7.10.4
+
diff --git a/meta-perl/recipes-perl/libxml/libxml-libxml-perl/fix-CATALOG-conditional-compile.patch b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/fix-CATALOG-conditional-compile.patch
new file mode 100644
index 0000000..1dd9fb3
--- /dev/null
+++ b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/fix-CATALOG-conditional-compile.patch
@@ -0,0 +1,31 @@ 
+[PATCH] Fix a compile error 
+
+Upstream-Status: Pending
+
+Fix a compile error by conditional using 'catal' since catal
+is only defined when LIBXML_CATALOG_ENABLED is enabled.
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ LibXML.xs |    2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/LibXML.xs b/LibXML.xs
+index 66da04b..45da681 100644
+--- a/LibXML.xs
++++ b/LibXML.xs
+@@ -2777,9 +2777,11 @@ _default_catalog( self, catalog )
+         xmlCatalogPtr catal = INT2PTR(xmlCatalogPtr,SvIV(SvRV(catalog)));
+ #endif
+     INIT:
++#ifdef LIBXML_CATALOG_ENABLED
+         if ( catal == NULL ) {
+             croak( "empty catalog\n" );
+         }
++#endif
+     CODE:
+         warn( "this feature is not implemented" );
+         RETVAL = 0;
+-- 
+1.7.10.4
+
diff --git a/meta-perl/recipes-perl/libxml/libxml-libxml-perl/using-DOCB-conditional.patch b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/using-DOCB-conditional.patch
new file mode 100644
index 0000000..d255ec7
--- /dev/null
+++ b/meta-perl/recipes-perl/libxml/libxml-libxml-perl/using-DOCB-conditional.patch
@@ -0,0 +1,91 @@ 
+[PATCH] Fix a compile error 
+
+Upstream-Status: Pending
+
+by conditional using 'XML_DOCB_DOCUMENT_NODE' since it is only
+defined when LIBXML_DOCB_ENABLED is enabled in xmlversion.h.
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ LibXML.xs        |    9 +-
+ dom.c            |    2 +
+ perl-libxml-mm.c |    4 +
+ 4 files changed, 678 insertions(+), 658 deletions(-)
+
+diff --git a/LibXML.xs b/LibXML.xs
+index b299ba4..66da04b 100644
+--- a/LibXML.xs
++++ b/LibXML.xs
+@@ -5026,7 +5026,9 @@ addChild( self, nNode )
+             XSRETURN_UNDEF;
+         case XML_DOCUMENT_NODE :
+         case XML_HTML_DOCUMENT_NODE :
++#ifdef LIBXML_DOCB_ENABLED
+         case XML_DOCB_DOCUMENT_NODE :
++#endif
+             croak("addChild: HIERARCHY_REQUEST_ERR\n");
+             XSRETURN_UNDEF;
+         case XML_NOTATION_NODE :
+@@ -5286,7 +5288,9 @@ _toStringC14N(self, comments=0, xpath=&PL_sv_undef, exclusive=0, inc_prefix_list
+         if ( nodepath == NULL
+              && self->type != XML_DOCUMENT_NODE
+              && self->type != XML_HTML_DOCUMENT_NODE
++#ifdef LIBXML_DOCB_ENABLED
+              && self->type != XML_DOCB_DOCUMENT_NODE
++#endif
+            ) {
+             if (comments)
+ 	      nodepath = xmlStrdup( (const xmlChar *) "(. | .//node() | .//@* | .//namespace::*)" );
+@@ -5297,7 +5301,10 @@ _toStringC14N(self, comments=0, xpath=&PL_sv_undef, exclusive=0, inc_prefix_list
+         if ( nodepath != NULL ) {
+             if ( self->type == XML_DOCUMENT_NODE
+                  || self->type == XML_HTML_DOCUMENT_NODE
+-                 || self->type == XML_DOCB_DOCUMENT_NODE ) {
++#ifdef LIBXML_DOCB_ENABLED
++                 || self->type == XML_DOCB_DOCUMENT_NODE
++#endif
++	    ) {
+                 refNode = xmlDocGetRootElement( self->doc );
+             }
+ 	    if (SvOK(xpath_context)) {
+diff --git a/dom.c b/dom.c
+index 87eb61d..cbd391b 100644
+--- a/dom.c
++++ b/dom.c
+@@ -654,7 +654,9 @@ domName(xmlNodePtr node) {
+ 
+     case XML_DOCUMENT_NODE :
+     case XML_HTML_DOCUMENT_NODE :
++#ifdef LIBXML_DOCB_ENABLED
+     case XML_DOCB_DOCUMENT_NODE :
++#endif
+         name = (const xmlChar *) "#document";
+         break;
+ 
+diff --git a/perl-libxml-mm.c b/perl-libxml-mm.c
+index d162b06..7ac5436 100644
+--- a/perl-libxml-mm.c
++++ b/perl-libxml-mm.c
+@@ -331,7 +331,9 @@ PmmNewNode(xmlNodePtr node)
+         switch ( node->type ) {
+         case XML_DOCUMENT_NODE:
+         case XML_HTML_DOCUMENT_NODE:
++#ifdef LIBXML_DOCB_ENABLED
+         case XML_DOCB_DOCUMENT_NODE:
++#endif
+             proxy = (ProxyNodePtr)xmlMalloc(sizeof(struct _DocProxyNode));
+             if (proxy != NULL) {
+                 ((DocProxyNodePtr)proxy)->psvi_status = Pmm_NO_PSVI;
+@@ -550,7 +552,9 @@ PmmNodeToSv( xmlNodePtr node, ProxyNodePtr owner )
+         switch ( node->type ) {
+         case XML_DOCUMENT_NODE:
+         case XML_HTML_DOCUMENT_NODE:
++#ifdef LIBXML_DOCB_ENABLED
+         case XML_DOCB_DOCUMENT_NODE:
++#endif
+             if ( ((xmlDocPtr)node)->encoding != NULL ) {
+                 SetPmmENCODING(dfProxy, (int)xmlParseCharEncoding( (const char*)((xmlDocPtr)node)->encoding ));
+             }
+-- 
+1.7.10.4
+
diff --git a/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0116.bb b/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0116.bb
new file mode 100644
index 0000000..2a6dbc2
--- /dev/null
+++ b/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0116.bb
@@ -0,0 +1,47 @@ 
+SUMMARY = "Perl interface to the libxml2 library"
+DESCRIPTION = "This module is an interface to libxml2, providing XML and HTML parsers \ 
+with DOM, SAX and XMLReader interfaces, a large subset of DOM Layer 3 \
+interface and a XML::XPath-like interface to XPath API of libxml2. \
+The module is split into several packages which are not described in this \
+section; unless stated otherwise, you only need to use XML::LibXML; in \
+your programs."
+
+HOMEPAGE = "http://search.cpan.org/dist/XML-LibXML-1.99/"
+SECTION = "libs"
+LICENSE = "Artistic-1.0|GPLv1+"
+DEPENDS += "libxml2 \
+        libxml-sax-perl-native \
+        zlib \
+"
+RDEPENDS_${PN} += "libxml2 \
+        libxml-sax-perl \
+        libxml-sax-base-perl \
+        zlib \
+"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-LibXML-${PV}.tar.gz;name=libxml \
+	file://disable-libxml2-check.patch \
+	file://fix-CATALOG-conditional-compile.patch \
+	file://using-DOCB-conditional.patch \
+"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=75e021e35a906347f46c9ff163653e2a \
+			file://LICENSE;md5=97871bde150daeb5e61ad95137ff2446"
+SRC_URI[libxml.md5sum] = "a53a743bf053a0cb4afb41513fb8a684"
+SRC_URI[libxml.sha256sum] = "b154f2dad3033b30d22ac81b8985b69ad35450b0c552db394cd03bb36845812a"
+
+S = "${WORKDIR}/XML-LibXML-${PV}"
+
+inherit cpan
+
+EXTRA_CPANFLAGS = "INC=-I${STAGING_INCDIR}/libxml2 LIBS=-L${STAGING_LIBDIR}"
+
+BBCLASSEXTEND = "native"
+
+CFLAGS += " -D_GNU_SOURCE "
+BUILD_CFLAGS += " -D_GNU_SOURCE "
+
+do_configure_prepend() {
+	rm -rf ${S}/.pc/*
+}
+
+FILES_${PN}-dbg =+ "${libdir}/perl/vendor_perl/*/auto/XML/LibXML/.debug/"