projects/guix·blob javascript-team · refs

891 lines · 35.1 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2019, 2024 Efraim Flashner <[email protected]>
3;;; Copyright © 2019 Tobias Geerinckx-Rice <[email protected]>
4;;; Copyright © 2022 Paul A. Patience <[email protected]>
5;;; Copyright © 2026 Tomás Ortín Fernández (quanrong) <[email protected]>
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22(define-module (gnu packages perl6)
23 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (guix download)
25 #:use-module (guix git-download)
26 #:use-module (guix packages)
27 #:use-module (guix utils)
28 #:use-module (guix build-system perl)
29 #:use-module (guix build-system rakudo)
30 #:use-module (gnu packages bdw-gc)
31 #:use-module (gnu packages libevent)
32 #:use-module (gnu packages libffi)
33 #:use-module (gnu packages multiprecision)
34 #:use-module (gnu packages perl)
35 #:use-module (gnu packages pkg-config)
36 #:use-module (gnu packages tls))
37
38(define-public moarvm
39 (package
40 (name "moarvm")
41 (version "2026.07")
42 (source
43 (origin
44 (method url-fetch)
45 (uri (string-append "https://moarvm.org/releases/MoarVM-"
46 version ".tar.gz"))
47 (sha256
48 (base32 "0gv1dqxn90m95j1bjwr5rx5ki68spcf0dp4rny39dzxhks5c11as"))
49 (modules '((guix build utils)))
50 (snippet
51 '(begin
52 ;(delete-file-recursively "3rdparty/dynasm") ; JIT
53 (delete-file-recursively "3rdparty/dyncall")
54 (delete-file-recursively "3rdparty/freebsd")
55 (delete-file-recursively "3rdparty/libatomicops")
56 (delete-file-recursively "3rdparty/libuv")
57 (delete-file-recursively "3rdparty/libtommath")
58 (delete-file-recursively "3rdparty/msinttypes")))))
59 (build-system perl-build-system)
60 (arguments
61 `(#:phases
62 (modify-phases %standard-phases
63 (add-after 'unpack 'fix-build
64 (lambda _
65 (substitute* "build/Makefile.in"
66 (("^ +3rdparty/freebsd/.*") ""))))
67 (replace 'configure
68 (lambda* (#:key inputs outputs #:allow-other-keys)
69 (let ((out (assoc-ref outputs "out"))
70 (pkg-config (assoc-ref inputs "pkg-config")))
71 ;; fix building with GCC 14
72 (setenv "CFLAGS" "-fcommon -Wno-incompatible-pointer-types")
73 (setenv "LDFLAGS"
74 ,@(if (target-ppc32?)
75 `((string-append "-Wl,-rpath=" out "/lib" " -latomic"))
76 `((string-append "-Wl,-rpath=" out "/lib"))))
77 (invoke "perl" "Configure.pl"
78 "--prefix" out
79 "--pkgconfig" (string-append pkg-config "/bin/pkg-config")
80 "--has-libtommath"
81 "--has-libatomic_ops"
82 "--has-libffi"
83 "--has-libuv")))))))
84 (home-page "https://moarvm.org/")
85 (native-inputs
86 (list pkg-config))
87 ;; These should be inputs but moar.h can't find them when building Rakudo.
88 (propagated-inputs
89 (list libatomic-ops libffi libtommath libuv))
90 (synopsis "VM for NQP And Rakudo Perl 6")
91 (description
92 "Short for \"Metamodel On A Runtime\", MoarVM is a modern virtual machine
93built for the Rakudo Perl 6 compiler and the NQP Compiler Toolchain. Highlights
94include:
95
96@itemize
97@item Great Unicode support, with strings represented at grapheme level
98@item Dynamic analysis of running code to identify hot functions and loops, and
99perform a range of optimizations, including type specialization and inlining
100@item Support for threads, a range of concurrency control constructs, and
101asynchronous sockets, timers, processes, and more
102@item Generational, parallel, garbage collection
103@item Support for numerous language features, including first class functions,
104exceptions, continuations, runtime loading of code, big integers and interfacing
105with native libraries.
106@end itemize")
107 (license license:artistic2.0)))
108
109(define-public nqp-configure
110 (let ((commit "566ca585735e9dc5abe0f0cf40e1f9912b69c693"))
111 (package
112 (name "nqp-configure")
113 ;; NQP and Rakudo pin different commits of nqp-configure. This is
114 ;; Rakudo's, which is newer and contains NQP's. The version matches
115 ;; the NQP and Rakudo releases it is built with.
116 (version "2026.07")
117 (source
118 (origin
119 (method git-fetch)
120 (uri (git-reference
121 (url "https://github.com/Raku/nqp-configure")
122 (commit commit)))
123 (file-name (git-file-name name version))
124 (sha256
125 (base32 "1i6n6xsw4kdr5rbmi5gn5x6c9665yd7d8x9cqpz870db4dd0bcfa"))))
126 (build-system perl-build-system)
127 (arguments
128 '(#:phases
129 (modify-phases %standard-phases
130 (add-after 'unpack 'create-makefile-and-manifest
131 (lambda _
132 (call-with-output-file "Makefile.PL"
133 (lambda (port)
134 (format port "
135use ExtUtils::MakeMaker;
136WriteMakefile(NAME => 'NQP::Config');\n")))
137 (call-with-output-file "MANIFEST"
138 (lambda (port)
139 (format port "
140LICENSE
141MANIFEST
142Makefile.PL
143README.md
144bin/make.nqp
145doc/Macros.md
146doc/NQP-Config.md
147lib/NQP/Config.pm
148lib/NQP/Config/Test.pm
149lib/NQP/Macros.pm
150t/10-config.t
151t/20-macros.t
152t/30-if-macro.t\n")))))
153 (add-after 'patch-source-shebangs 'patch-more-shebangs
154 (lambda _
155 (substitute* '("bin/make.nqp"
156 "lib/NQP/Config.pm")
157 (("/bin/sh") (which "sh"))))))))
158 (home-page "https://github.com/Raku/nqp-configure")
159 (synopsis "Configuration and build modules for NQP")
160 (description "This library provides support modules for NQP and Rakudo
161@file{Configure.pl} scripts.")
162 (license license:artistic2.0))))
163
164(define-public nqp
165 (package
166 (name "nqp")
167 (version "2026.07")
168 (source
169 (origin
170 (method url-fetch)
171 (uri (string-append "https://rakudo.org/dl/nqp/nqp-"
172 version ".tar.gz"))
173 (sha256
174 (base32 "1k1asa509mln9finqnwbqj9k6qnr23nxy80r1mgxawvq92812dzi"))
175 (modules '((guix build utils)))
176 (snippet
177 '(delete-file-recursively "3rdparty"))))
178 (build-system perl-build-system)
179 (arguments
180 '(#:phases
181 (modify-phases %standard-phases
182 (add-after 'unpack 'fix-paths
183 (lambda _
184 (substitute* "tools/build/gen-version.pl"
185 (("catfile\\(\\$libdir, 'MAST', \\$_\\)")
186 (string-append "catfile('"
187 (assoc-ref %build-inputs "moarvm")
188 "/share/nqp/lib"
189 "', 'MAST', $_)")))))
190 (add-after 'patch-source-shebangs 'patch-more-shebangs
191 (lambda _
192 (substitute* '("t/nqp/111-spawnprocasync.t"
193 "t/nqp/113-run-command.t"
194 "tools/build/gen-js-cross-runner.pl"
195 "tools/build/gen-js-runner.pl"
196 "tools/build/install-js-runner.pl"
197 "tools/build/install-jvm-runner.pl.in")
198 (("/bin/sh") (which "sh")))))
199 (replace 'configure
200 (lambda* (#:key inputs outputs #:allow-other-keys)
201 (let ((out (assoc-ref outputs "out"))
202 (moar (assoc-ref inputs "moarvm")))
203 (invoke "perl" "Configure.pl"
204 "--backends=moar"
205 "--with-moar" (string-append moar "/bin/moar")
206 "--prefix" out)))))))
207 (native-inputs
208 (list nqp-configure))
209 (inputs
210 (list moarvm))
211 (home-page "https://github.com/Raku/nqp")
212 (synopsis "Not Quite Perl")
213 (description "This is \"Not Quite Perl\" -- a lightweight Raku-like
214environment for virtual machines. The key feature of NQP is that it's
215designed to be a very small environment (as compared with, say, Rakudo) and is
216focused on being a high-level way to create compilers and libraries for
217virtual machines like MoarVM, the JVM, and others.
218
219Unlike a full-fledged implementation of Raku, NQP strives to have as small a
220runtime footprint as it can, while still providing a Raku object model and
221regular expression engine for the virtual machine.")
222 (license license:artistic2.0)))
223
224(define-public rakudo
225 (package
226 (name "rakudo")
227 (version "2026.07")
228 (source
229 (origin
230 (method url-fetch)
231 (uri (string-append "https://rakudo.org/dl/rakudo/rakudo-"
232 version ".tar.gz"))
233 (sha256
234 (base32 "0ix727svgp9nl0s7c4vpqynkqz3d1ih9rjzhsmxbxi1dk5rf80kx"))
235 (modules '((guix build utils)))
236 (snippet
237 '(delete-file-recursively "3rdparty"))))
238 (build-system perl-build-system)
239 (arguments
240 `(#:phases
241 (modify-phases %standard-phases
242 (add-after 'unpack 'fix-paths
243 (lambda _
244 (substitute* "tools/templates/Makefile-common-macros.in"
245 (("NQP_CONFIG_DIR = .*")
246 (string-append "NQP_CONFIG_DIR = "
247 (assoc-ref %build-inputs "nqp-configure")
248 "/lib/perl5/site_perl/"
249 ,(package-version perl)
250 "\n")))))
251 (add-after 'patch-source-shebangs 'patch-more-shebangs
252 (lambda _
253 (substitute* '("src/core.c/Proc.rakumod"
254 "t/spec/S29-os/system.t"
255 "tools/build/create-js-runner.pl"
256 "tools/build/create-jvm-runner.pl")
257 (("/bin/sh") (which "sh")))))
258 (replace 'configure
259 (lambda* (#:key inputs outputs #:allow-other-keys)
260 (let ((out (assoc-ref outputs "out"))
261 (nqp (assoc-ref inputs "nqp")))
262 (invoke "perl" "Configure.pl"
263 "--backend=moar"
264 "--with-nqp" (string-append nqp "/bin/nqp")
265 "--prefix" out))))
266 ;; Tests that load modules need a writable home for the
267 ;; precompilation cache.
268 (add-before 'check 'set-home
269 (lambda _
270 (setenv "HOME" (getcwd))))
271 ;; Rakudo looks for the profiler template under its own prefix,
272 ;; but nqp installs it under nqp's. Without it, "--profile"
273 ;; falls back to SQL output.
274 (add-before 'check 'install-profiler-template
275 (lambda* (#:key inputs outputs #:allow-other-keys)
276 (install-file (string-append (assoc-ref inputs "nqp")
277 "/share/nqp/lib/profiler"
278 "/template.html")
279 (string-append (assoc-ref outputs "out")
280 "/share/nqp/lib/profiler"))))
281 ;; This is the recommended tool for distro maintainers to install Raku
282 ;; modules systemwide. See: https://github.com/ugexe/zef/issues/117
283 (add-after 'install 'install-dist-tool
284 (lambda* (#:key outputs #:allow-other-keys)
285 (let* ((out (assoc-ref outputs "out"))
286 (dest (string-append out "/share/perl6/tools")))
287 (install-file "tools/install-dist.raku" dest)
288 (substitute* (string-append dest "/install-dist.raku")
289 (("/usr/bin/env raku")
290 (string-append out "/bin/raku")))))))))
291 (native-inputs
292 (list nqp-configure))
293 (inputs
294 (list moarvm nqp openssl))
295 (home-page "https://rakudo.org/")
296 (native-search-paths
297 (list (search-path-specification
298 (variable "RAKULIB")
299 (separator ",")
300 (files '("share/perl6/lib"
301 "share/perl6/site/lib"
302 "share/perl6/vendor/lib")))))
303 (synopsis "Raku Compiler")
304 (description "Rakudo is a compiler that implements the Raku specification
305and runs on top of several virtual machines.")
306 (license license:artistic2.0)))
307
308(define-public perl6-format-lisp
309 (let ((commit "1ae31e2a9366b287a83a9d451295fc9e3fb6d36f")
310 (revision "0"))
311 (package
312 (name "perl6-format-lisp")
313 (version (git-version "0.0.2" revision commit))
314 (source
315 (origin
316 (method git-fetch)
317 (uri (git-reference
318 (url "https://github.com/raku-community-modules/Format-Lisp")
319 (commit commit)))
320 (file-name (git-file-name name version))
321 (sha256
322 (base32 "1rhkd11xdyw99vl6ickjin0x7nhlgkq3qhpf8zp9jky0k711gxmr"))))
323 (build-system rakudo-build-system)
324 (arguments '(#:with-zef? #f))
325 (home-page "https://github.com/raku-community-modules/Format-Lisp")
326 (synopsis "Common Lisp's format call in Raku")
327 (description "This Raku module implements Common Lisp's @code{format}
328language.")
329 (license license:artistic2.0))))
330
331(define-public perl6-grammar-debugger
332 ;; Last commit was September 2017.
333 (let ((commit "0375008027c8caa216bd869476ce59ae09b2a702")
334 (revision "1"))
335 (package
336 (name "perl6-grammar-debugger")
337 (version (git-version "1.0.1" revision commit))
338 (source
339 (origin
340 (method git-fetch)
341 (uri (git-reference
342 (url "https://github.com/jnthn/grammar-debugger")
343 (commit commit)))
344 (file-name (git-file-name name version))
345 (sha256
346 (base32 "0y826z3m276n7ia810hgcb3div67nxmx125m2fzlc16994zd5vm5"))))
347 (build-system rakudo-build-system)
348 (propagated-inputs
349 (list perl6-terminal-ansicolor))
350 (home-page "https://github.com/jnthn/grammar-debugger")
351 (synopsis "Simple tracing and debugging support for Raku grammars")
352 (description "This module provides a simple debugger for grammars. Just
353@code{use} it: use @code{Grammar::Debugger;} and any grammar in the lexical
354scope of the use statement will automatically have debugging enabled. The
355debugger will break execution when you first enter the grammar, and provide a
356prompt.")
357 (license license:artistic2.0))))
358
359(define-public perl6-grammar-profiler-simple
360 ;; Last commit was June 2017.
361 (let ((commit "c0aca5fab323b2974821dabd6b89330c609e0b7d")
362 (revision "1"))
363 (package
364 (name "perl6-grammar-profiler-simple")
365 (version (git-version "0.02" revision commit))
366 (source
367 (origin
368 (method git-fetch)
369 (uri (git-reference
370 (url "https://github.com/perlpilot/Grammar-Profiler-Simple")
371 (commit commit)))
372 (file-name (git-file-name name version))
373 (sha256
374 (base32 "1qcsa4lmcilp3vp0jng0hrgzyzxin9ayg2wjvkcd0k6h7djx9dff"))))
375 (build-system rakudo-build-system)
376 (arguments '(#:with-zef? #f))
377 (home-page "https://github.com/perlpilot/Grammar-Profiler-Simple")
378 (synopsis "Simple rule profiling for Raku grammars")
379 (description "This module provides a simple profiler for Raku grammars.
380To enable profiling simply add use @code{Grammar::Profiler::Simple;} to your
381code. Any grammar in the lexical scope of the use statement will automatically
382have profiling information collected when the grammar is used.")
383 (license license:artistic2.0))))
384
385(define-public perl6-json
386 ;; The commit where 1.0 was “tagged”.
387 (let ((commit "a5ef8c179350dae44ce7fb1abb684fc62c1c2b99"))
388 (package
389 (name "perl6-json")
390 (version "1.0")
391 (source
392 (origin
393 (method git-fetch)
394 (uri (git-reference
395 (url "https://github.com/moritz/json")
396 (commit commit)))
397 (file-name (git-file-name name version))
398 (sha256
399 (base32 "1kzryxkqyr129rcckd4jh0dfxdgzv71qx8dpkpm1divbfjyknlay"))))
400 (build-system rakudo-build-system)
401 (arguments '(#:with-zef? #f))
402 (home-page "https://github.com/moritz/json")
403 (synopsis "Minimal JSON (de)serializer")
404 (description "This module is a simple Raku module for serializing and
405deserializing JSON.")
406 (license license:artistic2.0))))
407
408(define-public perl6-json-class
409 (package
410 (name "perl6-json-class")
411 (version "0.0.18")
412 (source
413 (origin
414 (method git-fetch)
415 (uri (git-reference
416 (url "https://github.com/jonathanstowe/JSON-Class")
417 (commit (string-append "v" version))))
418 (file-name (git-file-name name version))
419 (sha256
420 (base32 "0686qpcb6p5isjcsksrgsr1rh926cnhs6r091p5p3lh2fd575g1d"))))
421 (build-system rakudo-build-system)
422 (native-inputs
423 (list perl6-json-fast))
424 (propagated-inputs
425 (list perl6-json-marshal perl6-json-unmarshal))
426 (home-page "https://github.com/jonathanstowe/JSON-Class")
427 (synopsis "Provide simple serialization/deserialization of objects to/from JSON")
428 (description "This is a simple role that provides methods to instantiate a
429class from a JSON string that (hopefully) represents it, and to serialize an
430object of the class to a JSON string. The JSON created from an instance
431should round trip to a new instance with the same values for the public
432attributes. Private attributes (that is ones without accessors,) will be
433ignored for both serialization and deserialization. The exact behaviour
434depends on that of @code{JSON::Marshal} and @code{JSON::Unmarshal}
435respectively.")
436 (license license:artistic2.0)))
437
438(define-public perl6-json-fast
439 (package
440 (name "perl6-json-fast")
441 (version "0.17")
442 (source
443 (origin
444 (method git-fetch)
445 (uri (git-reference
446 (url "https://github.com/timo/json_fast")
447 (commit version)))
448 (file-name (git-file-name name version))
449 (sha256
450 (base32 "1gckca9m6jkz6s59rpwf59721q6icfm45jj49sw3vdjr6jh2dgdb"))))
451 (build-system rakudo-build-system)
452 (arguments '(#:with-zef? #f))
453 (home-page "https://github.com/timo/json_fast")
454 (synopsis "Raku JSON parser")
455 (description "A naive imperative JSON parser in pure Raku (but with direct
456access to @code{nqp::} ops), to evaluate performance against @code{JSON::Tiny}.
457It is a drop-in replacement for @code{JSON::Tiny}'s @code{from-json} and
458@code{to-json} subs, but it offers a few extra features.")
459 (license license:artistic2.0)))
460
461(define-public perl6-json-marshal
462 (package
463 (name "perl6-json-marshal")
464 (version "0.0.23")
465 (source
466 (origin
467 (method git-fetch)
468 (uri (git-reference
469 (url "https://github.com/jonathanstowe/JSON-Marshal")
470 (commit (string-append "v" version))))
471 (file-name (git-file-name name version))
472 (sha256
473 (base32 "057xmdadhy5wkbhr6w1iybv2j7qf4bf8d4cp8m4qdcgk6pqzpkgc"))))
474 (build-system rakudo-build-system)
475 (native-inputs
476 (list perl6-json-fast))
477 (propagated-inputs
478 (list perl6-json-fast perl6-json-name))
479 (home-page "https://github.com/jonathanstowe/JSON-Marshal")
480 (synopsis "Simple serialization of objects to JSON")
481 (description "This library provides a single exported subroutine to create
482a JSON representation of an object. It should round trip back into an object
483of the same class using @code{JSON::Unmarshal}.")
484 (license license:artistic2.0)))
485
486(define-public perl6-json-name
487 (package
488 (name "perl6-json-name")
489 (version "0.0.7")
490 (source
491 (origin
492 (method git-fetch)
493 (uri (git-reference
494 (url "https://github.com/jonathanstowe/JSON-Name")
495 (commit (string-append "v" version))))
496 (file-name (git-file-name name version))
497 (sha256
498 (base32 "1n11ny26afvjwq0dnp12nqizsk9chrigcy8w26163i5kq3zcqsrv"))))
499 (build-system rakudo-build-system)
500 (propagated-inputs
501 (list perl6-json-optin))
502 (home-page "https://github.com/jonathanstowe/JSON-Name")
503 (synopsis "Provide a trait to store an alternative JSON name")
504 (description "This is released as a dependency of @code{JSON::Marshal} and
505@code{JSON::Unmarshal} in order to save duplication, it is intended to store a
506separate JSON name for an attribute where the name of the JSON attribute might be
507changed, either for aesthetic reasons or the name is not a valid Perl identifier.
508It will of course also be needed in classes that are going to use
509@code{JSON::Marshal} or @code{JSON::Unmarshal} for serialization/deserialization.")
510 (license license:artistic2.0)))
511
512(define-public perl6-json-optin
513 (package
514 (name "perl6-json-optin")
515 (version "0.0.2")
516 (source
517 (origin
518 (method git-fetch)
519 (uri (git-reference
520 (url "https://github.com/jonathanstowe/JSON-OptIn")
521 (commit (string-append "v" version))))
522 (file-name (git-file-name name version))
523 (sha256
524 (base32 "18373pcjkxqmbi9033jnaap48xs8w83lbx8fg6minzyd0q7pnjrw"))))
525 (build-system rakudo-build-system)
526 (arguments '(#:with-zef? #f))
527 (home-page "https://github.com/jonathanstowe/JSON-OptIn")
528 (synopsis "Provide a trait and role to identify opt-in JSON serialization")
529 (description "This provides a trait and a role for the identification of
530`opt in' serializable attributes in, e.g., @code{JSON::Marshal}. It's
531probably not necessary to use this directly as it will be required by, e.g.,
532@code{JSON::Name}, but it's just more convenient to package it separately.")
533 (license license:artistic2.0)))
534
535(define-public perl6-json-unmarshal
536 ;; Last commit was May 2017.
537 (let ((commit "e1b6288c5f3165058f36c0f4e171cdf2dfd640da")
538 (revision "1"))
539 (package
540 (name "perl6-json-unmarshal")
541 (version (git-version "0.0.0" revision commit))
542 (source
543 (origin
544 (method git-fetch)
545 (uri (git-reference
546 (url "https://github.com/tadzik/JSON-Unmarshal")
547 (commit commit)))
548 (file-name (git-file-name name version))
549 (sha256
550 (base32 "14azsmzmwdn8k0gqcpvballharcvzylmlyrx2wmv4kpqfnz29fjc"))))
551 (build-system rakudo-build-system)
552 (propagated-inputs
553 (list perl6-json-fast perl6-json-name))
554 (home-page "https://github.com/tadzik/JSON-Unmarshal")
555 (synopsis "Make JSON from an Object")
556 (description "This library provides a single exported subroutine to
557create an object from a JSON representation of an object.")
558 (license license:expat))))
559
560(define-public perl6-license-spdx
561 (package
562 (name "perl6-license-spdx")
563 (version "3.16.0")
564 (source
565 (origin
566 (method git-fetch)
567 (uri (git-reference
568 (url "https://github.com/jonathanstowe/License-SPDX")
569 (commit (string-append "v" version))))
570 (file-name (git-file-name name version))
571 (sha256
572 (base32 "0sv9rrrfn437crynmbs3aks5xcqchjkbr1k31fq0dphfaw88k5v3"))))
573 (build-system rakudo-build-system)
574 (propagated-inputs
575 (list perl6-json-class))
576 (home-page "https://github.com/jonathanstowe/License-SPDX")
577 (synopsis "Abstraction over the SPDX License List")
578 (description "This provides an abstraction over the SPDX License List as
579provided in JSON format. Its primary raison d'être is to help the licence
580checking of @code{Test::META} and to allow for the warning about deprecated
581licences therein.")
582 (license license:artistic2.0)))
583
584(define-public perl6-meta6
585 (package
586 (name "perl6-meta6")
587 (version "0.0.26")
588 (source
589 (origin
590 (method git-fetch)
591 (uri (git-reference
592 (url "https://github.com/jonathanstowe/META6")
593 (commit (string-append "v" version))))
594 (file-name (git-file-name name version))
595 (sha256
596 (base32 "1jg8z0y29df9sy6za285jy38c3v6dl54ar54dp6marzcih02payx"))))
597 (build-system rakudo-build-system)
598 (native-inputs
599 (list perl6-json-fast))
600 (propagated-inputs
601 (list perl6-json-class))
602 (home-page "https://github.com/jonathanstowe/META6")
603 (synopsis "Do things with Raku META files")
604 (description "This provides a representation of the Raku META files
605specification -- the META file data can be read, created, parsed and written
606in a manner that is conformant with the specification.
607
608Where they are known about, it also makes allowance for customary usage in
609existing software (such as installers and so forth).
610
611The intent of this is to allow the generation and testing of META files for
612module authors, so it can provide meta-information about whether the
613attributes are mandatory as per the spec and, where known, the places that
614customary attributes are used.")
615 (license license:artistic2.0)))
616
617(define-public perl6-mime-base64
618 (package
619 (name "perl6-mime-base64")
620 (version "1.2.3")
621 (source
622 (origin
623 (method git-fetch)
624 (uri (git-reference
625 (url "https://github.com/raku-community-modules/MIME-Base64")
626 (commit version)))
627 (file-name (git-file-name name version))
628 (sha256
629 (base32 "19bndwbjr05gg8rrq2msmw1ik8xw2r3gbd77vxrp8l6c674zgy95"))))
630 (build-system rakudo-build-system)
631 (arguments '(#:with-zef? #f))
632 (home-page "https://github.com/raku-community-modules/MIME-Base64")
633 (synopsis "Encoding and decoding Base64 ASCII strings")
634 (description "This Raku module implements encoding and decoding to and
635from base64.")
636 (license license:artistic2.0)))
637
638(define-public perl6-oo-monitors
639 (package
640 (name "perl6-oo-monitors")
641 (version "1.1.1")
642 (source
643 (origin
644 (method git-fetch)
645 (uri (git-reference
646 (url "https://github.com/jnthn/oo-monitors")
647 (commit (string-append "release-" version))))
648 (file-name (git-file-name name version))
649 (sha256
650 (base32 "1aqb0x2vnmpi3knkf5v5aix6h29ln80gpxwa181i8kwfpxs8ir9f"))))
651 (build-system rakudo-build-system)
652 (arguments '(#:with-zef? #f))
653 (home-page "https://github.com/jnthn/oo-monitors")
654 (synopsis "Monitors with condition variables for Raku")
655 (description "A monitor provides per-instance mutual exclusion for objects.
656This means that for a given object instance, only one thread can ever be inside
657its methods at a time. This is achieved by a lock being associated with each
658object. The lock is acquired automatically at the entry to each method in the
659monitor. Condition variables are also supported.")
660 (license license:artistic2.0)))
661
662(define-public perl6-svg
663 ;; Latest commit, basically unchanged since August 2015.
664 (let ((commit "07190c0602aa276e5319f06aa0012452dbff3582")
665 (revision "1"))
666 (package
667 (name "perl6-svg")
668 (version (git-version "0.0.0" revision commit))
669 (source
670 (origin
671 (method git-fetch)
672 (uri (git-reference
673 (url "https://github.com/moritz/svg")
674 (commit commit)))
675 (file-name (git-file-name name version))
676 (sha256
677 (base32 "0mkjdhg7ajksdn61n8fqhyzfd7ly9myazsvpsm02a5c2q73hdygg"))))
678 (build-system rakudo-build-system)
679 (propagated-inputs
680 (list perl6-xml-writer))
681 (home-page "https://github.com/moritz/svg")
682 (synopsis "Raku module to generate SVG")
683 (description "This is a Raku module that makes it easy to write
684@dfn{Scalable Vector Graphic files} (SVG). Right now it is a shallow wrapper
685around @code{XML::Writer}, adding only the @samp{xmlns} attributes that
686identify an XML file as SVG.")
687 (license license:artistic2.0))))
688
689(define-public perl6-svg-plot
690 ;; Latest commit.
691 (let ((commit "062570a78fd38c3c6baba29dfe2fbb8ca014f4de")
692 (revision "1"))
693 (package
694 (name "perl6-svg-plot")
695 (version (git-version "0.0.0" revision commit))
696 (source
697 (origin
698 (method git-fetch)
699 (uri (git-reference
700 (url "https://github.com/moritz/svg-plot")
701 (commit commit)))
702 (file-name (git-file-name name version))
703 (sha256
704 (base32 "095ga5hbg92jnmczxvhk1hjz14yr334zyf8cph4w5w5frcza44my"))))
705 (build-system rakudo-build-system)
706 (propagated-inputs
707 (list perl6-svg))
708 (home-page "https://github.com/moritz/svg-plot")
709 (synopsis "Raku charting and plotting library that produces SVG output")
710 (description "@code{SVG::Plot} is a simple 2D chart plotter for Raku.
711It currently supports bars, stacked bars, lines and points (both equally spaced
712with optional labels, or xy plots).")
713 (license license:artistic2.0))))
714
715(define-public perl6-tap-harness
716 (package
717 (name "perl6-tap-harness")
718 (version "0.3.5")
719 (source
720 (origin
721 (method git-fetch)
722 (uri (git-reference
723 (url "https://github.com/Raku/tap-harness6")
724 (commit version)))
725 (file-name (git-file-name name version))
726 (sha256
727 (base32 "162crdy8g6xhnry26pjma2panm0c79n26igmljg79al4bqj9lyc9"))))
728 (build-system rakudo-build-system)
729 (arguments
730 '(#:with-zef? #f
731 #:with-prove6? #f
732 #:phases
733 (modify-phases %standard-phases
734 (replace 'check
735 (lambda _
736 ;; Rakudo needs a writable home for the precompilation cache.
737 (setenv "HOME" (getcwd))
738 (apply invoke "raku" "-MTAP" "-Ilib" (find-files "t" "\\.t$")))))))
739 (home-page "https://github.com/Raku/tap-harness6")
740 (synopsis "TAP harness for Raku")
741 (description "This module provides the @command{prove6} command which runs a
742TAP based test suite and prints a report. The @command{prove6} command is a
743minimal wrapper around an instance of this module.")
744 (license license:artistic2.0)))
745
746(define-public perl6-terminal-ansicolor
747 ;; The commit where 0.5 was “tagged”.
748 (let ((commit "edded4a7116ce11cbc9fb5a83669c7ba119d0212"))
749 (package
750 (name "perl6-terminal-ansicolor")
751 (version "0.5")
752 (source
753 (origin
754 (method git-fetch)
755 (uri (git-reference
756 (url "https://github.com/tadzik/Terminal-ANSIColor")
757 (commit commit)))
758 (file-name (git-file-name name version))
759 (sha256
760 (base32 "1apm999azkyg5s35gid12wq019aqnvzrkz7qjmipd74mdxgr00x7"))))
761 (build-system rakudo-build-system)
762 (arguments '(#:with-zef? #f))
763 (home-page "https://github.com/tadzik/Terminal-ANSIColor")
764 (synopsis "Colorize terminal output")
765 (description "This is a @code{Terminal::ANSIColor} module for Raku.")
766 (license license:expat))))
767
768(define-public perl6-test-meta
769 (package
770 (name "perl6-test-meta")
771 (version "0.0.17")
772 (source
773 (origin
774 (method git-fetch)
775 (uri (git-reference
776 (url "https://github.com/jonathanstowe/Test-META")
777 (commit (string-append "v" version))))
778 (file-name (git-file-name name version))
779 (sha256
780 (base32 "0kd4yixx6lac240lcx0f5pfswspvpp43034mq2vs65zxghsvvcmf"))))
781 (build-system rakudo-build-system)
782 (propagated-inputs
783 (list perl6-license-spdx perl6-meta6 perl6-uri))
784 (home-page "https://github.com/jonathanstowe/Test-META")
785 (synopsis "Test a distribution's META file")
786 (description "This provides a simple mechanism for module authors to have
787some confidence that they have a working distribution META description file.")
788 (license license:artistic2.0)))
789
790(define-public perl6-test-mock
791 (package
792 (name "perl6-test-mock")
793 (version "1.7")
794 (source
795 (origin
796 (method git-fetch)
797 (uri (git-reference
798 (url "https://github.com/raku-community-modules/Test-Mock")
799 (commit version)))
800 (file-name (git-file-name name version))
801 (sha256
802 (base32 "1w23pnahagj6gls0227zhwq5mgbha4y5pdi5kimfq67fd613zj43"))))
803 (build-system rakudo-build-system)
804 (propagated-inputs
805 (list perl6-oo-monitors))
806 (home-page "https://github.com/raku-community-modules/Test-Mock")
807 (synopsis "Module for simply generating and checking mock objects")
808 (description "@code{Test::Mock} is a module that works alongside the
809standard Test module to help you write tests when you want to verify what
810methods are called on an object, while still having calls to undefined methods
811die. You get started just as normal with the test file, but also add a
812@code{use} statement for @code{Test::Mock}.")
813 (license license:artistic2.0)))
814
815(define-public perl6-uri
816 ;; The commit where 0.3.5 was “tagged”.
817 (let ((commit "2e62d0f117c95a43e61ddb018dcacba8036aa3d5"))
818 (package
819 (name "perl6-uri")
820 (version "0.3.5")
821 (source
822 (origin
823 (method git-fetch)
824 (uri (git-reference
825 (url "https://github.com/raku-community-modules/URI")
826 (commit commit)))
827 (file-name (git-file-name name version))
828 (sha256
829 (base32 "1a03r80zxpvnsjf2z5r8lk434v2ysrpaymqa6xq975l4124gckkx"))))
830 (build-system rakudo-build-system)
831 (arguments '(#:with-zef? #f))
832 (home-page "https://github.com/raku-community-modules/URI")
833 (synopsis "URI implementation using Raku")
834 (description "A URI implementation using Raku grammars to implement RFC
8353986 BNF. Currently only implements parsing. Includes @code{URI::Escape} to
836(un?)escape characters that aren't otherwise allowed in a URI with % and a hex
837character numbering.")
838 (license license:artistic2.0))))
839
840(define-public perl6-xml-writer
841 ;; Last commit was May 2017
842 (let ((commit "4d30a9d8e06033ca97387971b653817becd5a759")
843 (revision "1"))
844 (package
845 (name "perl6-xml-writer")
846 (version (git-version "0.0.0" revision commit))
847 (source
848 (origin
849 (method git-fetch)
850 (uri (git-reference
851 (url "https://github.com/masak/xml-writer")
852 (commit commit)))
853 (file-name (git-file-name name version))
854 (sha256
855 (base32 "1kwrf7akp70kyzw1b90khp71a6hpilihwndy2jsjpffcd4hd4m4z"))))
856 (build-system rakudo-build-system)
857 (arguments '(#:with-zef? #f))
858 (home-page "https://github.com/masak/xml-writer")
859 (synopsis "Raku module to generate XML")
860 (description "@code{XML::Writer} is a module for creating XML in Raku.")
861 (license license:artistic2.0))))
862
863(define-public perl6-zef
864 (package
865 (name "perl6-zef")
866 (version "0.13.8")
867 (source
868 (origin
869 (method git-fetch)
870 (uri (git-reference
871 (url "https://github.com/ugexe/zef")
872 (commit (string-append "v" version))))
873 (file-name (git-file-name name version))
874 (sha256
875 (base32 "0zmx2gavi975811kskv5j4j2zsysnxfklwx0azn8rffraadnhscm"))))
876 (build-system rakudo-build-system)
877 (arguments
878 '(#:with-zef? #f
879 #:phases
880 (modify-phases %standard-phases
881 (replace 'check
882 (lambda _
883 (setenv "HOME" "/tmp")
884 (invoke "raku" "-I." "bin/zef" "--debug"
885 "--tap-harness" "test" "."))))))
886 (home-page "https://github.com/ugexe/zef")
887 (synopsis "Raku Module Management")
888 (description "Zef is a Raku package (module) manager. It can be used to
889download and install Raku modules in your home directory or as a system-wide
890module.")
891 (license license:artistic2.0)))