From 0722248e9d5d4f3d2f0d401fe06fa26c519e158e Mon Sep 17 00:00:00 2001 From: Lukas Bulwahn <lukas.bulwahn@bmw-carit.de> Date: Fri, 4 Jan 2013 15:30:08 +0100 Subject: [PATCH] adding recipe libtinyxml for ros-groovy; announcing redistribution of recipe; tuned README --- README | 5 +- .../libtinyxml/enforce-use-stl.patch | 20 ++++++ .../libtinyxml/entity-encoding.patch | 62 +++++++++++++++++++ .../libtinyxml/libtinyxml_2.6.2.bb | 43 +++++++++++++ 4 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 recipes-support/libtinyxml/libtinyxml/enforce-use-stl.patch create mode 100644 recipes-support/libtinyxml/libtinyxml/entity-encoding.patch create mode 100644 recipes-support/libtinyxml/libtinyxml_2.6.2.bb diff --git a/README b/README index 0079017..1a907b6 100644 --- a/README +++ b/README @@ -155,8 +155,11 @@ The log4cxx recipe originated from the recipe in the OpenEmbedded (Classic) Deve The core-image-ros recipe originated from the core-image-minimal recipe in OpenEmbedded Core (cf. http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-core/images/core-image-minimal.bb) licensed with the MIT License. -The distutils class originated the distutils class in OpenEmbedded Core +The distutils class originated from the distutils class in OpenEmbedded Core (cf. http://cgit.openembedded.org/openembedded-core/tree/meta/classes/distutils.bbclass) licensed with the MIT License. +The libtinyxml recipe originated from the recipe in the OpenEmbedded meta layer + (cf. http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/libtinyxml) + licensed with the MIT License. The modified files are redistributed here under the same MIT License. diff --git a/recipes-support/libtinyxml/libtinyxml/enforce-use-stl.patch b/recipes-support/libtinyxml/libtinyxml/enforce-use-stl.patch new file mode 100644 index 0000000..88c962b --- /dev/null +++ b/recipes-support/libtinyxml/libtinyxml/enforce-use-stl.patch @@ -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 ) diff --git a/recipes-support/libtinyxml/libtinyxml/entity-encoding.patch b/recipes-support/libtinyxml/libtinyxml/entity-encoding.patch new file mode 100644 index 0000000..b801506 --- /dev/null +++ b/recipes-support/libtinyxml/libtinyxml/entity-encoding.patch @@ -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. +- // © -- 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&#xa+bar</foo>"); ++ std::string str; ++ str << xml; ++ XmlTest( "Entity escaping", "<foo>foo&#xa+bar</foo>", str.c_str() ); ++ } ++ #endif ++ + /* 1417717 experiment + { + TiXmlDocument xml; diff --git a/recipes-support/libtinyxml/libtinyxml_2.6.2.bb b/recipes-support/libtinyxml/libtinyxml_2.6.2.bb new file mode 100644 index 0000000..fdadebd --- /dev/null +++ b/recipes-support/libtinyxml/libtinyxml_2.6.2.bb @@ -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} +} + -- GitLab