gnu: Add tinyxml.

* gnu/packages/xml.scm (tinyxml): New variable.
* gnu/packages/patches/tinyxml-use-stl.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
This commit is contained in:
David Thompson 2015-11-24 13:35:44 -05:00
parent 968ae90318
commit 33ae9107d8
3 changed files with 111 additions and 0 deletions

View File

@ -698,6 +698,7 @@ dist_patch_DATA = \
gnu/packages/patches/texi2html-document-encoding.patch \
gnu/packages/patches/texi2html-i18n.patch \
gnu/packages/patches/tidy-CVE-2015-5522+5523.patch \
gnu/packages/patches/tinyxml-use-stl.patch \
gnu/packages/patches/torsocks-dns-test.patch \
gnu/packages/patches/tvtime-gcc41.patch \
gnu/packages/patches/tvtime-pngoutput.patch \

View File

@ -0,0 +1,41 @@
From a53b6ee4519a7657164610ac14a82c57b1273bf6 Mon Sep 17 00:00:00 2001
From: David Thompson <dthompson2@worcester.edu>
Date: Mon, 23 Nov 2015 06:54:36 -0500
Subject: [PATCH] Use STL.
Software that uses the shared library, such as Kodi, assume that TinyXML was
compiled with STL activated.
---
tinyxml.h | 2 ++
xmltest.cpp | 1 +
2 files changed, 3 insertions(+)
diff --git a/tinyxml.h b/tinyxml.h
index a3589e5..6cbfc7d 100644
--- a/tinyxml.h
+++ b/tinyxml.h
@@ -43,6 +43,8 @@ distribution.
#define DEBUG
#endif
+#define TIXML_USE_STL 1
+
#ifdef TIXML_USE_STL
#include <string>
#include <iostream>
diff --git a/xmltest.cpp b/xmltest.cpp
index 663c157..057dbfe 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -2,6 +2,7 @@
Test program for TinyXML.
*/
+#define TIXML_USE_STL 1
#ifdef TIXML_USE_STL
#include <iostream>
--
2.5.0

View File

@ -511,3 +511,72 @@ Libxml2).")
UTF-8 and UTF-16 encoding.")
;; LGPL 2.0+ with additional exceptions for static linking
(license license:lgpl2.0+)))
;; TinyXML is an unmaintained piece of software, so the patches and build
;; system massaging have no upstream potential.
(define-public tinyxml
(package
(name "tinyxml")
(version "2.6.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/tinyxml/tinyxml_"
(string-join (string-split version #\.) "_")
".tar.gz"))
(sha256
(base32
"14smciid19lvkxqznfig77jxn5s4iq3jpb47vh5a6zcaqp7gvg8m"))
(patches (list (search-patch "tinyxml-use-stl.patch")))))
(build-system gnu-build-system)
;; This library is missing *a lot* of the steps to make it usable, so we
;; have to add them here, like every other distro must do.
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-after 'build 'build-shared-library
(lambda _
(zero? (system* "g++" "-Wall" "-O2" "-shared" "-fpic"
"tinyxml.cpp" "tinyxmlerror.cpp"
"tinyxmlparser.cpp" "tinystr.cpp"
"-o" "libtinyxml.so"))))
(replace 'check
(lambda _ (zero? (system "./xmltest"))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(include (string-append out "/include"))
(lib (string-append out "/lib"))
(pkgconfig (string-append out "/lib/pkgconfig"))
(doc (string-append out "/share/doc")))
;; Install libs and headers.
(install-file "libtinyxml.so" lib)
(install-file "tinystr.h" include)
(install-file "tinyxml.h" include)
;; Generate and install pkg-config file.
(mkdir-p pkgconfig)
;; Software such as Kodi expect this file to be present, but
;; it's not provided in the source code.
(call-with-output-file (string-append pkgconfig "/tinyxml.pc")
(lambda (port)
(format port "prefix=~a
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: TinyXML
Description: A simple, small, C++ XML parser
Version: ~a
Libs: -L${libdir} -ltinyxml
Cflags: -I${includedir}
"
out ,version)))
;; Install docs.
(mkdir-p doc)
(copy-recursively "docs" (string-append doc "tinyxml"))
#t))))))
(synopsis "Small XML parser for C++")
(description "TinyXML is a small and simple XML parsing library for the
C++ programming langauge.")
(home-page "http://www.grinninglizard.com/tinyxml/index.html")
(license license:zlib)))