Skip to content

Commit

Permalink
libxml-libxml-perl: add recipe
Browse files Browse the repository at this point in the history
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 <[email protected]>
Acked-by: Hongxu Jia <[email protected]>
Signed-off-by: Martin Jansa <[email protected]>
  • Loading branch information
Roy Li authored and shr-project committed Jul 21, 2014
1 parent 764c5c0 commit 743751e
Show file tree
Hide file tree
Showing 4 changed files with 248 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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 <[email protected]>
---
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

Original file line number Diff line number Diff line change
@@ -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 <[email protected]>
---
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

Original file line number Diff line number Diff line change
@@ -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 <[email protected]>
---
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

47 changes: 47 additions & 0 deletions meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0116.bb
Original file line number Diff line number Diff line change
@@ -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/"

0 comments on commit 743751e

Please sign in to comment.