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:
parent
968ae90318
commit
33ae9107d8
|
@ -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 \
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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)))
|
||||
|
|
Loading…
Reference in New Issue