libtinyxml: Add recipe for 2.6.2

This imports the recipe for TinyXML from meta-WebOS@e5c99c2cf, does
some minor fixes on the recipe and import the patches included in the
Debian package.

We use PR as r5 to ensure the package is updated when removed from
meta-WebOS layer.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
This commit is contained in:
Otavio Salvador 2012-10-03 13:41:33 +00:00 committed by Koen Kooi
parent 8e26af8d38
commit 7fb3b06bac
3 changed files with 125 additions and 0 deletions

View File

@ -0,0 +1,20 @@
Description: TinyXml is built with TIXML_USE_STL, so we have to
enforce it when the library is used.
Author: Felix Geyer <debfx-pkg@fobos.de>
Upstream-Status: Pending
diff -Nur tinyxml-2.5.3/tinyxml.h tinyxml-2.5.3.patch/tinyxml.h
--- tinyxml-2.5.3/tinyxml.h 2007-05-07 00:41:23.000000000 +0200
+++ tinyxml-2.5.3.patch/tinyxml.h 2009-07-08 22:32:03.000000000 +0200
@@ -26,6 +26,10 @@
#ifndef TINYXML_INCLUDED
#define TINYXML_INCLUDED
+#ifndef TIXML_USE_STL
+ #define TIXML_USE_STL
+#endif
+
#ifdef _MSC_VER
#pragma warning( push )
#pragma warning( disable : 4530 )

View File

@ -0,0 +1,62 @@
Description: TinyXML incorrectly encodes text element containing
an ampersand followed by either x or #.
Origin: http://sourceforge.net/tracker/index.php?func=detail&aid=3031828&group_id=13559&atid=313559
Upstream-Status: Pending
diff -u -r1.105 tinyxml.cpp
--- a/tinyxml.cpp
+++ b/tinyxml.cpp
@@ -57,30 +57,7 @@
{
unsigned char c = (unsigned char) str[i];
- if ( c == '&'
- && i < ( (int)str.length() - 2 )
- && str[i+1] == '#'
- && str[i+2] == 'x' )
- {
- // Hexadecimal character reference.
- // Pass through unchanged.
- // &#xA9; -- copyright symbol, for example.
- //
- // The -1 is a bug fix from Rob Laveaux. It keeps
- // an overflow from happening if there is no ';'.
- // There are actually 2 ways to exit this loop -
- // while fails (error case) and break (semicolon found).
- // However, there is no mechanism (currently) for
- // this function to return an error.
- while ( i<(int)str.length()-1 )
- {
- outString->append( str.c_str() + i, 1 );
- ++i;
- if ( str[i] == ';' )
- break;
- }
- }
- else if ( c == '&' )
+ if ( c == '&' )
{
outString->append( entity[0].str, entity[0].strLength );
++i;
diff -u -r1.89 xmltest.cpp
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -1340,6 +1340,16 @@
}*/
}
+ #ifdef TIXML_USE_STL
+ {
+ TiXmlDocument xml;
+ xml.Parse("<foo>foo&amp;#xa+bar</foo>");
+ std::string str;
+ str << xml;
+ XmlTest( "Entity escaping", "<foo>foo&amp;#xa+bar</foo>", str.c_str() );
+ }
+ #endif
+
/* 1417717 experiment
{
TiXmlDocument xml;

View File

@ -0,0 +1,43 @@
# (c) Copyright 2012 Hewlett-Packard Development Company, L.P.
DESCRIPTION = "a simple, small, minimal, C++ XML parser"
HOMEPAGE = "http://www.sourceforge.net/projects/tinyxml"
LICENSE = "Zlib"
LIC_FILES_CHKSUM = "file://readme.txt;md5=f8f366f3370dda889f60faa7db162cf4"
SECTION = "libs"
PR = "r5"
SRC_URI = "${SOURCEFORGE_MIRROR}/tinyxml/tinyxml_${@'${PV}'.replace('.', '_')}.tar.gz \
file://enforce-use-stl.patch \
file://entity-encoding.patch"
SRC_URI[md5sum] = "c1b864c96804a10526540c664ade67f0"
SRC_URI[sha256sum] = "15bdfdcec58a7da30adc87ac2b078e4417dbe5392f3afb719f9ba6d062645593"
S = "${WORKDIR}/tinyxml"
CXXFLAGS += "-fPIC"
do_compile() {
${CXX} ${CXXFLAGS} -I${S} -c -o ${S}/tinyxml.o ${S}/tinyxml.cpp
${CXX} ${CXXFLAGS} -I${S} -c -o ${S}/tinyxmlerror.o ${S}/tinyxmlerror.cpp
${CXX} ${CXXFLAGS} -I${S} -c -o ${S}/tinyxmlparser.o ${S}/tinyxmlparser.cpp
${CXX} ${CXXFLAGS} \
-shared \
-Wl,-soname,libtinyxml.so.${PV} \
-o ${S}/libtinyxml.so.${PV} \
${LDFLAGS} \
${S}/tinyxml.o \
${S}/tinyxmlparser.o \
${S}/tinyxmlerror.o
}
do_install() {
install -d ${D}${libdir}
install -m 0755 ${S}/libtinyxml.so.${PV} ${D}${libdir}
ln -sf libtinyxml.so.${PV} ${D}${libdir}/libtinyxml.so
install -d ${D}${includedir}
install -m 0644 ${S}/tinyxml.h ${D}${includedir}
}