Added TinyXML-2.6.2.
This commit is contained in:
parent
60de7967da
commit
e66e926121
4 changed files with 142 additions and 0 deletions
13
pkgs/development/libraries/tinyxml/2.6.2-add-pkgconfig.patch
Normal file
13
pkgs/development/libraries/tinyxml/2.6.2-add-pkgconfig.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
--- a/tinyxml.pc 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ b/tinyxml.pc 2012-12-29 08:52:07.512266072 +0100
|
||||
@@ -0,0 +1,10 @@
|
||||
+prefix=@out@
|
||||
+exec_prefix=${prefix}
|
||||
+libdir=${exec_prefix}/lib
|
||||
+includedir=${prefix}/include
|
||||
+
|
||||
+Name: TinyXML
|
||||
+Description: A simple, small, C++ XML parser
|
||||
+Version: @version@
|
||||
+Libs: -L${libdir} -ltinyxml
|
||||
+Cflags: -I${includedir}
|
64
pkgs/development/libraries/tinyxml/2.6.2-entity.patch
Executable file
64
pkgs/development/libraries/tinyxml/2.6.2-entity.patch
Executable file
|
@ -0,0 +1,64 @@
|
|||
? entity.patch
|
||||
Index: a/tinyxml.cpp
|
||||
===================================================================
|
||||
RCS file: b/tinyxml.cpp,v
|
||||
retrieving revision 1.105
|
||||
diff -u -r1.105 a/tinyxml.cpp
|
||||
--- tinyxml.cpp 5 Jun 2010 19:06:57 -0000 1.105
|
||||
+++ tinyxml.cpp 19 Jul 2010 21:24:16 -0000
|
||||
@@ -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;
|
||||
Index: a/xmltest.cpp
|
||||
===================================================================
|
||||
RCS file: b/xmltest.cpp,v
|
||||
retrieving revision 1.89
|
||||
diff -u -r1.89 a/xmltest.cpp
|
||||
--- xmltest.cpp 5 Jun 2010 17:41:52 -0000 1.89
|
||||
+++ xmltest.cpp 19 Jul 2010 21:24:16 -0000
|
||||
@@ -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;
|
61
pkgs/development/libraries/tinyxml/2.6.2.nix
Normal file
61
pkgs/development/libraries/tinyxml/2.6.2.nix
Normal file
|
@ -0,0 +1,61 @@
|
|||
{ stdenv, fetchurl, unzip }:
|
||||
|
||||
let
|
||||
version = "2.6.2";
|
||||
in stdenv.mkDerivation {
|
||||
name = "tinyxml-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/project/tinyxml/tinyxml/${version}/tinyxml_2_6_2.zip";
|
||||
sha256 = "04nmw6im2d1xp12yir8va93xns5iz816pwi25n9cql3g3i8bjsxc";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# add pkgconfig file
|
||||
./2.6.2-add-pkgconfig.patch
|
||||
|
||||
# http://sourceforge.net/tracker/index.php?func=detail&aid=3031828&group_id=13559&atid=313559
|
||||
./2.6.2-entity.patch
|
||||
];
|
||||
|
||||
buildInputs = [ unzip ];
|
||||
buildPhase = ''
|
||||
# build xmltest
|
||||
make
|
||||
|
||||
# build the lib as a shared library
|
||||
g++ -Wall -O2 -shared -fpic tinyxml.cpp \
|
||||
tinyxmlerror.cpp tinyxmlparser.cpp \
|
||||
tinystr.cpp -o libtinyxml.so
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
checkPhase = ''
|
||||
./xmltest
|
||||
result=$?
|
||||
if [[ $result != 0 ]] ; then
|
||||
exit $result
|
||||
fi
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -pv $out/include/
|
||||
mkdir -pv $out/lib/pkgconfig/
|
||||
mkdir -pv $out/share/doc/tinyxml/
|
||||
|
||||
cp -v libtinyxml.so $out/lib/
|
||||
cp -v *.h $out/include/
|
||||
|
||||
substituteInPlace tinyxml.pc --replace "@out@" "$out"
|
||||
substituteInPlace tinyxml.pc --replace "@version@" "${version}"
|
||||
cp -v tinyxml.pc $out/lib/pkgconfig/
|
||||
|
||||
cp -v docs/* $out/share/doc/tinyxml/
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "TinyXML is a simple, small, C++ XML parser that can be easily integrating into other programs.";
|
||||
homepage = "http://www.grinninglizard.com/tinyxml/index.html";
|
||||
license = "free-non-copyleft";
|
||||
};
|
||||
}
|
|
@ -4994,6 +4994,10 @@ let
|
|||
|
||||
telepathy_qt = callPackage ../development/libraries/telepathy/qt { };
|
||||
|
||||
tinyxml = tinyxml2;
|
||||
|
||||
tinyxml2 = callPackage ../development/libraries/tinyxml/2.6.2.nix { };
|
||||
|
||||
tk = callPackage ../development/libraries/tk { };
|
||||
|
||||
tnt = callPackage ../development/libraries/tnt { };
|
||||
|
|
Loading…
Reference in a new issue