perl6.scm 31 KB

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