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