projects/guix·blob bootstrap-team · refs

2074 lines · 83.3 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <[email protected]>
3;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2024 Ricardo Wurmus <[email protected]>
4;;; Copyright © 2015, 2016 Ben Woodcroft <[email protected]>
5;;; Copyright © 2015 Roel Janssen <[email protected]>
6;;; Copyright © 2016 Jelle Licht <[email protected]>
7;;; Copyright © 2016 Alex Griffin <[email protected]>
8;;; Copyright © 2016, 2018, 2019, 2020, 2023, 2025 Efraim Flashner <[email protected]>
9;;; Copyright © 2016 Nikita <[email protected]>
10;;; Copyright © 2016, 2020 Marius Bakke <[email protected]>
11;;; Copyright © 2017 Eric Bavier <[email protected]>
12;;; Copyright © 2017 Rene Saavedra <[email protected]>
13;;; Copyright © 2017,2019 Hartmut Goebel <[email protected]>
14;;; Copyright © 2017 Kei Kebreau <[email protected]>
15;;; Copyright © 2017 Alex Vong <[email protected]>
16;;; Copyright © 2018, 2019, 2020, 2021 Tobias Geerinckx-Rice <[email protected]>
17;;; Copyright © 2018 Pierre Neidhardt <[email protected]>
18;;; Copyright © 2018 Meiyo Peng <[email protected]>
19;;; Copyright © 2019 Yoshinori Arai <[email protected]>
20;;; Copyright © 2019 Mădălin Ionel Patrașcu <[email protected]>
21;;; Copyright © 2019 Wiktor Żelazny <[email protected]>
22;;; Copyright © 2020 Joseph LaFreniere <[email protected]>
23;;; Copyright © 2020 Maxim Cournoyer <[email protected]>
24;;; Copyright © 2021 Jean-Baptiste Volatier <[email protected]>
25;;; Copyright © 2021 Simon Tournier <[email protected]>
26;;; Copyright © 2021 Felix Gruber <[email protected]>
27;;; Copyright © 2021 Bonface Munyoki Kilyungi <[email protected]>
28;;; Copyright © 2021 Tanguy Le Carrour <[email protected]>
29;;; Copyright © 2022, 2024 kiasoc5 <[email protected]>
30;;; Copyright © 2022 Gabriel Wicki <[email protected]>
31;;; Copyright © 2022 Greg Hogan <[email protected]>
32;;; Copyright © 2022 M <[email protected]>
33;;; Copyright © 2022 Paul A. Patience <[email protected]>
34;;; Copyright © 2023 Reza Housseini <[email protected]>
35;;; Copyright © 2023 Hilton Chain <[email protected]>
36;;; Copyright © 2023, 2024 Zheng Junjie <[email protected]>
37;;; Copyright © 2024 John Kehayias <[email protected]>
38;;; Copyright © 2024 Timotej Lazar <[email protected]>
39;;; Copyright © 2024-2025 Sharlatan Hellseher <[email protected]>
40;;; Copyright © 2024, 2025 Ashish SHUKLA <[email protected]>
41;;; Copyright © 2024 Artyom V. Poptsov <[email protected]>
42;;; Copyright © 2025 John Khoo <[email protected]>
43;;;
44;;; This file is part of GNU Guix.
45;;;
46;;; GNU Guix is free software; you can redistribute it and/or modify it
47;;; under the terms of the GNU General Public License as published by
48;;; the Free Software Foundation; either version 3 of the License, or (at
49;;; your option) any later version.
50;;;
51;;; GNU Guix is distributed in the hope that it will be useful, but
52;;; WITHOUT ANY WARRANTY; without even the implied warranty of
53;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
54;;; GNU General Public License for more details.
55;;;
56;;; You should have received a copy of the GNU General Public License
57;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
58
59(define-module (gnu packages textutils)
60 #:use-module ((guix licenses) #:prefix license:)
61 #:use-module (guix build-system ant)
62 #:use-module (guix build-system cmake)
63 #:use-module (guix build-system gnu)
64 #:use-module (guix build-system go)
65 #:use-module (guix build-system perl)
66 #:use-module (guix build-system python)
67 #:use-module (guix build-system pyproject)
68 #:use-module (guix download)
69 #:use-module (guix gexp)
70 #:use-module (guix git-download)
71 #:use-module (guix packages)
72 #:use-module (guix utils)
73 #:use-module (gnu packages)
74 #:use-module (gnu packages autotools)
75 #:use-module (gnu packages base)
76 #:use-module (gnu packages check)
77 #:use-module (gnu packages certs)
78 #:use-module (gnu packages compression)
79 #:use-module (gnu packages gcc)
80 #:use-module (gnu packages gettext)
81 #:use-module (gnu packages golang)
82 #:use-module (gnu packages golang-build)
83 #:use-module (gnu packages golang-check)
84 #:use-module (gnu packages golang-compression)
85 #:use-module (gnu packages golang-crypto)
86 #:use-module (gnu packages golang-maths)
87 #:use-module (gnu packages golang-web)
88 #:use-module (gnu packages golang-xyz)
89 #:use-module (gnu packages java)
90 #:use-module (gnu packages julia)
91 #:use-module (gnu packages ncurses)
92 #:use-module (gnu packages nss)
93 #:use-module (gnu packages pcre)
94 #:use-module (gnu packages perl)
95 #:use-module (gnu packages pkg-config)
96 #:use-module (gnu packages python)
97 #:use-module (gnu packages python-build)
98 #:use-module (gnu packages python-check)
99 #:use-module (gnu packages python-web)
100 #:use-module (gnu packages python-xyz)
101 #:use-module (gnu packages readline)
102 #:use-module (gnu packages ruby)
103 #:use-module (gnu packages serialization)
104 #:use-module (gnu packages slang)
105 #:use-module (gnu packages sphinx)
106 #:use-module (gnu packages version-control)
107 #:use-module (gnu packages web)
108 #:use-module (gnu packages xml)
109 #:use-module (gnu packages xorg)
110 #:use-module (srfi srfi-1))
111
112(define-public dos2unix
113 (package
114 (name "dos2unix")
115 (version "7.5.2")
116 (source
117 (origin
118 (method url-fetch)
119 (uri (string-append "https://waterlan.home.xs4all.nl/dos2unix/"
120 "dos2unix-" version ".tar.gz"))
121 (sha256
122 (base32 "0fmzqhwq5y14gv5p4kin5flv6g1hvbv0mhlniys2wi08cr244ir6"))))
123 (build-system gnu-build-system)
124 (arguments
125 (list #:make-flags
126 #~(list (string-append "CC=" #$(cc-for-target))
127 (string-append "prefix=" #$output))
128 #:phases
129 #~(modify-phases %standard-phases
130 (delete 'configure)))) ; no configure script
131 (native-inputs
132 (list gettext-minimal perl))
133 (home-page "https://waterlan.home.xs4all.nl/dos2unix.html")
134 (synopsis "DOS/Mac to Unix and vice versa text file format converter")
135 (description
136 "dos2unix is a tool to convert line breaks in a text file from Unix format
137to DOS format and vice versa.")
138 (license license:bsd-2)))
139
140(define-public recode
141 (package
142 (name "recode")
143 (version "3.7.6")
144 (source
145 (origin
146 (method url-fetch)
147 (uri (string-append "https://github.com/rrthomas/recode/releases/"
148 "download/v" version "/recode-" version ".tar.gz"))
149 (sha256
150 (base32 "0m59sd1ca0zw1aydpc3m8sw03nc885knmccqryg7byzmqs585ia6"))))
151 (build-system gnu-build-system)
152 (native-inputs
153 (list python python-cython))
154 (home-page "https://github.com/rrthomas/recode")
155 (synopsis "Text encoding converter")
156 (description "The Recode library converts files between character sets and
157usages. It recognises or produces over 200 different character sets (or about
158300 if combined with an iconv library) and transliterates files between almost
159any pair. When exact transliteration are not possible, it gets rid of
160offending characters or falls back on approximations. The recode program is a
161handy front-end to the library.")
162 (license license:gpl3+)))
163
164(define-public enca
165 (package
166 (name "enca")
167 (version "1.19")
168 (source
169 (origin
170 (method git-fetch)
171 (uri (git-reference
172 (url "https://github.com/nijel/enca")
173 (commit version)))
174 (file-name (git-file-name name version))
175 (sha256
176 (base32 "19q7cwwxmmk5j9438bsqdpjvdjawsd3zmw1zyqgi7s4m0rasr3ah"))))
177 (build-system gnu-build-system)
178 ;; enca-1.19 tests fail with recent recode.
179 ;(inputs `(("recode" ,recode)))
180 (home-page "https://github.com/nijel/enca")
181 (synopsis "Text encoding detection tool")
182 (description "Enca (Extremely Naive Charset Analyser) consists of libenca,
183an encoding detection library, and enca, a command line frontend, integrating
184libenca and several charset conversion libraries and tools.")
185 (license license:gpl2)))
186
187;; Newer utf8proc depends on julia for tests. Since julia also depends on
188;; utf8proc, a dependency cycle is created. This bootstrap variant of utf8proc
189;; disables tests.
190(define-public utf8proc-bootstrap
191 (hidden-package
192 (package
193 (name "utf8proc-bootstrap")
194 (version "2.10.0")
195 (source
196 (origin
197 (method git-fetch)
198 (uri (git-reference
199 (url "https://github.com/JuliaStrings/utf8proc")
200 (commit (string-append "v" version))))
201 (file-name (git-file-name name version))
202 (sha256
203 (base32 "1n1k67x39sk8xnza4w1xkbgbvgb1g7w2a7j2qrqzqaw1lyilqsy2"))))
204 (build-system gnu-build-system)
205 (arguments
206 (list #:tests? #f ;To break dependency cycle.
207 #:make-flags
208 #~(list (string-append "CC=" #$(cc-for-target))
209 (string-append "prefix=" #$output))
210 #:phases
211 #~(modify-phases %standard-phases
212 ;; No configure script.
213 (delete 'configure))))
214 (home-page "https://juliastrings.github.io/utf8proc/")
215 (synopsis "C library for processing UTF-8 Unicode data")
216 (description
217 "@code{utf8proc} is a small C library that provides Unicode normalization,
218case-folding, and other operations for data in the UTF-8 encoding.")
219 (license license:expat))))
220
221(define-public utf8proc
222 (package
223 (inherit utf8proc-bootstrap)
224 (name "utf8proc")
225 (native-inputs
226 (let ((UNICODE_VERSION "16.0.0")) ; defined in data/Makefile
227 ;; Only if the tests will be run should these be added.
228 (if (and (%current-system)
229 (supported-package? julia))
230 ;; Test data that is otherwise downloaded with curl.
231 (list (origin
232 (method url-fetch)
233 (uri (string-append
234 "https://www.unicode.org/Public/"
235 UNICODE_VERSION "/ucd/NormalizationTest.txt"))
236 (sha256
237 (base32
238 "1cffwlxgn6sawxb627xqaw3shnnfxq0v7cbgsld5w1z7aca9f4fq")))
239 (origin
240 (method url-fetch)
241 (uri (string-append
242 "https://www.unicode.org/Public/"
243 UNICODE_VERSION "/ucd/auxiliary/GraphemeBreakTest.txt"))
244 (sha256
245 (base32
246 "1d9w6vdfxakjpp38qjvhgvbl2qx0zv5655ph54dhdb3hs9a96azf")))
247 (origin
248 (method url-fetch)
249 (uri (string-append
250 "https://www.unicode.org/Public/"
251 UNICODE_VERSION "/ucd/DerivedCoreProperties.txt"))
252 (sha256
253 (base32
254 "1gfsq4vdmzi803i2s8ih7mm4fgs907kvkg88kvv9fi4my9hm3lrr")))
255 ;; For tests.
256 julia
257 perl
258 ;; TODO Move to ruby@3 on the next rebuild cycle.
259 ruby-2.7)
260 '())))
261 (arguments
262 (if (this-package-native-input "julia")
263 (strip-keyword-arguments
264 '(#:tests?)
265 (substitute-keyword-arguments (package-arguments utf8proc-bootstrap)
266 ((#:phases phases '%standard-phases)
267 #~(modify-phases #$phases
268 (add-before 'check 'check-data
269 (lambda* (#:key inputs native-inputs #:allow-other-keys)
270 (for-each (lambda (i)
271 (copy-file (assoc-ref (or native-inputs inputs) i)
272 (string-append "data/" i)))
273 '("NormalizationTest.txt" "GraphemeBreakTest.txt"
274 "DerivedCoreProperties.txt"))))))))
275 (substitute-keyword-arguments (package-arguments utf8proc-bootstrap)
276 ((#:tests? _ #t) #f))))
277 (properties
278 (alist-delete 'hidden? (package-properties utf8proc-bootstrap)))))
279
280(define-public libconfuse
281 (package
282 (name "libconfuse")
283 (version "3.3")
284 (source
285 (origin
286 (method url-fetch)
287 (uri (string-append "https://github.com/martinh/libconfuse/"
288 "releases/download/v" version
289 "/confuse-" version ".tar.xz"))
290 (sha256
291 (base32 "043hqqykpprgrkw9s2hbdlxr308a7yxwsgxj4m8aadg1401hmm8x"))
292 (patches
293 (search-patches "libconfuse-CVE-2022-40320.patch"))))
294 (build-system gnu-build-system)
295 (arguments
296 '(#:configure-flags '("--disable-static")))
297 (home-page "https://github.com/martinh/libconfuse")
298 (synopsis "Configuration file parser library")
299 (description "libconfuse is a configuration file parser library. It
300supports sections and (lists of) values (strings, integers, floats, booleans
301or other sections), as well as some other features (such as
302single/double-quoted strings, environment variable expansion, functions and
303nested include statements).")
304 (license license:isc)))
305
306(define-public libgtextutils
307 (package
308 (name "libgtextutils")
309 (version "0.7")
310 (source
311 (origin
312 (method url-fetch)
313 (uri (string-append
314 "https://github.com/agordon/libgtextutils/releases/download/"
315 version "/libgtextutils-" version ".tar.gz"))
316 (sha256
317 (base32 "0jiybkb2z58wa2msvllnphr4js2hvjvh988pavb3mzkgr6ihwbkr"))))
318 (build-system gnu-build-system)
319 (arguments
320 `(#:phases
321 (modify-phases %standard-phases
322 (replace 'bootstrap
323 (lambda _ (invoke "sh" "reconf")))
324 (add-after 'set-paths 'hide-default-gcc
325 (lambda* (#:key inputs #:allow-other-keys)
326 (let ((gcc (assoc-ref inputs "gcc")))
327 ;; Remove the default GCC from CPLUS_INCLUDE_PATH to prevent
328 ;; conflicts with the GCC 5 input.
329 (setenv "CPLUS_INCLUDE_PATH"
330 (string-join
331 (delete (string-append gcc "/include/c++")
332 (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
333 ":"))
334 #t))))))
335 (native-inputs
336 `(("autoconf" ,autoconf)
337 ("automake" ,automake)
338 ("gcc@5" ,gcc-5) ; doesn't build with later versions
339 ("libtool" ,libtool)))
340 (home-page "https://github.com/agordon/libgtextutils")
341 (synopsis "Gordon's text utils library")
342 (description
343 "libgtextutils is a text utilities library used by the fastx toolkit from
344the Hannon Lab.")
345 (license license:agpl3+)))
346
347(define-public libxo
348 (package
349 (name "libxo")
350 (version "1.7.5")
351 (source
352 (origin
353 (method git-fetch)
354 (uri (git-reference
355 (url "https://github.com/Juniper/libxo")
356 (commit version)))
357 (file-name (git-file-name name version))
358 (sha256
359 (base32 "115jv067msym0lsxkiz95ddvspd6smvww37248xkqyin0rxb2m0j"))
360 (snippet
361 '(for-each
362 delete-file
363 '("xohtml/external/jquery.js"
364 "xohtml/external/jquery.qtip.css"
365 "xohtml/external/jquery.qtip.js")))))
366 (build-system gnu-build-system)
367 (arguments
368 (list
369 #:modules '((guix build gnu-build-system)
370 (guix build minify-build-system)
371 (guix build utils)
372 (ice-9 match))
373 #:imported-modules
374 `(,@%default-gnu-imported-modules
375 (guix build minify-build-system))
376 #:phases
377 '(modify-phases (@ (guix build gnu-build-system) %standard-phases)
378 (add-after 'unpack 'process-javascript
379 (lambda* (#:key inputs #:allow-other-keys)
380 (with-directory-excursion "xohtml/external"
381 (for-each (match-lambda
382 ((source . target)
383 (minify source #:target target)))
384 `((,(assoc-ref inputs "js-jquery")
385 . "jquery.js")
386 (,(assoc-ref inputs "js-qtip2")
387 . "jquery.qtip.js")
388 (,(assoc-ref inputs "js-qtip2.css")
389 . "jquery.qtip.css")))))))))
390 (inputs
391 `(("perl", perl)
392 ("js-jquery"
393 ,(origin
394 (method url-fetch)
395 (uri "https://code.jquery.com/jquery-1.7.0.js")
396 (sha256
397 (base32
398 "1qz3jmzg5ac6nkgivzyjgd7rr3vvkwzqv525s080mx10hvn8a63w"))))
399 ("js-qtip2"
400 ,(origin
401 (method url-fetch)
402 (uri "https://cdnjs.cloudflare.com/ajax/libs/qtip2/2.1.1/jquery.qtip.js")
403 (sha256
404 (base32
405 "05aq2x5hd8jnpnhkn41ivsbdg3rqmk093bb2vqzswbihvsizyx64"))))
406 ("js-qtip2.css"
407 ,(origin
408 (method url-fetch)
409 (uri "https://cdnjs.cloudflare.com/ajax/libs/qtip2/2.1.1/jquery.qtip.css")
410 (sha256
411 (base32
412 "18h10klb84jqpasvjymlaskj0442wcain434iwydikpdxmrr7g0n"))))))
413 (native-inputs
414 `(("autoconf" ,autoconf)
415 ("automake" ,automake)
416 ("esbuild" ,esbuild)
417 ("libtool" ,libtool)))
418 (home-page "https://juniper.github.io/libxo/libxo-manual.html")
419 (synopsis "Library for Generating Text, XML, JSON, and HTML Output")
420 (description
421 "This package implements the functionality to generate text, XML,
422JSON, and HTML output using a common set of function calls. The caller
423decides at run time which output style should be produced. Afterwards, the caller
424calls the function @code{xo_emit} to produce output in a format described using
425a format string.")
426 ;; license:expat: jquery and qtip2.
427 (license (list license:bsd-2 license:expat))))
428
429(define-public cityhash
430 (let ((commit "8af9b8c"))
431 (package
432 (name "cityhash")
433 (version (string-append "1.1-2." commit))
434 (source (origin
435 (method git-fetch)
436 (uri (git-reference
437 (url "https://github.com/google/cityhash")
438 (commit commit)))
439 (file-name (string-append name "-" version ".tar.gz"))
440 (sha256
441 (base32
442 "0n6skf5dv8yfl1ckax8dqhvsbslkwc9158zf2ims0xqdvzsahbi6"))))
443 (build-system gnu-build-system)
444 (arguments
445 '(#:make-flags (list "CXXFLAGS=-g -O3")
446 #:phases
447 (modify-phases %standard-phases
448 ;; citycrc is not installed by default but is used by some
449 ;; programs.
450 (add-after 'install 'install-citycrc
451 (lambda* (#:key outputs #:allow-other-keys)
452 (let* ((out (assoc-ref outputs "out"))
453 (include (string-append out "/include")))
454 (install-file "src/citycrc.h" include))
455 #t)))))
456 (home-page "https://github.com/google/cityhash")
457 (synopsis "C++ hash functions for strings")
458 (description
459 "CityHash provides hash functions for strings. The functions mix the
460input bits thoroughly but are not suitable for cryptography.")
461 (license license:expat))))
462
463(define-public ustr
464 (package
465 (name "ustr")
466 (version "1.0.4")
467 (source (origin
468 (method url-fetch)
469 (uri (string-append "http://www.and.org/ustr/" version
470 "/ustr-" version ".tar.bz2"))
471 (sha256
472 (base32
473 "1i623ygdj7rkizj7985q9d6vj5amwg686aqb5j3ixpkqkyp6xbrx"))
474 (patches (search-patches "ustr-fix-build-with-gcc-5.patch"))))
475 (build-system gnu-build-system)
476 (arguments
477 `(#:make-flags
478 (list (string-append "CC=" ,(cc-for-target))
479 "HIDE="
480 ;; Override "/sbin/ldconfig" with "echo" because we don't need
481 ;; "ldconfig".
482 "LDCONFIG=echo"
483 (string-append "prefix=" (assoc-ref %outputs "out"))
484 "all-shared")
485 #:phases
486 (modify-phases %standard-phases
487 (add-after 'unpack 'fix-cross-compilation
488 ;; The Makefile contains more insults than cross-compilation support.
489 ;; It poorly reinvents autotools by compiling C programmes with $CC,
490 ;; then tries to run them during the build. Hard-code the results.
491 (lambda _
492 (substitute* "Makefile"
493 (("\\./autoconf_64b")
494 ,(if (target-64bit? (or (%current-target-system)
495 (%current-system)))
496 "echo 1"
497 "echo 0"))
498 (("\\./autoconf_vsnprintf") "echo 0"))))
499 (add-after 'unpack 'omit-static-libraries
500 ;; These are needed to build & test ustr, but don't install them.
501 (lambda _
502 (substitute* "Makefile"
503 ((".*install.*LIB_STATIC.*") ""))))
504 (add-after 'unpack 'disable-check-for-stdint
505 (lambda _
506 ;; Of course we have stdint.h, just not in /usr/include
507 (substitute* '("Makefile"
508 "ustr-import.in")
509 (("-f \"/usr/include/stdint.h\"") "-z \"\""))
510 #t))
511 ;; No configure script
512 (delete 'configure))))
513 (home-page "http://www.and.org/ustr/")
514 (synopsis "String library with very low memory overhead")
515 (description
516 "Ustr is a string library for C with very low memory overhead.")
517 ;; Quoted from the home page: "The License for the code is MIT, new-BSD,
518 ;; LGPL, etc. ... if you need another license to help compatibility, just
519 ;; ask for it. It's basically public domain, without all the legal
520 ;; problems for everyone that trying to make something public domain
521 ;; entails."
522 (license license:public-domain)))
523
524(define-public ascii2binary
525 (package
526 (name "ascii2binary")
527 (version "2.14")
528 (source
529 (origin
530 (method url-fetch)
531 (uri (string-append "http://billposer.org/Software/Downloads/"
532 "ascii2binary-" version ".tar.bz2"))
533 (sha256
534 (base32 "0dc9fxcdmppbs9s06jvq61zbk552laxps0xyk098gj41697ihd96"))))
535 (build-system gnu-build-system)
536 (native-inputs
537 (list gettext-minimal autoconf automake))
538 (arguments (list #:phases
539 #~(modify-phases %standard-phases
540 ;; AC_FUNC_MALLOC and AC_FUNC_REALLOC usually unneeded
541 ;; see https://lists.gnu.org/archive/html/autoconf/2003-02/msg00017.html
542 (add-after 'unpack 'fix-rpl_malloc
543 (lambda _
544 (substitute* "configure.ac"
545 (("AC_FUNC_MALLOC") "")
546 (("AC_FUNC_REALLOC") ""))
547 ;; let bootstrap phase run.
548 (delete-file "./configure"))))))
549 (home-page "https://billposer.org/Software/a2b.html")
550 (synopsis "Convert between ASCII, hexadecimal and binary representations")
551 (description "The two programs are useful for generating test data, for
552inspecting binary files, and for interfacing programs that generate textual
553output to programs that require binary input and conversely. They can also be
554useful when it is desired to reformat numbers.
555
556@itemize
557
558@item @command{ascii2binary} reads input consisting of ascii or hexadecimal
559 representation numbers separated by whitespace and produces as output
560 the binary equivalents. The type and precision of the binary output
561 is selected using command line flags.
562
563@item @command{binary2ascii} reads input consisting of binary numbers
564 and converts them to their ascii or hexadecimal representation.
565 Command line flags specify the type and size of the binary numbers
566 and provide control over the format of the output.
567 Unsigned integers may be written out in binary, octal, decimal,
568 or hexadecimal.
569
570 Signed integers may be written out only in binary or decimal. Floating
571 point numbers may be written out only decimal, either in standard or
572 scientific notation. (If you want to examine the binary representation
573 of floating point numbers, just treat the input as a sequence of unsigned
574 characters.)
575
576@end itemize")
577 (license license:gpl3)))
578
579(define-public uniutils
580 (package
581 (name "uniutils")
582 (version "2.28")
583 (source
584 (origin
585 (method url-fetch)
586 (uri (string-append "https://billposer.org/Software/Downloads/"
587 "uniutils-" version ".tar.bz2"))
588 (sha256
589 (base32 "0z4ibnd2zzya489vl84cfh82bmdwdhf0isf1myqwrs3s9s0vqyyn"))))
590 (build-system gnu-build-system)
591 (arguments
592 (list #:configure-flags
593 #~(list "--disable-dependency-tracking"
594 "CFLAGS=-g -O2 -Wno-error=implicit-int")
595 #:phases
596 #~(modify-phases %standard-phases
597 (add-before 'build 'gcc14
598 (lambda _
599 (substitute* "uniname.c"
600 (("#include <unistd.h>" all)
601 (string-append all "\n#include <ctype.h>")))
602 (substitute* "unifuzz.c"
603 (("#include <unistd.h>" all)
604 (string-append all "\n#include <time.h>"))
605 (("^Emit") "void Emit"))
606 (substitute* "putu8.c"
607 (("void" all)
608 (string-append "#include <stdio.h>\n" all)))))
609 (add-after 'build 'fix-paths
610 (lambda* (#:key outputs inputs #:allow-other-keys)
611 (let ((out (assoc-ref outputs "out"))
612 (a2b (assoc-ref inputs "ascii2binary"))
613 (iconv (assoc-ref inputs "libiconv")))
614 (substitute* "utf8lookup"
615 (("^ascii2binary ") (string-append a2b "/bin/ascii2binary "))
616 (("^uniname ") (string-append out "/bin/uniname "))
617 (("^iconv ") (string-append iconv "/bin/iconv ")))))))))
618 (inputs
619 (list ascii2binary libiconv))
620 (home-page "https://billposer.org/Software/unidesc.html")
621 (synopsis "Find out what is in a Unicode file")
622 (description "Useful tools when working with Unicode files when one
623doesn't know the writing system, doesn't have the necessary font, needs to
624inspect invisible characters, needs to find out whether characters have been
625combined or in what order they occur, or needs statistics on which characters
626occur.
627
628@itemize
629
630@item @command{uniname} defaults to printing the character offset of each
631character, its byte offset, its hex code value, its encoding, the glyph
632itself, and its name. It may also be used to validate UTF-8 input.
633
634@item @command{unidesc} reports the character ranges to which different
635portions of the text belong. It can also be used to identify Unicode encodings
636(e.g. UTF-16be) flagged by magic numbers.
637
638@item @command{unihist} generates a histogram of the characters in its input.
639
640@item @command{ExplicateUTF8} is intended for debugging or for learning about
641Unicode. It determines and explains the validity of a sequence of bytes as a
642UTF8 encoding.
643
644@item @command{utf8lookup} provides a handy way to look up Unicode characters
645from the command line.
646
647@item @command{unireverse} reverse each line of UTF-8 input
648character-by-character.
649
650@end itemize")
651 (license license:gpl3)))
652
653(define-public libconfig
654 (package
655 (name "libconfig")
656 (version "1.7.3")
657 (home-page "https://hyperrealm.github.io/libconfig/")
658 (source (origin
659 (method url-fetch)
660 (uri (string-append home-page "/dist/libconfig-"
661 version ".tar.gz"))
662 (sha256
663 (base32
664 "1rqynfxl1zxwk4b42sniz9xlw285aidcrsfih51p8dy0rbb6clal"))))
665 (build-system gnu-build-system)
666 (arguments
667 (list
668 #:phases
669 #~(modify-phases %standard-phases
670 (add-after 'unpack 'update-config-scripts
671 (lambda* (#:key native-inputs inputs #:allow-other-keys)
672 (for-each (lambda (file)
673 (install-file
674 (search-input-file
675 (or native-inputs inputs)
676 (string-append "/bin/" file)) "aux-build"))
677 '("config.guess" "config.sub")))))))
678 (native-inputs
679 (list config))
680 (synopsis "C/C++ configuration file library")
681 (description
682 "Libconfig is a simple library for manipulating structured configuration
683files. This file format is more compact and more readable than XML. And
684unlike XML, it is type-aware, so it is not necessary to do string parsing in
685application code.")
686 (license license:lgpl2.1+)))
687
688(define-public pfff
689 (package
690 (name "pfff")
691 (version "1.0")
692 (source (origin
693 (method git-fetch)
694 (uri (git-reference
695 (url "https://github.com/pfff/pfff")
696 (commit (string-append "v" version))))
697 (file-name (git-file-name name version))
698 (sha256
699 (base32
700 "1nxkfm7zliq3rmr7yp871sppwfnz71iz364m2sgazny71pzykggc"))))
701 (build-system cmake-build-system)
702 (home-page "https://biit.cs.ut.ee/pfff/")
703 (synopsis "Probabilistic fast file fingerprinting tool")
704 (description
705 "pfff is a tool for calculating a compact digital fingerprint of a file
706by sampling randomly from the file instead of reading it in full.
707Consequently, the computation has a flat performance characteristic,
708correlated with data variation rather than file size. pfff can be as reliable
709as existing hashing techniques, with provably negligible risk of collisions.")
710 (license license:bsd-3)))
711
712(define-public oniguruma
713 (package
714 (name "oniguruma")
715 (version "6.9.10")
716 (source (origin
717 (method url-fetch)
718 (uri (string-append "https://github.com/kkos/"
719 "oniguruma/releases/download/v"
720 ;; If there is a "-" in the version, convert
721 ;; to underscore for this part of the URI.
722 (string-map (lambda (c) (if (char=? #\- c) #\_ c))
723 version)
724 "/onig-" version ".tar.gz"))
725 (sha256
726 (base32
727 "01gwd7bkhwl2rdqbfq109vlzznic2pygz3dnhrzykr2rw9dgqp1a"))))
728 (build-system gnu-build-system)
729 (arguments '(#:configure-flags '("--disable-static")))
730 (home-page "https://github.com/kkos/oniguruma")
731 (synopsis "Regular expression library")
732 (description "Oniguruma is a regular expressions library. The special
733characteristic of this library is that different character encoding for every
734regular expression object can be specified.")
735 (license license:bsd-2)))
736
737(define-public antiword
738 (package
739 (name "antiword")
740 (version "0.37")
741 (source (origin
742 (method url-fetch)
743 ;; Development stopped in 2005; as of 2023 the home page 404s.
744 (uri (string-append "https://web.archive.org/web/20200621222738/"
745 "http://www.winfield.demon.nl/linux"
746 "/antiword-" version ".tar.gz"))
747 (sha256
748 (base32
749 "1b7mi1l20jhj09kyh0bq14qzz8vdhhyf35gzwsq43mn6rc7h0b4f"))
750 (patches (search-patches "antiword-CVE-2014-8123.patch"))))
751 (build-system gnu-build-system)
752 (arguments
753 `(#:tests? #f ; There are no tests
754 #:make-flags
755 (list "-f" "Makefile.Linux"
756 (string-append "GLOBAL_INSTALL_DIR="
757 (assoc-ref %outputs "out") "/bin")
758 (string-append "GLOBAL_RESOURCES_DIR="
759 (assoc-ref %outputs "out") "/share/antiword"))
760 #:phases
761 (modify-phases %standard-phases
762 (replace 'configure
763 (lambda* (#:key outputs #:allow-other-keys)
764 ;; Ensure that mapping files can be found in the actual package
765 ;; data directory.
766 (substitute* "antiword.h"
767 (("/usr/share/antiword")
768 (string-append (assoc-ref outputs "out") "/share/antiword")))
769 #t))
770 (replace 'install
771 (lambda* (#:key make-flags #:allow-other-keys)
772 (apply invoke "make" `("global_install" ,@make-flags)))))))
773 (home-page (string-append "https://web.archive.org/web/20220121050627/"
774 "http://www.winfield.demon.nl"))
775 (synopsis "Microsoft Word document reader")
776 (description "Antiword is an application for displaying Microsoft Word
777documents. It can also convert the document to PostScript or XML. Only
778documents made by MS Word version 2 and version 6 or later are supported. The
779name comes from: \"The antidote against people who send Microsoft Word files
780to everybody, because they believe that everybody runs Windows and therefore
781runs Word\".")
782 (license license:gpl2+)))
783
784(define-public catdoc
785 (package
786 (name "catdoc")
787 (version "0.95")
788 (source (origin
789 (method url-fetch)
790 (uri (string-append "http://ftp.wagner.pp.ru/pub/catdoc/"
791 "catdoc-" version ".tar.gz"))
792 (patches (search-patches "catdoc-CVE-2017-11110.patch"))
793 (sha256
794 (base32
795 "15h7v3bmwfk4z8r78xs5ih6vd0pskn0rj90xghvbzdjj0cc88jji"))))
796 (build-system gnu-build-system)
797 ;; TODO: Also build `wordview` which requires `tk` – make a separate
798 ;; package for this.
799 (arguments
800 '(#:tests? #f ; There are no tests
801 #:configure-flags '("--disable-wordview")
802 #:phases
803 (modify-phases %standard-phases
804 (add-before 'install 'fix-install
805 (lambda* (#:key outputs #:allow-other-keys)
806 (let ((out (assoc-ref outputs "out")))
807 (mkdir-p (string-append out "/share/man/man1"))))))))
808 (home-page "https://www.wagner.pp.ru/~vitus/software/catdoc/")
809 (synopsis "MS-Word to TeX or plain text converter")
810 (description "@command{catdoc} extracts text from MS-Word files, trying to
811preserve as many special printable characters as possible. It supports
812everything up to Word-97. Also supported are MS Write documents and RTF
813files.
814
815@command{catdoc} does not preserve complex word formatting, but it can
816translate some non-ASCII characters into TeX escape codes. It's goal is to
817extract plain text and allow you to read it and, probably, reformat with TeX,
818according to TeXnical rules.
819
820This package also provides @command{xls2csv}, which extracts data from Excel
821spreadsheets and outputs it in comma-separated-value format, and
822@command{catppt}, which extracts data from PowerPoint presentations.")
823 (license license:gpl2+)))
824
825(define-public utfcpp
826 (package
827 (name "utfcpp")
828 (version "3.2.5")
829 (source (origin
830 (method git-fetch)
831 (uri (git-reference
832 (url "https://github.com/nemtrif/utfcpp")
833 (commit (string-append "v" version))))
834 (file-name (git-file-name name version))
835 (modules '((guix build utils)))
836 ;; Unbundle ftest
837 (snippet
838 '(begin
839 (delete-file-recursively "extern")
840 (substitute* (find-files "tests" "\\.cpp")
841 (("\"../extern/ftest/ftest.h\"")
842 "<ftest/ftest.h>"))))
843 (sha256
844 (base32
845 "195n47dblx765xas54vkgyin3xsvfnvcdc614njzqmcxybfpvix2"))))
846 (build-system cmake-build-system)
847 (native-inputs (list ftest))
848 (home-page "https://github.com/nemtrif/utfcpp")
849 (synopsis "Portable C++ library for handling UTF-8")
850 (description "UTF8-CPP is a C++ library for handling UTF-8 encoded text
851in a portable way.")
852 (license license:boost1.0)))
853
854(define-public utfcpp-2
855 (package
856 (inherit utfcpp)
857 (name (package-name utfcpp))
858 (version "2.3.5")
859 (source (origin
860 (method git-fetch)
861 (uri (git-reference
862 (url "https://github.com/nemtrif/utfcpp")
863 (commit (string-append "v" version))))
864 (file-name (git-file-name name version))
865 (sha256
866 (base32
867 "1gr98d826z6wa58r1s5i7rz7q2x3r31v7zj0pjjlrc7gfxwklr4s"))))
868 (build-system cmake-build-system)
869 (arguments
870 `(#:out-of-source? #f
871 #:phases
872 (modify-phases %standard-phases
873 (replace 'install ; no install target
874 (lambda* (#:key outputs #:allow-other-keys)
875 (let* ((out (assoc-ref outputs "out"))
876 (include (string-append out "/include"))
877 (doc (string-append out "/share/doc/" ,name)))
878 (copy-recursively "source" include)
879 (install-file "README.md" doc)))))))
880 (native-inputs '())))
881
882
883(define-public dbacl
884 (package
885 (name "dbacl")
886 (version "1.14.1")
887 (source
888 (origin
889 (method url-fetch)
890 (uri (string-append "mirror://sourceforge/dbacl/dbacl/" version "/"
891 "dbacl-" version ".tar.gz"))
892 (sha256
893 (base32 "1gas0112wqjvwn9qg3hxnawk7h3prr0w9b2h68f3p1ifd1kzn3gz"))
894 (patches (search-patches "dbacl-include-locale.h.patch"
895 "dbacl-icheck-multiple-definitions.patch"))))
896 (build-system gnu-build-system)
897 (arguments
898 `(#:make-flags
899 (list
900 (string-append "-I" (assoc-ref %build-inputs "slang")
901 "/include/slang")
902 (string-append "-I" (assoc-ref %build-inputs "ncurses")
903 "/include/ncurses"))
904 #:phases
905 (modify-phases %standard-phases
906 (add-after 'unpack 'delete-sample6-and-japanese
907 (lambda _
908 (substitute* "doc/Makefile.am"
909 (("sample6.txt") "")
910 (("japanese.txt") ""))
911 (delete-file "doc/sample6.txt")
912 (delete-file "doc/japanese.txt")
913 (substitute* (list "src/tests/Makefile.am"
914 "src/tests/Makefile.in")
915 (("dbacl-jap.shin") "")
916 (("dbacl-jap.sh") ""))
917 #t))
918 (add-after 'unpack 'delete-test
919 ;; See comments about the license.
920 (lambda _
921 (delete-file "src/tests/dbacl-jap.shin")
922 #t))
923 (add-after 'unpack 'fix-test-files
924 (lambda* (#:key inputs outputs #:allow-other-keys)
925 (let* ((out (assoc-ref outputs "out"))
926 (bin (string-append out "/bin")))
927 (substitute* (find-files "src/tests/" "\\.shin$")
928 (("PATH=/bin:/usr/bin")
929 "#PATH=/bin:/usr/bin")
930 (("diff") (string-append (which "diff")))
931 (("tr") (string-append (which "tr"))))
932 #t)))
933 (replace 'bootstrap
934 (lambda _
935 (invoke "autoreconf" "-vif")
936 #t)))))
937 (inputs
938 (list ncurses perl readline slang))
939 (native-inputs
940 (list libtool autoconf automake pkg-config))
941 (home-page "https://www.lbreyer.com/dbacl.html")
942 (synopsis "Bayesian text and email classifier")
943 (description
944 "dbacl is a fast Bayesian text and email classifier. It builds a variety
945of language models using maximum entropy (minimum divergence) principles, and
946these can then be used to categorize input data automatically among multiple
947categories.")
948 ;; The software is licensed as GPLv3 or later, but
949 ;; includes various sample texts in the doc dir:
950 ;; - sample1.txt, sample3 and sampe5.txt are in the public domain,
951 ;; by Mark Twain.
952 ;; - sample2.txt, sample4.txt are in the public domain, by Aristotle.
953 ;; - sample6.txt is a forwarded email, copyright unknown.
954 ;; Guix does exclude sample6.txt.
955 ;; - japanese.txt is a Japanese unoffical translation of the
956 ;; GNU General Public License, (c) by the Free Software Foundation.
957 ;; Guix excludes this file.
958 (license (list license:gpl3+ license:public-domain))))
959
960(define-public dotconf
961 (package
962 (name "dotconf")
963 (version "1.3")
964 (source (origin
965 (method git-fetch)
966 (uri (git-reference
967 (url "https://github.com/williamh/dotconf")
968 (commit (string-append "v" version))))
969 (file-name (git-file-name name version))
970 (sha256
971 (base32
972 "1sc95hw5k2xagpafny0v35filmcn05k1ds5ghkldfpf6xw4hakp7"))))
973 (build-system gnu-build-system)
974 (arguments `(#:tests? #f)) ; FIXME maketest.sh does not work.
975 (native-inputs
976 (list autoconf automake libtool))
977 (home-page "https://github.com/williamh/dotconf")
978 (synopsis "Configuration file parser library")
979 (description
980 "C library for creating and parsing configuration files.")
981 (license (list license:lgpl2.1 ; Main distribution.
982 license:asl1.1)))) ; src/readdir.{c,h}
983
984(define-public drm-tools
985 (package
986 (name "drm-tools")
987 (version "1.1.33")
988 (source (origin
989 (method url-fetch)
990 (uri (string-append "mirror://sourceforge/drmtools/drm_tools-"
991 version ".tar.gz"))
992 (sha256
993 (base32
994 "187zbxw21zcg8gpyc13gxlycfw0n05a6rmqq6im5wr9zk1v1wj80"))))
995 (build-system cmake-build-system)
996 (arguments
997 `(#:tests? #f ;the test suite fails
998 #:phases (modify-phases %standard-phases
999 (add-after 'unpack 'set-install-prefixes
1000 (lambda* (#:key outputs #:allow-other-keys)
1001 (let* ((out (assoc-ref outputs "out")))
1002 (substitute* "CMakeLists.txt"
1003 (("tmp/testinstall")
1004 (string-drop out 1))
1005 (("/man/man1")
1006 "/share/man/man1"))
1007 #t)))
1008 (add-after 'unpack 'adjust-test-paths
1009 (lambda _
1010 (substitute* '("test_extract_increment.sh"
1011 "test_extract_features.sh"
1012 "test_extract_features2.sh"
1013 "test_dmath.sh")
1014 (("\\./extract") "extract")
1015 (("\\./dmath") "dmath")
1016 (("/usr/local/bin/") "")
1017 (("/bin/rm") "rm")
1018 (("/bin/cp") "cp"))
1019 #t))
1020 (delete 'check)
1021 ;; The produced binaries are written directly to %output/bin.
1022 (delete 'install)
1023 (add-after 'build 'check
1024 (lambda* (#:key outputs tests? #:allow-other-keys)
1025 (when tests?
1026 (let* ((out (assoc-ref outputs "out"))
1027 (bin (string-append out "/bin")))
1028 (setenv "PATH" (string-append bin ":"
1029 (getenv "PATH")))
1030 (with-directory-excursion
1031 (format #f "../drm_tools-~a" ,version)
1032 (invoke "sh" "test_all.sh")))))))))
1033 (native-inputs (list which)) ;for tests
1034 (inputs (list pcre))
1035 (home-page "https://drmtools.sourceforge.net/")
1036 (synopsis "Utilities to manipulate text and binary files")
1037 (description "The drm_tools package contains the following commands:
1038@table @command
1039@item accudate
1040An extended version of the \"date\" program that has sub-second accuracy.
1041@item binformat
1042Format complex binary data into text.
1043@item binload
1044Load data into a binary file using simple commands from the input.
1045@item binorder
1046Sort, merge, search, retrieve or generate test data consisting of fixed size
1047binary records.
1048@item binreplace
1049Find or find/replace in binary files.
1050@item binsplit
1051Split test data consisting of fixed size binary records into one or more
1052output streams.
1053@item chardiff
1054Find changes between two files at the character level. Unlike \"diff\", it
1055lists just the characters that differ, so if the 40,000th character is
1056different only that one character will be shown, not the entire line.
1057@item columnadd
1058Add columns of integers, decimals, and/or times.
1059@item datasniffer
1060A utility for formatting binary data dumps.
1061@item dmath
1062Double precision interactive command line math calculator.
1063@item extract
1064Extract and emit data from text files based on character or token position.
1065@item execinput
1066A utility that reads from STDIN and executes each line as a command in a
1067sub-process.
1068@item indexed_text
1069A utility for rapid retrieval of text by line numbers, in any order, from a
1070text file.
1071@item mdump
1072Format binary data.
1073@item msgqueue
1074Create message queues and send/receive messages.
1075@item mbin
1076@itemx mbout
1077Multiple buffer in and out. Used for buffering a lot of data between a slow
1078device and a fast device. Mostly for buffering streaming tape drives for use
1079with slower network connections, so that streaming is maintained as much as
1080possible to minimize wear on the tape device.
1081@item pockmark
1082Corrupt data streams - useful for testing error correction and data recovery.
1083@item tarsieve
1084Filter, list, or split a tar file.
1085@end table")
1086 (license license:gpl2+)))
1087
1088(define-public java-rsyntaxtextarea
1089 (package
1090 (name "java-rsyntaxtextarea")
1091 (version "3.4.0")
1092 (source (origin
1093 (method git-fetch)
1094 (uri (git-reference
1095 (url "https://github.com/bobbylight/RSyntaxTextArea")
1096 (commit version)))
1097 (file-name (git-file-name name version))
1098 (sha256
1099 (base32
1100 "0ad3cmfxwz9963kbh5ryba9jp88hsx03jsl8r4qinwhy6aahx6f3"))))
1101 (build-system ant-build-system)
1102 (arguments
1103 (list
1104 #:jar-name "rsyntaxtextarea.jar"
1105 #:source-dir "RSyntaxTextArea/src/main/java"
1106 #:test-dir "RSyntaxTextArea/src/test"
1107 #:tests? #false ;requires junit5
1108 #:phases
1109 '(modify-phases %standard-phases
1110 (add-before 'build 'copy-resources
1111 (lambda _
1112 (copy-recursively "RSyntaxTextArea/src/main/resources" "build/classes")))
1113 #;
1114 (add-before 'check 'start-xorg-server
1115 (lambda _
1116 ;; The test suite requires a running X server.
1117 (system "Xvfb :1 &")
1118 (setenv "DISPLAY" ":1")
1119 ;; Prevent irrelevant errors that cause test output mismatches:
1120 ;; ‘Fontconfig error: No writable cache directories’
1121 (setenv "XDG_CACHE_HOME" (getcwd)))))))
1122 (native-inputs
1123 (list java-hamcrest-core
1124 xorg-server-for-tests))
1125 (home-page "https://bobbylight.github.io/RSyntaxTextArea/")
1126 (synopsis "Syntax highlighting text component for Java Swing")
1127 (description "RSyntaxTextArea is a syntax highlighting, code folding text
1128component for Java Swing. It extends @code{JTextComponent} so it integrates
1129completely with the standard @code{javax.swing.text} package. It is fast and
1130efficient, and can be used in any application that needs to edit or view
1131source code.")
1132 (license license:bsd-3)))
1133
1134(define-public java-autocomplete
1135 (package
1136 (name "java-autocomplete")
1137 (version "3.3.1")
1138 (source (origin
1139 (method git-fetch)
1140 (uri (git-reference
1141 (url "https://github.com/bobbylight/AutoComplete")
1142 (commit version)))
1143 (file-name (git-file-name name version))
1144 (sha256
1145 (base32
1146 "0ksa3k3xkdjpyq9sbsvchyhfzzpb67pv8xzbpljj8rqilgk8ysy0"))))
1147 (build-system ant-build-system)
1148 (arguments
1149 (list
1150 #:tests? #false ;needs junit5
1151 #:jar-name "autocomplete.jar"
1152 #:source-dir "AutoComplete/src/main/java"
1153 #:test-dir "AutoComplete/src/test"
1154 #:phases
1155 '(modify-phases %standard-phases
1156 (add-before 'build 'copy-resources
1157 (lambda _
1158 (copy-recursively "AutoComplete/src/main/resources" "build/classes"))))))
1159 (propagated-inputs
1160 (list java-rsyntaxtextarea))
1161 (native-inputs
1162 (list java-hamcrest-core))
1163 (home-page "https://github.com/bobbylight/AutoComplete")
1164 (synopsis "Text completion library")
1165 (description "AutoComplete is a library allowing you to add IDE-like
1166auto-completion (aka \"code completion\" or \"Intellisense\") to any Swing
1167JTextComponent. Special integration is added for @code{RSyntaxTextArea},
1168since this feature is commonly needed when editing source code. Features
1169include: Drop-down completion choice list. Optional companion \"description\"
1170window, complete with full HTML support and navigable with hyperlinks.
1171Optional parameter completion assistance for functions and methods, ala
1172Eclipse and NetBeans. Completion information is typically specified in an XML
1173file, but can even be dynamic.")
1174 (license license:bsd-3)))
1175
1176(define-public tldr
1177 (package
1178 (name "tldr")
1179 (version "3.4.3")
1180 (source
1181 (origin
1182 (method git-fetch)
1183 (uri (git-reference
1184 (url "https://github.com/tldr-pages/tldr-python-client")
1185 (commit version)))
1186 (file-name (git-file-name name version))
1187 (sha256
1188 (base32 "06rhpywaypqwakw8v187cdf52yl5c7fm19f1q7nbbsydbs0ndmb1"))))
1189 (build-system pyproject-build-system)
1190 (arguments
1191 (list
1192 ;; This test fails. It tries to open a network socket.
1193 #:test-flags #~(list "-k" "not test_error_message")
1194 #:phases
1195 #~(modify-phases %standard-phases
1196 (add-after 'build 'build-doc
1197 (lambda _
1198 (invoke "make" "-C" "docs"))))))
1199 (native-inputs
1200 (list python-hatchling
1201 python-pytest
1202 python-sphinx-argparse))
1203 (inputs
1204 (list python-colorama
1205 python-termcolor
1206 python-shtab))
1207 (home-page "https://github.com/tldr-pages/tldr-python-client")
1208 (synopsis "Command-line client for tldr pages")
1209 (description "This package provides the @code{tldr} command allowing users
1210to view @code{tldr} pages from a shell. The @code{tldr} pages are a community
1211effort to simplify the man pages with practical examples described in
1212@url{https://tldr.sh/}.")
1213 (license license:expat)))
1214
1215(define-public python-tldr
1216 (deprecated-package "python-tldr" tldr))
1217
1218(define-public txt2tags
1219 (package
1220 (name "txt2tags")
1221 (version "3.9")
1222 (source
1223 (origin
1224 (method git-fetch)
1225 (uri (git-reference
1226 (url "https://github.com/txt2tags/txt2tags")
1227 (commit version)))
1228 (file-name (git-file-name name version))
1229 (sha256
1230 (base32 "1nfps6c3jchjkbwzh8v919fxql91l1lxa6q1vssprxivk0jcc0rz"))))
1231 (build-system pyproject-build-system)
1232 (arguments
1233 (list #:test-backend #~'custom
1234 #:test-flags #~(list "test/run.py")))
1235 (native-inputs
1236 (list python-setuptools))
1237 (home-page "https://txt2tags.org")
1238 (synopsis "Convert between markup languages")
1239 (description
1240 "txt2tags is a document generator. It reads a text file with minimal
1241markup and converts it to multiple formats.")
1242 (license license:gpl2)))
1243
1244(define-public docx2txt
1245 (package
1246 (name "docx2txt")
1247 (version "1.4")
1248 (source (origin
1249 (method url-fetch)
1250 (uri (string-append
1251 "mirror://sourceforge/docx2txt/docx2txt/v"
1252 version "/docx2txt-" version ".tgz"))
1253 (sha256
1254 (base32
1255 "06vdikjvpj6qdb41d8wzfnyj44jpnknmlgbhbr1w215420lpb5xj"))))
1256 (build-system gnu-build-system)
1257 (inputs
1258 (list unzip perl))
1259 (arguments
1260 `(#:tests? #f ; No tests.
1261 #:make-flags (list (string-append "BINDIR="
1262 (assoc-ref %outputs "out") "/bin")
1263 (string-append "CONFIGDIR="
1264 (assoc-ref %outputs "out") "/etc")
1265 ;; Makefile seems to be a bit dumb at guessing.
1266 (string-append "INSTALL=install")
1267 (string-append "PERL=perl"))
1268 #:phases
1269 (modify-phases %standard-phases
1270 (delete 'configure)
1271 (add-after 'install 'fix-install
1272 (lambda* (#:key outputs inputs #:allow-other-keys)
1273 (let* ((out (assoc-ref outputs "out"))
1274 (bin (string-append out "/bin"))
1275 (config (string-append out "/etc/docx2txt.config"))
1276 (unzip (assoc-ref inputs "unzip")))
1277 ;; According to INSTALL, the .sh wrapper can be skipped.
1278 (delete-file (string-append bin "/docx2txt.sh"))
1279 (rename-file (string-append bin "/docx2txt.pl")
1280 (string-append bin "/docx2txt"))
1281 (substitute* config
1282 (("config_unzip => '/usr/bin/unzip',")
1283 (string-append "config_unzip => '"
1284 unzip
1285 "/bin/unzip',")))
1286 ;; Makefile is wrong.
1287 (chmod config #o644)
1288 #t))))))
1289 (synopsis "Recover text from @file{.docx} files, with good formatting")
1290 (description
1291 "@command{docx2txt} is a Perl based command line utility to convert
1292Microsoft Office @file{.docx} documents to equivalent text documents. Latest
1293version supports following features during text extraction.
1294
1295@itemize
1296@item Character conversions; currency characters are converted to respective
1297names like Euro.
1298@item Capitalisation of text blocks.
1299@item Center and right justification of text fitting in a line of
1300(configurable) 80 columns.
1301@item Horizontal ruler, line breaks, paragraphs separation, tabs.
1302@item Indicating hyperlinked text along with the hyperlink (configurable).
1303@item Handling (bullet, decimal, letter, roman) lists along with (attempt at)
1304indentation.
1305@end itemize\n")
1306 (home-page "https://docx2txt.sourceforge.net")
1307 (license license:gpl3+)))
1308
1309(define-public html2text
1310 ;; Use commit directly to get the fixes to the installation phase
1311 ;; that are not in a release yet.
1312 (let ((commit "05364c1028026a87d6f45130a8e86e1ee67704d2")
1313 (revision "1"))
1314 (package
1315 (name "html2text")
1316 (version (git-version "2.0.1_pre" revision commit))
1317 (source
1318 (origin
1319 (method git-fetch)
1320 (uri (git-reference
1321 (url "https://github.com/grobian/html2text")
1322 (commit (string-append commit))))
1323 (file-name (git-file-name name version))
1324 (sha256
1325 (base32 "0n6pl0nijcn4z3p0dvf3gmvvpjq261pagnk84s9f78c4c55bw5cm"))))
1326 (build-system gnu-build-system)
1327 (arguments
1328 `(#:make-flags
1329 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1330 #:phases
1331 (modify-phases %standard-phases
1332 (replace 'configure
1333 ;; The configure script is not from autotools and does not accept
1334 ;; ‘--style’ options. There is no proper error handling.
1335 (lambda* (#:key outputs #:allow-other-keys)
1336 (invoke "./configure"
1337 (string-append "CXX=" ,(cxx-for-target))))))))
1338 (home-page "https://github.com/grobian/html2text")
1339 (synopsis "HTML to plain text converter")
1340 (description
1341 "@code{html2text} is a command line utility that converts HTML
1342documents into plain text.")
1343 (license (list license:bsd-4 ; cmp_nocase.cpp & sgml.h
1344 license:gpl2+))))) ; everything else
1345
1346(define-public odt2txt
1347 (package
1348 (name "odt2txt")
1349 (version "0.5")
1350 (source
1351 (origin
1352 (method git-fetch)
1353 (uri (git-reference
1354 (url "https://github.com/dstosberg/odt2txt/")
1355 (commit (string-append "v" version))))
1356 (file-name (git-file-name name version))
1357 (sha256
1358 (base32
1359 "0im3kzvhxkjlx57w6h13mc9584c74ma1dyymgvpq2y61av3gc35v"))))
1360 (build-system gnu-build-system)
1361 (arguments
1362 (list #:tests? #f ; no make check
1363 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
1364 (string-append "DESTDIR=" #$output))
1365 #:phases
1366 #~(modify-phases %standard-phases
1367 ;; no configure script
1368 (delete 'configure))))
1369 (inputs
1370 (list zlib))
1371 (home-page "https://github.com/dstosberg/odt2txt/")
1372 (synopsis "Converter from OpenDocument Text to plain text")
1373 (description "odt2txt is a command-line tool which extracts the text out
1374of OpenDocument Texts, as produced by OpenOffice.org, KOffice, StarOffice and
1375others.
1376
1377odt2txt can also extract text from some file formats similar to OpenDocument
1378Text, such as OpenOffice.org XML (*.sxw), which was used by OpenOffice.org
1379version 1.x and older StarOffice versions. To a lesser extent, odt2txt may be
1380useful to extract content from OpenDocument spreadsheets (*.ods) and
1381OpenDocument presentations (*.odp).")
1382 (license license:gpl2)))
1383
1384(define-public cobib
1385 (package
1386 (name "cobib")
1387 (version "6.0.1")
1388 (source
1389 (origin
1390 (method git-fetch)
1391 (uri (git-reference
1392 (url "https://gitlab.com/cobib/cobib")
1393 (commit (string-append "v" version))))
1394 (file-name (git-file-name name version))
1395 (sha256
1396 (base32 "0fsbhhkghjs6frbfz1x152ypd32vpkn8na9v54gldfhjk5xfzkmg"))))
1397 (build-system pyproject-build-system)
1398 (arguments
1399 (list
1400 ;; tests: 563 passed, 33 skipped
1401 #:test-flags
1402 #~(list
1403 ;; Most of the tests fail to compare "/tmp" and "~/" paths.
1404 #$@(map (lambda (file) (string-append "--ignore=" "tests/" file))
1405 (list "commands/test_add.py"
1406 "commands/test_lint.py"
1407 "commands/test_man.py"
1408 "commands/test_open.py"
1409 "database/test_entry.py"
1410 "importers/test_bibtex.py"
1411 "ui/shell/test_general.py"
1412 "ui/tui/test_general.py"
1413 "ui/tui/test_list.py"
1414 "ui/tui/test_note.py"
1415 "ui/tui/test_search.py"
1416 "ui/tui/test_select.py"
1417 "utils/test_rel_path.py")))
1418 #:phases
1419 #~(modify-phases %standard-phases
1420 (add-before 'check 'pre-check
1421 (lambda _
1422 (setenv "COBIB_CONFIG" "0")
1423 (setenv "GIT_AUTHOR_EMAIL" "[email protected]")
1424 (setenv "GIT_AUTHOR_NAME" "Your Name")
1425 (setenv "GIT_COMMITTER_EMAIL" "[email protected]")
1426 (setenv "GIT_COMMITTER_NAME" "Your Name")
1427 (setenv "HOME" "/tmp")
1428 (setenv "TERM" "linux")
1429 (setenv "TMPDIR" "/tmp")
1430 (invoke "git" "config" "--global" "user.email" "[email protected]")
1431 (invoke "git" "config" "--global" "user.name" "Your Name")
1432 (invoke "git" "init"))))))
1433 (native-inputs
1434 (list git-minimal/pinned
1435 nss-certs-for-test
1436 python-pytest
1437 python-pytest-asyncio
1438 python-pytest-textual-snapshot
1439 python-setuptools))
1440 (inputs
1441 (list python-beautifulsoup4
1442 python-bibtexparser-for-cobib
1443 python-lxml
1444 python-mdit-py-plugins ;XXX: for sanity-check
1445 python-natsort
1446 python-pylatexenc
1447 python-requests
1448 python-rich
1449 python-ruamel.yaml
1450 python-text-unidecode
1451 python-textual
1452 python-typing-extensions))
1453 (home-page "https://gitlab.com/cobib/cobib")
1454 (synopsis "Terminal-based bibliography management tool")
1455 (description
1456 "@command{cobib} is a command-line based bibliography management tool.
1457It uses a plain-text database, a location-independent library, and features
1458git integration, command-line support, and a curses-based TUI.")
1459 (license license:expat)))
1460
1461(define-deprecated-package python-cobib
1462 cobib)
1463
1464(define-public bibutils
1465 (package
1466 (name "bibutils")
1467 (version "7.2")
1468 (source (origin
1469 (method url-fetch)
1470 (uri (string-append "mirror://sourceforge/bibutils/"
1471 "bibutils_" version "_src.tgz"))
1472
1473 (sha256
1474 (base32
1475 "1hxmwjjzw48w6hdh2x7ybkrhi1xngd55i67hrrd3wswa3vpql0kf"))))
1476 (build-system gnu-build-system)
1477 (arguments
1478 (list #:configure-flags
1479 #~(list "--install-dir" (string-append #$output "/bin")
1480 "--install-lib" (string-append #$output "/lib")
1481 "--dynamic")
1482 #:make-flags
1483 #~(list (string-append "CC=" #+(cc-for-target))
1484 (string-append "LDFLAGSIN=-Wl,-rpath=" #$output "/lib"))
1485 #:test-target "test"
1486 #:phases
1487 '(modify-phases %standard-phases
1488 (replace 'configure
1489 (lambda* (#:key configure-flags #:allow-other-keys)
1490 ;; configure script is ill-formed, invoke it manually
1491 (apply invoke "sh" "./configure" configure-flags))))))
1492 (home-page "https://bibutils.sourceforge.io/")
1493 (synopsis "Convert between various bibliography formats")
1494 (description "This package provides converters for various bibliography
1495formats (e.g. Bibtex, RIS, etc.) using a common XML intermediate.")
1496 (license license:gpl2)))
1497
1498(define-public goawk
1499 (package
1500 (name "goawk")
1501 (version "1.30.1")
1502 (source
1503 (origin
1504 (method git-fetch)
1505 (uri (git-reference
1506 (url "https://github.com/benhoyt/goawk")
1507 (commit (string-append "v" version))))
1508 (file-name (git-file-name name version))
1509 (sha256
1510 (base32 "18kbcmbxxl9yniz69hwnh2jyw93g3zws8ba02vvhjfwr4xqcm3fp"))))
1511 (build-system go-build-system)
1512 (arguments
1513 (list
1514 #:install-source? #f
1515 #:import-path "github.com/benhoyt/goawk"
1516 #:test-flags
1517 #~(list "-vet=off" ;[email protected] forces vet, but tests are not ready yet.
1518 ;; XXX: The most of the tests passed but some of the group fails
1519 ;; to find additional commands or compare output of test data.
1520 "-skip" "TestCommandLine|TestInterp")
1521 #:phases
1522 #~(modify-phases %standard-phases
1523 (add-before 'check 'pre-check
1524 (lambda* (#:key import-path #:allow-other-keys)
1525 (with-directory-excursion (string-append "src/" import-path)
1526 (substitute* (list "interp/interp.go"
1527 "interp/interp_test.go"
1528 "goawk_test.go")
1529 (("/bin/cat") (which "cat"))
1530 (("/bin/echo") (which "echo"))
1531 (("/bin/sh") (which "sh")))
1532 (substitute* "goawk_test.go"
1533 ;; During tests goawk tries to write to existing files,
1534 ;; point to an empty directory instead.
1535 (("/testdata/output") "/testdata/output-tmp"))
1536 (mkdir "testdata/output-tmp"))))
1537 (add-after 'check 'post-check-remove-output-temp
1538 (lambda* (#:key import-path #:allow-other-keys)
1539 (with-directory-excursion (string-append "src/" import-path)
1540 (delete-file-recursively "testdata/output-tmp")))))))
1541 (home-page "https://github.com/benhoyt/goawk")
1542 (synopsis "AWK interpreter with CSV support")
1543 (description
1544 "GoAWK is a POSIX-compatible version of AWK that also has a CSV mode for
1545reading and writing CSV and TSV files.")
1546 (license license:expat)))
1547
1548(define-public gron
1549 (package
1550 (name "gron")
1551 (version "0.7.1")
1552 (source
1553 (origin
1554 (method git-fetch)
1555 (uri (git-reference
1556 (url "https://github.com/tomnomnom/gron")
1557 (commit (string-append "v" version))))
1558 (file-name (git-file-name name version))
1559 (sha256
1560 (base32 "1sj34b6yv0qigy3aq7qmwf8bqxp1a8qh9p10lzkpw58s1c0iyh36"))))
1561 (build-system go-build-system)
1562 (arguments
1563 (list
1564 #:install-source? #f
1565 #:import-path "github.com/tomnomnom/gron"
1566 #:test-flags #~(list "-vet=off")))
1567 (native-inputs
1568 (list go-github-com-fatih-color
1569 go-github-com-mattn-go-colorable
1570 go-github-com-nwidger-jsoncolor
1571 go-github-com-pkg-errors))
1572 (home-page "https://github.com/tomnomnom/gron")
1573 (synopsis "Transform JSON to make it easier to grep")
1574 (description
1575 "This package transforms JSON into discrete assignments to make it easier
1576to use line-based tools such as grep to search for what you want and see the
1577absolute \"path\" to it.")
1578 (license license:expat)))
1579
1580(define-public opencc
1581 (package
1582 (name "opencc")
1583 (version "1.1.1")
1584 (source
1585 (origin
1586 (method git-fetch)
1587 (uri (git-reference
1588 (url "https://github.com/BYVoid/OpenCC")
1589 (commit (string-append "ver." version))))
1590 (file-name (git-file-name name version))
1591 (sha256
1592 (base32
1593 "07y0pvxjlmpcnym229j87qcfwnfm7vi10dad0a20xy6as55a9j3d"))
1594 (modules '((guix build utils)))
1595 (snippet
1596 '(begin
1597 ;; TODO: Unbundle tclap, darts-clone, gtest
1598 (delete-file-recursively "deps/rapidjson-1.1.0") #t))))
1599 (build-system cmake-build-system)
1600 (arguments
1601 ;; Required to locate the install script properly.
1602 `(#:out-of-source? #f
1603 #:tests? #f
1604 #:parallel-build? #f ;occasionally failed.
1605 #:imported-modules
1606 (,@%cmake-build-system-modules
1607 (guix build python-build-system))
1608 #:modules ((guix build cmake-build-system)
1609 ((guix build python-build-system) #:prefix python:)
1610 (guix build utils))
1611 #:phases
1612 (modify-phases %standard-phases
1613 (add-after 'unpack 'prevent-rebuild-during-installation
1614 (lambda _
1615 (substitute* "python/setup.py"
1616 (("'build_py': BuildPyCommand,") ""))
1617 #t))
1618 (add-after 'unpack 'patch-3rd-party-references
1619 (lambda* (#:key inputs #:allow-other-keys)
1620 (let ((rapidjson (assoc-ref inputs "rapidjson")))
1621 (substitute* "src/CMakeLists.txt"
1622 (("../deps/rapidjson-1.1.0")
1623 (string-append rapidjson "/include/rapidjson")))
1624 #t)))
1625 (add-before 'configure 'patch-python-binding-installation
1626 (lambda* (#:key outputs inputs #:allow-other-keys)
1627 (let ((out (assoc-ref outputs "out")))
1628 (substitute* "python/opencc/__init__.py"
1629 (("(_libopenccfile =).*$" _ prefix)
1630 (format #f "~a os.path.join('~a/lib', _libopenccfilename)~%"
1631 prefix out))
1632 (("(_opencc_share_dir =).*$" _ prefix)
1633 (format #f "~a '~a/share/opencc'~%" prefix out))))
1634 #t))
1635 (add-after 'install 'install-python-binding
1636 (lambda* (#:key outputs inputs #:allow-other-keys)
1637 (let* ((out (assoc-ref outputs "out"))
1638 (dist (string-append
1639 out "/lib/python"
1640 ,(version-major+minor (package-version python))
1641 "/site-packages")))
1642 (chdir "python")
1643 (mkdir-p dist)
1644 (setenv "PYTHONPATH"
1645 (string-append dist ":" (getenv "GUIX_PYTHONPATH")))
1646 (invoke "python" "setup.py" "install"
1647 "--root=/" "--single-version-externally-managed"
1648 (string-append "--prefix=" out))
1649 #t)))
1650 (add-before 'install-python-binding 'enable-bytecode-determinism
1651 (assoc-ref python:%standard-phases 'enable-bytecode-determinism)))))
1652 (native-inputs
1653 `(("python" ,python-wrapper)
1654 ("rapidjson" ,rapidjson)
1655 ("python-setuptools" ,python-setuptools)
1656 ("python-wheel" ,python-wheel)))
1657 (home-page "https://github.com/BYVoid/OpenCC")
1658 (synopsis "Convert between Traditional Chinese and Simplified Chinese")
1659 (description "Open Chinese Convert (OpenCC) converts between Traditional
1660Chinese and Simplified Chinese, supporting character-level conversion,
1661phrase-level conversion, variant conversion, and regional idioms among
1662Mainland China, Taiwan, and Hong-Kong.")
1663 (license license:asl2.0)))
1664
1665(define-public nkf
1666 (let ((commit "08043eadf4abdddcf277842217e3c77a24740dc2")
1667 (revision "1"))
1668 (package
1669 (name "nkf")
1670 ;; The commits corresponding to specific versions are published
1671 ;; here:
1672 ;; https://ja.osdn.net/projects/nkf/scm/git/nkf/
1673 (version "2.1.5")
1674 (source (origin
1675 (method git-fetch)
1676 (uri (git-reference
1677 (url "https://github.com/nurse/nkf")
1678 (commit commit)))
1679 (file-name (git-file-name name version))
1680 (sha256
1681 (base32
1682 "0anw0knr1iy4p9w3d3b3pbwzh1c43p1i2q4c28kw9zviw8kx2rly"))))
1683 (build-system gnu-build-system)
1684 (arguments
1685 (list #:tests? #f ; test for perl module
1686 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
1687 "CFLAGS=-O2 -Wall -pedantic"
1688 (string-append "prefix=" #$output)
1689 "MKDIR=mkdir -p")
1690 #:phases
1691 #~(modify-phases %standard-phases
1692 (delete 'configure)))) ; No ./configure script
1693 (home-page "https://ja.osdn.net/projects/nkf/")
1694 (synopsis "Network Kanji Filter")
1695 (description "Nkf is yet another kanji code converter among networks,
1696hosts and terminals. It converts input kanji code to designated kanji code
1697such as ISO-2022-JP, Shift_JIS, EUC-JP, UTF-8, UTF-16 or UTF-32.")
1698 (license license:zlib))))
1699
1700(define-public aha
1701 (package
1702 (name "aha")
1703 (version "0.5.1")
1704 (source
1705 (origin
1706 (method git-fetch)
1707 (uri (git-reference
1708 (url "https://github.com/theZiz/aha")
1709 (commit version)))
1710 (sha256
1711 (base32 "1gywad0rvvz3c5balz8cxsnx0562hj2ngzqyr8zsy2mb4pn0lpgv"))
1712 (file-name (git-file-name name version))))
1713 (build-system gnu-build-system)
1714 (arguments
1715 `(#:phases
1716 (modify-phases %standard-phases
1717 (delete 'configure))
1718 #:make-flags (list (string-append "CC=" ,(cc-for-target))
1719 (string-append "PREFIX="
1720 (assoc-ref %outputs "out")))
1721 #:tests? #f)) ; no test suite
1722 (home-page "https://github.com/theZiz/aha")
1723 (synopsis "Converts terminal escape sequences to HTML")
1724 (description "@command{aha} (Ansi Html Adapter) converts ANSI escape sequences
1725of a Unix terminal to HTML code.")
1726 (license (list license:lgpl2.0+ license:mpl1.1))))
1727
1728(define-public vale
1729 (package
1730 (name "vale")
1731 (version "3.13.0")
1732 (source
1733 (origin
1734 (method git-fetch)
1735 (uri (git-reference
1736 (url "https://github.com/errata-ai/vale")
1737 (commit (string-append "v" version))))
1738 (sha256
1739 (base32 "0qa1maav2zf6z5ij1yg6i3gbkknngqhlrhlkxrypzdf7q10558kr"))
1740 (file-name (git-file-name name version))))
1741 (build-system go-build-system)
1742 (arguments
1743 (list
1744 #:install-source? #f
1745 #:embed-files #~(list ".*\\.gob")
1746 #:import-path "github.com/errata-ai/vale/cmd/vale"
1747 #:unpack-path "github.com/errata-ai/vale"
1748 ;; Disable tests requring network access: Get
1749 ;; "https://raw.githubusercontent.com/errata-ai/styles/master/library.json":
1750 ;; dial tcp: lookup raw.githubusercontent.com on [::1]:53: read udp
1751 ;; [::1]:52621->[::1]:53: read: connection refused.
1752 #:test-flags
1753 #~(list "-skip" (string-join
1754 (list "TestLibrary"
1755 "TestNoPkgFound"
1756 "TestSymlinkFixture")
1757 "|"))
1758 #:test-subdirs
1759 #~(list "../../...") ; test whole libary, starting from import-path
1760 #:phases
1761 #~(modify-phases %standard-phases
1762 (add-before 'check 'pre-check
1763 (lambda _
1764 (setenv "HOME" "/tmp"))))))
1765 (native-inputs
1766 (list go-github-com-adrg-frontmatter
1767 go-github-com-adrg-strutil
1768 go-github-com-adrg-xdg
1769 go-github-com-bmatcuk-doublestar-v4
1770 go-github-com-d5-tengo-v2
1771 go-github-com-errata-ai-ini
1772 go-github-com-errata-ai-regexp2
1773 go-github-com-expr-lang-expr
1774 go-github-com-gobwas-glob
1775 go-github-com-jdkato-go-tree-sitter-julia
1776 go-github-com-jdkato-twine
1777 go-github-com-masterminds-sprig-v3
1778 go-github-com-mitchellh-mapstructure
1779 go-github-com-niklasfasching-go-org
1780 go-github-com-olekukonko-tablewriter-0.0.5
1781 go-github-com-otiai10-copy
1782 go-github-com-pelletier-go-toml-v2
1783 go-github-com-pterm-pterm
1784 go-github-com-remeh-sizedwaitgroup
1785 go-github-com-smacker-go-tree-sitter
1786 go-github-com-spf13-pflag
1787 go-github-com-tomwright-dasel-v2
1788 go-github-com-yuin-goldmark
1789 go-golang-org-x-exp
1790 go-golang-org-x-net
1791 go-golang-org-x-sys
1792 go-gopkg-in-yaml-v2))
1793 (home-page "https://github.com/errata-ai/vale")
1794 (synopsis "Fully customizable syntax-aware linter that focuses on your style")
1795 (description
1796 "Vale is a fully extensible linter that focuses on your own writing style
1797by making use of rules in individual YAML files. It is syntax-aware on markup
1798languages such as HTML, Markdown, Asciidoc, and reStructuredText. The
1799community around it also has a list of style guides implemented with Vale in
1800@url{https://github.com/errata-ai/styles, their styles repo}.")
1801 (license license:expat)))
1802
1803(define-public utf-8-lineseparator
1804 (package
1805 (name "utf-8-lineseparator")
1806 (version "8")
1807 (source (origin
1808 (method git-fetch)
1809 (uri (git-reference
1810 (url "https://github.com/pflanze/utf-8-lineseparator")
1811 (commit (string-append "cj" version))))
1812 (file-name (git-file-name name version))
1813 (sha256
1814 (base32
1815 "0rw34r0aiab55mqks9sjzjyskfwgn7mfhy65px1lljyrs2xvvzp5"))))
1816 (build-system gnu-build-system)
1817 (arguments
1818 `(#:make-flags
1819 (list
1820 (string-append "CC=" ,(cc-for-target)))
1821 #:phases
1822 (modify-phases %standard-phases
1823 (delete 'configure)
1824 (replace 'install
1825 (lambda* (#:key inputs outputs #:allow-other-keys)
1826 (let* ((out (assoc-ref outputs "out"))
1827 (bin (string-append out "/bin")))
1828 (install-file "utf-8-lineseparator" bin)))))))
1829 (home-page "https://github.com/pflanze/utf-8-lineseparator")
1830 (synopsis "Line ending detection library")
1831 (description
1832"@code{utf-8-lineseparator} provides a tool to efficiently check text
1833files for valid UTF-8 use and to report which line endings they use.")
1834 (license license:expat)))
1835
1836(define-public csvdiff
1837 (package
1838 (name "csvdiff")
1839 (version "1.4.0")
1840 (source
1841 (origin
1842 (method git-fetch)
1843 (uri (git-reference
1844 (url "https://github.com/aswinkarthik/csvdiff")
1845 (commit (string-append "v" version))))
1846 (file-name (git-file-name name version))
1847 (sha256
1848 (base32
1849 "0cd1ikxsypjqisfnmr7zix3g7x8p892w77086465chyd39gpk97b"))))
1850 (build-system go-build-system)
1851 (arguments
1852 (list
1853 #:install-source? #f
1854 #:import-path "github.com/aswinkarthik/csvdiff"))
1855 (native-inputs
1856 (list go-github-com-cespare-xxhash
1857 go-github-com-fatih-color
1858 go-github-com-spf13-afero
1859 go-github-com-spf13-cobra
1860 go-github-com-stretchr-testify))
1861 (home-page "https://github.com/aswinkarthik/csvdiff")
1862 (synopsis "Fast diff tool for comparing CSV files")
1863 (description "@code{csvdiff} is a diff tool to compute changes between two
1864CSV files. It can compare CSV files with a million records in under 2
1865seconds. It is specifically suited for comparing CSV files dumped from
1866database tables. GNU Diff is orders of magnitude faster for comparing line by
1867line. @code{csvdiff} supports
1868
1869@itemize
1870@item Selective comparison of fields in a row
1871@item Specifying group of columns as primary-key to uniquely identify a row
1872@item Ignoring columns
1873@item Several output formats including colored git style output or
1874JSON for post-processing
1875@end itemize")
1876 (license license:expat)))
1877
1878(define-public miller
1879 (package
1880 (name "miller")
1881 (version "6.15.0")
1882 (source
1883 (origin
1884 (method git-fetch)
1885 (uri (git-reference
1886 (url "https://github.com/johnkerl/miller")
1887 (commit (string-append "v" version))))
1888 (file-name (git-file-name name version))
1889 (sha256
1890 (base32 "00k4gxlbdpnmy9r0qyfa72p7f29qbzzvxniilira3yj85k5rmrxg"))))
1891 (build-system go-build-system)
1892 (arguments
1893 (list
1894 #:install-source? #f
1895 #:import-path "github.com/johnkerl/miller/cmd/mlr"
1896 #:unpack-path "github.com/johnkerl/miller"
1897 #:phases
1898 #~(modify-phases %standard-phases
1899 ;; TODO: Build all provided documentation.
1900 (add-after 'install 'install-man-pages
1901 (lambda* (#:key unpack-path #:allow-other-keys)
1902 (with-directory-excursion (string-append "src/" unpack-path)
1903 (invoke "make" (string-append "PREFIX=" #$output)
1904 "-C" "man" "install")))))))
1905 (native-inputs
1906 (list go-github-com-facette-natsort
1907 go-github-com-johnkerl-lumin
1908 go-github-com-kballard-go-shellquote
1909 go-github-com-klauspost-compress
1910 go-github-com-kshedden-statmodel
1911 go-github-com-lestrrat-go-strftime
1912 go-github-com-mattn-go-isatty
1913 go-github-com-pkg-profile
1914 go-github-com-stretchr-testify
1915 go-golang-org-x-sys
1916 go-golang-org-x-term
1917 go-golang-org-x-text
1918 python-wrapper
1919 ruby))
1920 (home-page "https://miller.readthedocs.io/")
1921 (synopsis "Text-formatted data processing tool")
1922 (description
1923 "Miller (@command{mlr}) is like @command{awk}, @command{sed},
1924@command{cut}, @command{join}, and @command{sort} for data formats such as
1925CSV, TSV, JSON, JSON Lines, and positionally-indexed. It supports format
1926conversion and pretty-printing.")
1927 (license license:bsd-2)))
1928
1929(define-public ack
1930 (package
1931 (name "ack")
1932 (version "3.7.0")
1933 (source (origin
1934 (method git-fetch)
1935 (uri
1936 (git-reference
1937 (url "https://github.com/beyondgrep/ack3")
1938 (commit (string-append "v" version))))
1939 (file-name (git-file-name name version))
1940 (sha256
1941 (base32 "0xrbgjj3nys4158nskd0npqf825xlrqa2x3fqcfz0nnxai2jzbck"))))
1942 (build-system perl-build-system)
1943 (arguments
1944 `(#:phases
1945 (modify-phases %standard-phases
1946 (add-after 'patch-generated-file-shebangs 'patch-more-shebangs
1947 (lambda* (#:key inputs outputs #:allow-other-keys)
1948 (let ((perl (string-append
1949 (assoc-ref inputs "perl")
1950 "/bin/perl"))
1951 (site-perl
1952 (lambda (input)
1953 (format #false "~a/lib/perl5/site_perl/~a"
1954 input
1955 ,(package-version perl)))))
1956 (substitute* "t/ack-type.t"
1957 (("/usr/bin/perl") perl)
1958 (("/usr/bin/env perl") perl))
1959 (substitute* "ack"
1960 (("/bin/perl") ;; add @INC include directories to perl calls
1961 (string-append "/bin/perl -I "
1962 (site-perl
1963 (assoc-ref inputs "perl-file-next"))
1964 " -I "
1965 (site-perl
1966 (assoc-ref outputs "out")))))))))))
1967 (inputs (list perl-file-next))
1968 (home-page "https://beyondgrep.com/")
1969 (synopsis "Code-searching tool for programmers with large source trees")
1970 (description "ack is a tool for finding text inside files. It is designed for
1971hackers and programmers by being fast, ignoring VCS directories, letting a user
1972easily specify file types, match highlighting, Perl-Compatible Regular
1973Expressions, and being faster to type than grep.")
1974 (license license:artistic2.0)))
1975
1976(define-public pandoc-include
1977 (package
1978 (name "pandoc-include")
1979 (version "1.4.3")
1980 (source
1981 (origin
1982 (method git-fetch)
1983 (uri (git-reference
1984 (url "https://github.com/DCsunset/pandoc-include")
1985 (commit (string-append "v" version))))
1986 (file-name (git-file-name name version))
1987 (sha256
1988 (base32 "1db7fhdvhl3jnzwbi5s76jnlgkf0ifw9ngfv63dij4y21g5lhmzj"))))
1989 (build-system pyproject-build-system)
1990 (arguments
1991 ;; XXX: Test can be run with "test/run.py" but fail with error:
1992 ;; json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
1993 (list #:tests? #f))
1994 (native-inputs
1995 (list python-setuptools))
1996 (inputs
1997 (list python-lxml
1998 python-natsort
1999 python-panflute))
2000 (home-page "https://github.com/DCsunset/pandoc-include")
2001 (synopsis "Pandoc filter to allow file and header includes")
2002 (description "@code{pandoc-include} extends Pandoc to support:
2003
2004@enumerate
2005@item include as raw blocks
2006@item indent and dedent included contents
2007@item partial include
2008@item code include
2009@item Unix style pathname
2010@item recursive include
2011@item Yaml header merging
2012@item header include
2013@end enumerate")
2014 (license license:expat)))
2015
2016(define-public yq
2017 (package
2018 (name "yq")
2019 (version "4.50.1")
2020 (source
2021 (origin
2022 (method git-fetch)
2023 (uri (git-reference
2024 (url "https://github.com/mikefarah/yq")
2025 (commit (string-append "v" version))))
2026 (file-name (git-file-name name version))
2027 (sha256
2028 (base32 "1jlnnvqq0f7bm0km2zccwfhga1rqrgyhmx5glvbrkpgjipmlx9fh"))))
2029 (build-system go-build-system)
2030 (arguments
2031 (list
2032 #:install-source? #f
2033 ;; Go provides the binary as the name of the last directory in the
2034 ;; import-path unless the file names is something else than main.go.
2035 ;; The real import-path is "github.com/mikefarah/yq/v4".
2036 #:import-path "github.com/mikefarah/yq"
2037 #:phases
2038 #~(modify-phases %standard-phases
2039 ;; Tests need this.
2040 (add-after 'unpack 'fix-access-to-doc
2041 (lambda* (#:key import-path #:allow-other-keys)
2042 (with-directory-excursion (string-append "src/" import-path)
2043 (for-each make-file-writable
2044 (find-files "./pkg/yqlib/doc" "\\.md"))))))))
2045 (native-inputs
2046 (list go-github-com-a8m-envsubst
2047 go-github-com-alecthomas-participle-v2
2048 go-github-com-alecthomas-repr
2049 go-github-com-dimchansky-utfbom
2050 go-github-com-elliotchance-orderedmap
2051 go-github-com-fatih-color
2052 go-github-com-go-ini-ini
2053 go-github-com-goccy-go-json
2054 go-github-com-goccy-go-yaml
2055 go-github-com-hashicorp-hcl-v2
2056 go-github-com-jinzhu-copier
2057 go-github-com-magiconair-properties
2058 go-github-com-pelletier-go-toml-v2
2059 go-github-com-pkg-diff
2060 go-github-com-spf13-cobra
2061 go-github-com-spf13-pflag
2062 go-github-com-yuin-gopher-lua
2063 go-github-com-zclconf-go-cty
2064 go-go-yaml-in-yaml-v4
2065 go-golang-org-x-net
2066 go-golang-org-x-text
2067 go-gopkg-in-op-go-logging-v1))
2068 (home-page "https://mikefarah.gitbook.io/yq/")
2069 (synopsis "Command-line YAML, JSON, XML, CSV, TOML and properties processor")
2070 (description
2071 "This package provides @code{yq}, a command-line YAML, JSON and XML
2072processor. It uses @code{jq}-like syntax but works with YAML files as well as
2073JSON, XML, properties, CSV and TSV.")
2074 (license license:expat)))