packages: Add 'search-patches'.
[jackhill/guix/guix.git] / gnu / packages / xml.scm
CommitLineData
d0414883 1;;; GNU Guix --- Functional package management for GNU
74528069 2;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
0899144f 3;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
b715dbac 4;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
10ac0f9f 5;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
6ce212b8 6;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
c7762233 7;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
877a6466 8;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
fe9451c5 9;;; Copyright © 2015 Raimon Grau <raimonster@gmail.com>
d0414883
LC
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
1ffa7090 26(define-module (gnu packages xml)
f0444eaf 27 #:use-module (gnu packages)
0899144f 28 #:use-module (gnu packages autotools)
322cbda7 29 #:use-module (gnu packages compression)
58cc3b38 30 #:use-module (gnu packages gnupg)
f0444eaf
AE
31 #:use-module (gnu packages perl)
32 #:use-module (gnu packages python)
a7fd7b68 33 #:use-module (gnu packages tls)
ad871fc6 34 #:use-module (gnu packages web)
b5b73a82 35 #:use-module ((guix licenses) #:prefix license:)
d0414883
LC
36 #:use-module (guix packages)
37 #:use-module (guix download)
6ce212b8 38 #:use-module (guix build-system cmake)
2a1e82bb 39 #:use-module (guix build-system gnu)
37f9ff63 40 #:use-module (guix build-system perl)
7ce32242 41 #:use-module (guix build-system python)
37f9ff63 42 #:use-module (gnu packages linux))
d0414883
LC
43
44(define-public expat
45 (package
46 (name "expat")
47 (version "2.1.0")
48 (source (origin
49 (method url-fetch)
50 (uri (string-append "mirror://sourceforge/expat/expat/"
51 version "/expat-" version ".tar.gz"))
52 (sha256
53 (base32
99e29da1
MW
54 "11pblz61zyxh68s5pdcbhc30ha1b2vfjd83aiwfg4vc15x3hadw2"))
55 (patches (list (search-patch "expat-CVE-2015-1283.patch")))))
d0414883
LC
56 (build-system gnu-build-system)
57 (home-page "http://www.libexpat.org/")
9e771e3b 58 (synopsis "Stream-oriented XML parser library written in C")
d0414883
LC
59 (description
60 "Expat is an XML parser library written in C. It is a
61stream-oriented parser in which an application registers handlers for
62things the parser might find in the XML document (like start tags).")
63 (license license:expat)))
f0444eaf
AE
64
65(define-public libxml2
66 (package
67 (name "libxml2")
821060f3 68 (version "2.9.3")
f0444eaf
AE
69 (source (origin
70 (method url-fetch)
71 (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-"
72 version ".tar.gz"))
73 (sha256
74 (base32
821060f3 75 "0bd17g6znn2r98gzpjppsqjg33iraky4px923j3k8kdl8qgy7sad"))))
f0444eaf
AE
76 (build-system gnu-build-system)
77 (home-page "http://www.xmlsoft.org/")
35b9e423 78 (synopsis "C parser for XML")
c1944c92 79 (propagated-inputs `(("zlib" ,zlib))) ; libxml2.la says '-lz'.
7ce32242 80 (native-inputs `(("perl" ,perl)))
2a8d4401
LC
81 ;; $XML_CATALOG_FILES lists 'catalog.xml' files found in under the 'xml'
82 ;; sub-directory of any given package.
74528069
LC
83 (native-search-paths (list (search-path-specification
84 (variable "XML_CATALOG_FILES")
85 (separator " ")
86 (files '("xml"))
87 (file-pattern "^catalog\\.xml$")
88 (file-type 'regular))))
2a8d4401 89 (search-paths native-search-paths)
f0444eaf 90 (description
7c125ce0
AK
91 "Libxml2 is the XML C parser and toolkit developed for the Gnome
92project (but it is usable outside of the Gnome platform).")
f0444eaf 93 (license license:x11)))
58cc3b38 94
7ce32242
SB
95(define-public python-libxml2
96 (package (inherit libxml2)
97 (name "python-libxml2")
98 (build-system python-build-system)
99 (arguments
100 `(;; XXX: Tests are specified in 'Makefile.am', but not in 'setup.py'.
101 #:tests? #f
102 #:phases
103 (modify-phases %standard-phases
104 (add-before
105 'build 'configure
106 (lambda* (#:key inputs #:allow-other-keys)
107 (chdir "python")
108 (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
109 "cross-libc" "libc")))
110 (libxml2 (assoc-ref inputs "libxml2")))
111 (substitute* "setup.py"
112 ;; For 'libxml2/libxml/tree.h'.
113 (("ROOT = r'/usr'")
114 (format #f "ROOT = r'~a'" libxml2))
115 ;; For 'iconv.h'.
116 (("/opt/include")
117 (string-append glibc "/include")))))))))
118 (inputs `(("libxml2" ,libxml2)))
119 (synopsis "Python bindings for the libxml2 library")))
120
121(define-public python2-libxml2
122 (package-with-python2 python-libxml2))
123
58cc3b38
AE
124(define-public libxslt
125 (package
126 (name "libxslt")
127 (version "1.1.28")
128 (source (origin
129 (method url-fetch)
130 (uri (string-append "ftp://xmlsoft.org/libxslt/libxslt-"
131 version ".tar.gz"))
132 (sha256
133 (base32
b4a88dc2
MW
134 "13029baw9kkyjgr7q3jccw2mz38amq7mmpr5p3bh775qawd1bisz"))
135 (patches (list (search-patch "libxslt-CVE-2015-7995.patch")))))
58cc3b38
AE
136 (build-system gnu-build-system)
137 (home-page "http://xmlsoft.org/XSLT/index.html")
35b9e423 138 (synopsis "C library for applying XSLT stylesheets to XML documents")
58cc3b38
AE
139 (inputs `(("libgcrypt" ,libgcrypt)
140 ("libxml2" ,libxml2)
95288fcc 141 ("python" ,python-minimal-wrapper)
11e3f107 142 ("zlib" ,zlib)))
58cc3b38 143 (description
35b9e423 144 "Libxslt is an XSLT C library developed for the GNOME project. It is
58cc3b38
AE
145based on libxml for XML parsing, tree manipulation and XPath support.")
146 (license license:x11)))
2a1e82bb
LC
147
148(define-public perl-xml-parser
149 (package
150 (name "perl-xml-parser")
d495634b 151 (version "2.44")
2a1e82bb
LC
152 (source (origin
153 (method url-fetch)
154 (uri (string-append
2b8c5f54 155 "mirror://cpan/authors/id/T/TO/TODDR/XML-Parser-"
2a1e82bb
LC
156 version ".tar.gz"))
157 (sha256
158 (base32
d495634b 159 "05ij0g6bfn27iaggxf8nl5rhlwx6f6p6xmdav6rjcly3x5zd1s8s"))))
2a1e82bb
LC
160 (build-system perl-build-system)
161 (arguments `(#:make-maker-flags
162 (let ((expat (assoc-ref %build-inputs "expat")))
163 (list (string-append "EXPATLIBPATH=" expat "/lib")
164 (string-append "EXPATINCPATH=" expat "/include")))))
165 (inputs `(("expat" ,expat)))
166 (license (package-license perl))
167 (synopsis "Perl bindings to the Expat XML parsing library")
168 (description
169 "This module provides ways to parse XML documents. It is built on top of
170XML::Parser::Expat, which is a lower level interface to James Clark's expat
171library. Each call to one of the parsing methods creates a new instance of
172XML::Parser::Expat which is then used to parse the document. Expat options
173may be provided when the XML::Parser object is created. These options are
174then passed on to the Expat object on each parse call. They can also be given
175as extra arguments to the parse methods, in which case they override options
176given at XML::Parser creation time.")
d495634b 177 (home-page "http://search.cpan.org/dist/XML-Parser")))
37f9ff63 178
7339fbe2 179(define-public perl-libxml
1385ba4f 180 (package
7339fbe2 181 (name "perl-libxml")
1385ba4f
AE
182 (version "0.08")
183 (source (origin
184 (method url-fetch)
185 (uri (string-append
186 "mirror://cpan/authors/id/K/KM/KMACLEOD/libxml-perl-"
187 version ".tar.gz"))
188 (sha256
189 (base32
190 "1jy9af0ljyzj7wakqli0437zb2vrbplqj4xhab7bfj2xgfdhawa5"))))
191 (build-system perl-build-system)
7b81406a 192 (propagated-inputs
1385ba4f
AE
193 `(("perl-xml-parser" ,perl-xml-parser)))
194 (license (package-license perl))
195 (synopsis "Perl SAX parser using XML::Parser")
196 (description
197 "XML::Parser::PerlSAX is a PerlSAX parser using the XML::Parser
198module.")
199 (home-page "http://search.cpan.org/~kmacleod/libxml-perl/lib/XML/Parser/PerlSAX.pm")))
200
3dd6bee1
EB
201(define-public perl-xml-libxml
202 (package
203 (name "perl-xml-libxml")
204 (version "2.0118")
205 (source
206 (origin
207 (method url-fetch)
208 (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/"
209 "XML-LibXML-" version ".tar.gz"))
210 (sha256
211 (base32
212 "170c8dbk4p6jw9is0cria73021yp3hpmhb19p9j0zg2yxwkawr6c"))))
213 (build-system perl-build-system)
214 (propagated-inputs
215 `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
216 ("perl-xml-sax" ,perl-xml-sax)))
217 (inputs
218 `(("libxml2" ,libxml2)))
219 (home-page "http://search.cpan.org/dist/XML-LibXML")
220 (synopsis "Perl interface to libxml2")
221 (description "This module implements a Perl interface to the libxml2
222library which provides interfaces for parsing and manipulating XML files. This
223module allows Perl programmers to make use of the highly capable validating
224XML parser and the high performance DOM implementation.")
225 (license (package-license perl))))
226
f7c4dc2f
RW
227(define-public perl-xml-libxml-simple
228 (package
229 (name "perl-xml-libxml-simple")
230 (version "0.95")
231 (source (origin
232 (method url-fetch)
233 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
234 "XML-LibXML-Simple-" version ".tar.gz"))
235 (sha256
236 (base32
237 "0qqfqj5bgqmh1j4iv8dwl3g00nsmcvf2b7w1d09k9d77rrb249xi"))))
238 (build-system perl-build-system)
239 (propagated-inputs
240 `(("perl-file-slurp-tiny" ,perl-file-slurp-tiny)
241 ("perl-xml-libxml" ,perl-xml-libxml)))
242 (home-page "http://search.cpan.org/dist/XML-LibXML-Simple")
243 (synopsis "XML::LibXML based XML::Simple clone")
244 (description
245 "This package provides the same API as @code{XML::Simple} but is based on
246@code{XML::LibXML}.")
247 (license (package-license perl))))
248
b715dbac
EB
249(define-public perl-xml-namespacesupport
250 (package
251 (name "perl-xml-namespacesupport")
252 (version "1.11")
253 (source
254 (origin
255 (method url-fetch)
256 (uri (string-append "mirror://cpan/authors/id/P/PE/PERIGRIN/"
257 "XML-NamespaceSupport-" version ".tar.gz"))
258 (sha256
259 (base32
260 "1sklgcldl3w6gn706vx1cgz6pm4y5lfgsjxnfqyk20pilgq530bd"))))
261 (build-system perl-build-system)
262 (home-page "http://search.cpan.org/dist/XML-NamespaceSupport")
263 (synopsis "XML namespace support class")
264 (description "This module offers a simple to process namespaced XML
265names (unames) from within any application that may need them. It also helps
266maintain a prefix to namespace URI map, and provides a number of basic
267checks.")
268 (license (package-license perl))))
269
18b8bbb3
EB
270(define-public perl-xml-sax
271 (package
272 (name "perl-xml-sax")
273 (version "0.99")
274 (source
275 (origin
276 (method url-fetch)
277 (uri (string-append "mirror://cpan/authors/id/G/GR/GRANTM/"
278 "XML-SAX-" version ".tar.gz"))
279 (sha256
280 (base32
281 "115dypb50w1l94y3iwihv5nkixbsv1cxiqkd93y4rk5n6s74pc1j"))))
282 (build-system perl-build-system)
283 (propagated-inputs
284 `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
285 ("perl-xml-sax-base" ,perl-xml-sax-base)))
286 (arguments
287 `(#:phases (modify-phases %standard-phases
288 (add-before
40b084a3 289 'install 'augment-path
18b8bbb3
EB
290 ;; The install target tries to load the newly-installed
291 ;; XML::SAX module, but can't find it, so we need to tell
292 ;; perl where to look.
293 (lambda* (#:key outputs #:allow-other-keys)
294 (setenv "PERL5LIB"
295 (string-append (getenv "PERL5LIB") ":"
296 (assoc-ref outputs "out")
297 "/lib/perl5/site_perl")))))))
298 (home-page "http://search.cpan.org/dist/XML-SAX")
299 (synopsis "Perl API for XML")
300 (description "XML::SAX consists of several framework classes for using and
301building Perl SAX2 XML parsers, filters, and drivers.")
302 (license (package-license perl))))
303
1ed6d5bc
EB
304(define-public perl-xml-sax-base
305 (package
306 (name "perl-xml-sax-base")
307 (version "1.08")
308 (source
309 (origin
310 (method url-fetch)
311 (uri (string-append "mirror://cpan/authors/id/G/GR/GRANTM/"
312 "XML-SAX-Base-" version ".tar.gz"))
313 (sha256
314 (base32
315 "17i161rq1ngjlk0c8vdkrkkc56y1pf51k1g54y28py0micqp0qk6"))))
316 (build-system perl-build-system)
317 (home-page "http://search.cpan.org/dist/XML-SAX-Base")
318 (synopsis "Base class for SAX Drivers and Filters")
319 (description "This module has a very simple task - to be a base class for
320PerlSAX drivers and filters. It's default behaviour is to pass the input
321directly to the output unchanged. It can be useful to use this module as a
322base class so you don't have to, for example, implement the characters()
323callback.")
324 (license (package-license perl))))
325
535dc6cf
AE
326(define-public perl-xml-simple
327 (package
328 (name "perl-xml-simple")
329 (version "2.20")
330 (source (origin
331 (method url-fetch)
332 (uri (string-append
333 "mirror://cpan/authors/id/G/GR/GRANTM/XML-Simple-"
334 version ".tar.gz"))
335 (sha256
336 (base32
337 "0jj3jiray1l4pi9wkjcpxjc3v431whdwx5aqnhgdm4i7h3817zsw"))))
338 (build-system perl-build-system)
27ef7f45 339 (propagated-inputs
535dc6cf
AE
340 `(("perl-xml-parser" ,perl-xml-parser)))
341 (license (package-license perl))
342 (synopsis "Perl module for easy reading/writing of XML files")
343 (description
344 "The XML::Simple module provides a simple API layer on top of an
345underlying XML parsing module (either XML::Parser or one of the SAX2
346parser modules).")
347 (home-page "http://search.cpan.org/~grantm/XML-Simple-2.20/lib/XML/Simple.pm")))
348
a2e520af
AE
349(define-public perl-xml-regexp
350 (package
351 (name "perl-xml-regexp")
352 (version "0.04")
353 (source (origin
354 (method url-fetch)
355 (uri (string-append
356 "mirror://cpan/authors/id/T/TJ/TJMATHER/XML-RegExp-"
357 version ".tar.gz"))
358 (sha256
359 (base32
360 "0m7wj00a2kik7wj0azhs1zagwazqh3hlz4255n75q21nc04r06fz"))))
361 (build-system perl-build-system)
362 (inputs
363 `(("perl-xml-parser" ,perl-xml-parser)))
364 (license (package-license perl))
365 (synopsis "Perl regular expressions for XML tokens")
366 (description
367 "XML::RegExp contains regular expressions for the following XML tokens:
368BaseChar, Ideographic, Letter, Digit, Extender, CombiningChar, NameChar,
369EntityRef, CharRef, Reference, Name, NmToken, and AttValue.")
370 (home-page "http://search.cpan.org/~tjmather/XML-RegExp/lib/XML/RegExp.pm")))
371
ad871fc6
AE
372(define-public perl-xml-dom
373 (package
374 (name "perl-xml-dom")
375 (version "1.44")
376 (source (origin
377 (method url-fetch)
378 (uri (string-append
379 "mirror://cpan/authors/id/T/TJ/TJMATHER/XML-DOM-"
380 version ".tar.gz"))
381 (sha256
382 (base32
383 "1r0ampc88ni3sjpzr583k86076qg399arfm9xirv3cw49k3k5bzn"))))
384 (build-system perl-build-system)
f7faff88
AE
385 (propagated-inputs
386 `(("perl-libwww" ,perl-libwww)
ad871fc6 387 ("perl-libxml" ,perl-libxml)
ad871fc6
AE
388 ("perl-xml-regexp" ,perl-xml-regexp)))
389 (license (package-license perl))
390 (synopsis
391 "Perl module for building DOM Level 1 compliant document structures")
392 (description
393 "This module extends the XML::Parser module by Clark Cooper. The
394XML::Parser module is built on top of XML::Parser::Expat, which is a lower
395level interface to James Clark's expat library. XML::DOM::Parser is derived
396from XML::Parser. It parses XML strings or files and builds a data structure
397that conforms to the API of the Document Object Model.")
398 (home-page "http://search.cpan.org/~tjmather/XML-DOM-1.44/lib/XML/DOM.pm")))
399
649e1676
RW
400(define-public perl-xml-compile-tester
401 (package
402 (name "perl-xml-compile-tester")
403 (version "0.90")
404 (source (origin
405 (method url-fetch)
406 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
407 "XML-Compile-Tester-" version ".tar.gz"))
408 (sha256
409 (base32
410 "1bcl8x8cyacqv9yjp97aq9qq85sy8wv78kd8c16yd9yw3by4cpp1"))))
411 (build-system perl-build-system)
412 (propagated-inputs
413 `(("perl-log-report" ,perl-log-report)
414 ("perl-test-deep" ,perl-test-deep)))
415 (home-page "http://search.cpan.org/dist/XML-Compile-Tester")
416 (synopsis "XML::Compile related regression testing")
417 (description
418 "The @code{XML::Compile} module suite has extensive regression testing.
419This module provide functions which simplify writing tests for
420@code{XML::Compile} related distributions.")
421 (license (package-license perl))))
422
b494a5f1
RW
423(define-public perl-xml-compile
424 (package
425 (name "perl-xml-compile")
426 (version "1.51")
427 (source (origin
428 (method url-fetch)
429 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
430 "XML-Compile-" version ".tar.gz"))
431 (sha256
432 (base32
433 "06fj4zf0yh4kf3kx4bhwrmrjr6al40nasasbgfhn8f1zxwkmm8f2"))))
434 (build-system perl-build-system)
435 (propagated-inputs
436 `(("perl-log-report" ,perl-log-report)
437 ("perl-xml-compile-tester" ,perl-xml-compile-tester)
438 ("perl-xml-libxml" ,perl-xml-libxml)
439 ("perl-test-deep" ,perl-test-deep)))
440 (home-page "http://search.cpan.org/dist/XML-Compile")
441 (synopsis "Compilation-based XML processing")
442 (description
443 "@code{XML::Compile} can be used to translate a Perl data-structure into
444XML or XML into a Perl data-structure, both directions under rigid control by
445a schema.")
446 (license (package-license perl))))
447
c1d41b5d
RW
448(define-public perl-xml-compile-cache
449 (package
450 (name "perl-xml-compile-cache")
451 (version "1.04")
452 (source (origin
453 (method url-fetch)
454 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
455 "XML-Compile-Cache-" version ".tar.gz"))
456 (sha256
457 (base32
458 "1689dm54n7wb0n0cl9n77vk0kvg0mcckn2hz9ahigjhvazah8740"))))
459 (build-system perl-build-system)
460 (propagated-inputs
461 `(("perl-log-report" ,perl-log-report)
462 ("perl-xml-compile" ,perl-xml-compile)
463 ("perl-xml-compile-tester" ,perl-xml-compile-tester)
464 ("perl-xml-libxml-simple" ,perl-xml-libxml-simple)))
465 (home-page "http://search.cpan.org/dist/XML-Compile-Cache")
466 (synopsis "Cache compiled XML translators")
467 (description
468 "This package provides methods to cache compiled XML translators.")
469 (license (package-license perl))))
470
baeab9b8
RW
471(define-public perl-xml-compile-soap
472 (package
473 (name "perl-xml-compile-soap")
474 (version "3.13")
475 (source (origin
476 (method url-fetch)
477 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
478 "XML-Compile-SOAP-" version ".tar.gz"))
479 (sha256
480 (base32
481 "08qw63l78040nh37xzapbqp43g6s5l67bvskf3dyyizlarjx5mi4"))))
482 (build-system perl-build-system)
483 (propagated-inputs
484 `(("perl-file-slurp-tiny" ,perl-file-slurp-tiny)
485 ("perl-libwww" ,perl-libwww)
486 ("perl-log-report" ,perl-log-report)
487 ("perl-xml-compile" ,perl-xml-compile)
488 ("perl-xml-compile-cache" ,perl-xml-compile-cache)
489 ("perl-xml-compile-tester" ,perl-xml-compile-tester)))
490 (home-page "http://search.cpan.org/dist/XML-Compile-SOAP")
491 (synopsis "Base-class for SOAP implementations")
492 (description
493 "This module provides a class to handle the SOAP protocol. The first
494implementation is @url{SOAP1.1,
495http://www.w3.org/TR/2000/NOTE-SOAP-20000508/}, which is still most often
496used.")
497 (license (package-license perl))))
498
6a914948
RW
499(define-public perl-xml-compile-wsdl11
500 (package
501 (name "perl-xml-compile-wsdl11")
502 (version "3.04")
503 (source (origin
504 (method url-fetch)
505 (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
506 "XML-Compile-WSDL11-" version ".tar.gz"))
507 (sha256
508 (base32
509 "0pyikwnfwpangvnkf5dbdagy4z93ag9824f1ax5qaibc3ghca8kv"))))
510 (build-system perl-build-system)
511 (propagated-inputs
512 `(("perl-log-report" ,perl-log-report)
513 ("perl-xml-compile" ,perl-xml-compile)
514 ("perl-xml-compile-cache" ,perl-xml-compile-cache)
515 ("perl-xml-compile-soap" ,perl-xml-compile-soap)))
516 (home-page "http://search.cpan.org/dist/XML-Compile-WSDL11")
517 (synopsis "Create SOAP messages defined by WSDL 1.1")
518 (description
519 "This module understands WSDL version 1.1. A WSDL file defines a set of
520messages to be send and received over SOAP connections. This involves
521encoding of the message to be send into XML, sending the message to the
522server, collect the answer, and finally decoding the XML to Perl.")
523 (license (package-license perl))))
524
6ce212b8
RW
525(define-public pugixml
526 (package
527 (name "pugixml")
528 (version "1.6")
529 (source
530 (origin
531 (method url-fetch)
532 (uri (string-append "https://github.com/zeux/pugixml/archive/v"
533 version ".tar.gz"))
534 (file-name (string-append name "-" version ".tar.gz"))
535 (sha256
536 (base32
537 "0czbcv9aqf2rw3s9cljz2wb1f4zbhd07wnj7ykklklccl0ipfnwi"))))
538 (build-system cmake-build-system)
539 (arguments
540 `(#:tests? #f
541 #:out-of-source? #f
542 #:phases (modify-phases %standard-phases
543 (add-before
544 'configure 'chdir
545 (lambda _
546 (chdir "scripts")
547 #t)))))
548 (home-page "http://pugixml.org")
549 (synopsis "Light-weight, simple and fast XML parser for C++ with XPath support")
550 (description
551 "pugixml is a C++ XML processing library, which consists of a DOM-like
552interface with rich traversal/modification capabilities, a fast XML parser
553which constructs the DOM tree from an XML file/buffer, and an XPath 1.0
554implementation for complex data-driven tree queries. Full Unicode support is
555also available, with Unicode interface variants and conversions between
556different Unicode encodings which happen automatically during
557parsing/saving.")
558 (license license:expat)))
559
37f9ff63
AE
560(define-public xmlto
561 (package
562 (name "xmlto")
877a6466 563 (version "0.0.28")
37f9ff63
AE
564 (source
565 (origin
566 (method url-fetch)
567 (uri (string-append
568 "https://fedorahosted.org/releases/x/m/xmlto/xmlto-"
569 version ".tar.bz2"))
570 (sha256
571 (base32
877a6466 572 "0xhj8b2pwp4vhl9y16v3dpxpsakkflfamr191mprzsspg4xdyc0i"))))
37f9ff63 573 (build-system gnu-build-system)
ae0c1202
LC
574 (arguments
575 ;; Make sure the reference to util-linux's 'getopt' is kept in 'xmlto'.
576 '(#:configure-flags (list (string-append "GETOPT="
577 (assoc-ref %build-inputs
578 "util-linux")
579 "/bin/getopt"))))
37f9ff63 580 (inputs
ae0c1202
LC
581 `(("util-linux" ,util-linux) ; for 'getopt'
582 ("libxml2" ,libxml2) ; for 'xmllint'
583 ("libxslt" ,libxslt))) ; for 'xsltproc'
37f9ff63
AE
584 (home-page "http://cyberelk.net/tim/software/xmlto/")
585 (synopsis "Front-end to an XSL toolchain")
586 (description
587 "Xmlto is a front-end to an XSL toolchain. It chooses an appropriate
588stylesheet for the conversion you want and applies it using an external
589XSL-T processor. It also performs any necessary post-processing.")
590 (license license:gpl2+)))
0899144f
AE
591
592(define-public xmlsec
593 (package
594 (name "xmlsec")
595 (version "1.2.20")
596 (source (origin
597 (method url-fetch)
598 (uri (string-append "https://www.aleksey.com/xmlsec/download/"
599 name "1-" version ".tar.gz"))
600 (sha256
601 (base32
602 "01bkbv2y3x8d1sf4dcln1x3y2jyj391s3208d9a2ndhglly5j89j"))))
603 (build-system gnu-build-system)
604 (propagated-inputs ; according to xmlsec1.pc
605 `(("libxml2" ,libxml2)
606 ("libxslt" ,libxslt)))
607 (inputs
608 `(("gnutls" ,gnutls)
609 ("libgcrypt" ,libgcrypt)
610 ("libltdl" ,libltdl)))
611 (home-page "http://www.libexpat.org/")
612 (synopsis "XML Security Library")
613 (description
614 "The XML Security Library is a C library based on Libxml2. It
615supports XML security standards such as XML Signature, XML Encryption,
616Canonical XML (part of Libxml2) and Exclusive Canonical XML (part of
617Libxml2).")
618 (license (license:x11-style "file://COPYING"
619 "See 'COPYING' in the distribution."))))
96f8d991
RW
620
621(define-public minixml
622 (package
623 (name "minixml")
624 (version "2.9")
625 (source (origin
626 (method url-fetch)
627 (uri (string-append "http://www.msweet.org/files/project3/mxml-"
628 version ".tar.gz"))
629 (sha256
630 (base32
631 "14pzhlfidj5v1qbxy7a59yn4jz9pnjrs2zwalz228jsq7ijm9vfd"))))
632 (build-system gnu-build-system)
633 (arguments
634 `(#:tests? #f)) ;no "check" target
635 (home-page "http://www.minixml.org/")
636 (synopsis "Small XML parsing library")
637 (description
638 "Mini-XML is a small C library to read and write XML files and strings in
639UTF-8 and UTF-16 encoding.")
640 ;; LGPL 2.0+ with additional exceptions for static linking
641 (license license:lgpl2.0+)))
33ae9107
DT
642
643;; TinyXML is an unmaintained piece of software, so the patches and build
644;; system massaging have no upstream potential.
645(define-public tinyxml
646 (package
647 (name "tinyxml")
648 (version "2.6.2")
649 (source (origin
650 (method url-fetch)
651 (uri (string-append "mirror://sourceforge/tinyxml/tinyxml_"
652 (string-join (string-split version #\.) "_")
653 ".tar.gz"))
654 (sha256
655 (base32
656 "14smciid19lvkxqznfig77jxn5s4iq3jpb47vh5a6zcaqp7gvg8m"))
657 (patches (list (search-patch "tinyxml-use-stl.patch")))))
658 (build-system gnu-build-system)
659 ;; This library is missing *a lot* of the steps to make it usable, so we
660 ;; have to add them here, like every other distro must do.
661 (arguments
662 `(#:phases
663 (modify-phases %standard-phases
664 (delete 'configure)
665 (add-after 'build 'build-shared-library
666 (lambda _
667 (zero? (system* "g++" "-Wall" "-O2" "-shared" "-fpic"
668 "tinyxml.cpp" "tinyxmlerror.cpp"
669 "tinyxmlparser.cpp" "tinystr.cpp"
670 "-o" "libtinyxml.so"))))
671 (replace 'check
672 (lambda _ (zero? (system "./xmltest"))))
673 (replace 'install
674 (lambda* (#:key outputs #:allow-other-keys)
675 (let* ((out (assoc-ref outputs "out"))
676 (include (string-append out "/include"))
677 (lib (string-append out "/lib"))
678 (pkgconfig (string-append out "/lib/pkgconfig"))
679 (doc (string-append out "/share/doc")))
680 ;; Install libs and headers.
681 (install-file "libtinyxml.so" lib)
682 (install-file "tinystr.h" include)
683 (install-file "tinyxml.h" include)
684 ;; Generate and install pkg-config file.
685 (mkdir-p pkgconfig)
686 ;; Software such as Kodi expect this file to be present, but
687 ;; it's not provided in the source code.
688 (call-with-output-file (string-append pkgconfig "/tinyxml.pc")
689 (lambda (port)
690 (format port "prefix=~a
691exec_prefix=${prefix}
692libdir=${exec_prefix}/lib
693includedir=${prefix}/include
694
695Name: TinyXML
696Description: A simple, small, C++ XML parser
697Version: ~a
698Libs: -L${libdir} -ltinyxml
699Cflags: -I${includedir}
700"
701 out ,version)))
702 ;; Install docs.
703 (mkdir-p doc)
704 (copy-recursively "docs" (string-append doc "tinyxml"))
705 #t))))))
706 (synopsis "Small XML parser for C++")
707 (description "TinyXML is a small and simple XML parsing library for the
708C++ programming langauge.")
709 (home-page "http://www.grinninglizard.com/tinyxml/index.html")
710 (license license:zlib)))
fe9451c5
RG
711
712(define-public xmlstarlet
713 (package
714 (name "xmlstarlet")
715 (version "1.6.1")
716 (source
717 (origin
718 (method url-fetch)
719 (uri (string-append "mirror://sourceforge/xmlstar/xmlstarlet/"
720 version "/xmlstarlet-" version ".tar.gz"))
721 (sha256
722 (base32
723 "1jp737nvfcf6wyb54fla868yrr39kcbijijmjpyk4lrpyg23in0m"))))
724 (build-system gnu-build-system)
725 (inputs
726 `(("libxslt" ,libxslt)
727 ("libxml2" ,libxml2)))
728 (home-page "http://xmlstar.sourceforge.net/")
729 (synopsis "Command line XML toolkit")
730 (description "XMLStarlet is a set of command line utilities which can be
731used to transform, query, validate, and edit XML documents. XPath is used to
732match and extract data, and elements can be added, deleted or modified using
733XSLT and EXSLT.")
734 (license license:x11)))