all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#34831] [PATCH 00/25] Add perl6
@ 2019-03-12 20:16 Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 01/25] gnu: Add moarvm Efraim Flashner
                   ` (25 more replies)
  0 siblings, 26 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:16 UTC (permalink / raw)
  To: 34831

I think my perl6 patches are more or less ready. There's a few rough
edges but I'm pretty sure it works well enough. I could use some help
with the build-system code, two of my flags aren't being transfered
correctly and right now I'm working around it. For a list of packages
for testing I took the list from rakudo-star and started at the top.

The first 3 are to build rakudo itself. The next one is the build
system. perl6-tap-harness gives us the 'prove6' binary which is useful
for testing. perl6-zef gives us the 'zef' binary which is to perl6 what
'pip' is to perl5. The rest are a bunch of packages I packaged to test
everything.

To make it easier to review I've also pushed it as 'wip-perl6' to
savannah.

Efraim Flashner (25):
  gnu: Add moarvm.
  gnu: Add nqp.
  gnu: Add rakudo.
  build: Add rakudo-build-system.
  gnu: Add perl6-tap-harness.
  gnu: Add perl6-zef.
  gnu: Add perl6-uri.
  gnu: Add perl6-json-fast.
  gnu: Add perl6-json-name.
  gnu: Add perl6-json-unmarshal.
  gnu: Add perl6-json-marshal.
  gnu: Add perl6-json-class.
  gnu: Add perl6-meta6.
  gnu: Add perl6-license-spdx.
  gnu: Add perl6-test-meta.
  gnu: Add perl6-xml-writer.
  gnu: Add perl6-svg.
  gnu: Add perl6-svg-plot.
  gnu: Add perl6-terminal-ansicolor.
  gnu: Add perl6-oo-monitors.
  gnu: Add perl6-test-mock.
  gnu: Add perl6-grammar-profiler-simple.
  gnu: Add perl6-grammar-debugger.
  gnu: Add perl6-mime-base64.
  gnu: Add perl6-json.

 Makefile.am                        |   3 +
 doc/guix.texi                      |  20 +-
 gnu/local.mk                       |   3 +-
 gnu/packages/perl6.scm             | 788 +++++++++++++++++++++++++++++
 guix/build-system/rakudo.scm       | 155 ++++++
 guix/build/rakudo-build-system.scm | 140 +++++
 6 files changed, 1107 insertions(+), 2 deletions(-)
 create mode 100644 gnu/packages/perl6.scm
 create mode 100644 guix/build-system/rakudo.scm
 create mode 100644 guix/build/rakudo-build-system.scm

-- 
2.21.0

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 01/25] gnu: Add moarvm.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
@ 2019-03-12 20:19 ` Efraim Flashner
  2019-03-19 10:05   ` Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 02/25] gnu: Add nqp Efraim Flashner
                   ` (24 subsequent siblings)
  25 siblings, 1 reply; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:19 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (moarvm): New variable.
---
 gnu/local.mk           |  3 +-
 gnu/packages/perl6.scm | 93 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 95 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/perl6.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index af2bf87273..79b93d5966 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -10,7 +10,7 @@
 # Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 # Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
-# Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+# Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 # Copyright © 2016, 2017 Jan Nieuwenhuizen <janneke@gnu.org>
 # Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 # Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
@@ -364,6 +364,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/perl-check.scm			\
   %D%/packages/perl-compression.scm		\
   %D%/packages/perl-web.scm			\
+  %D%/packages/perl6.scm			\
   %D%/packages/photo.scm			\
   %D%/packages/phabricator.scm 			\
   %D%/packages/php.scm				\
diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
new file mode 100644
index 0000000000..7e92c865aa
--- /dev/null
+++ b/gnu/packages/perl6.scm
@@ -0,0 +1,93 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages perl6)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system perl)
+  #:use-module (gnu packages bdw-gc)
+  #:use-module (gnu packages libevent)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages pkg-config))
+
+(define-public moarvm
+  (package
+    (name "moarvm")
+    (version "2018.12")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://moarvm.org/releases/MoarVM-"
+                            version ".tar.gz"))
+        (sha256
+         (base32
+          "0fv98712k1gk56a612388db1azjsyabsbygav1pa3z2kd6js4cz4"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            ;(delete-file-recursively "3rdparty/dynasm") ; JIT
+            (delete-file-recursively "3rdparty/dyncall")
+            (delete-file-recursively "3rdparty/freebsd")
+            (delete-file-recursively "3rdparty/libatomicops")
+            (delete-file-recursively "3rdparty/libuv")
+            ;(delete-file-recursively "3rdparty/libtommath") v1.0
+            (delete-file-recursively "3rdparty/msinttypes")
+            #t))))
+    (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out        (assoc-ref outputs "out"))
+                   (pkg-config (assoc-ref inputs "pkg-config")))
+               (setenv "LDFLAGS" (string-append "-Wl,-rpath=" out "/lib"))
+               (invoke "perl" "Configure.pl"
+                       "--prefix" out
+                       "--pkgconfig" (string-append pkg-config "/bin/pkg-config")
+                       "--has-libatomic_ops"
+                       "--has-libffi"
+                       "--has-libuv")))))))
+    (home-page "https://moarvm.org/")
+    ;; These should be inputs but moar.h can't find them when building rakudo
+    (propagated-inputs
+     `(("libatomic-ops" ,libatomic-ops)
+       ("libuv" ,libuv)))
+    (inputs
+     `(("libffi" ,libffi)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (synopsis "VM for NQP And Rakudo Perl 6")
+    (description
+     "Short for \"Metamodel On A Runtime\", MoarVM is a modern virtual machine
+built for the Rakudo Perl 6 compiler and the NQP Compiler Toolchain.  Highlights
+include:
+
+@itemize
+@item Great Unicode support, with strings represented at grapheme level
+@item Dynamic analysis of running code to identify hot functions and loops, and
+perform a range of optimizations, including type specialization and inlining
+@item Support for threads, a range of concurrency control constructs, and
+asynchronous sockets, timers, processes, and more
+@item Generational, parallel, garbage collection
+@item Support for numerous language features, including first class functions,
+exceptions, continuations, runtime loading of code, big integers and interfacing
+with native libraries.
+@end itemize")
+    (license license:artistic2.0)))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 02/25] gnu: Add nqp.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 01/25] gnu: Add moarvm Efraim Flashner
@ 2019-03-12 20:19 ` Efraim Flashner
  2019-03-19 10:02   ` Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 03/25] gnu: Add rakudo Efraim Flashner
                   ` (23 subsequent siblings)
  25 siblings, 1 reply; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:19 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (nqp): New variable.
---
 gnu/packages/perl6.scm | 68 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 7e92c865aa..344bb4efda 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -19,6 +19,7 @@
 (define-module (gnu packages perl6)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix build-system perl)
   #:use-module (gnu packages bdw-gc)
@@ -91,3 +92,70 @@ exceptions, continuations, runtime loading of code, big integers and interfacing
 with native libraries.
 @end itemize")
     (license license:artistic2.0)))
+
+(define-public nqp
+  (package
+    (name "nqp")
+    (version "2018.12")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/perl6/nqp.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1bwvyfyhirqi46p0j5m1ri98rxbfks8wc5amiaqwqyqq7x1l25xd"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            (delete-file-recursively "3rdparty") #t))))
+    (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'patch-source-shebangs 'patch-more-shebangs
+           (lambda _
+             (substitute* '("tools/build/install-jvm-runner.pl.in"
+                            "tools/build/gen-js-cross-runner.pl"
+                            "tools/build/gen-js-runner.pl"
+                            "tools/build/install-js-runner.pl"
+                            "tools/build/install-moar-runner.pl"
+                            "tools/build/gen-moar-runner.pl"
+                            "t/nqp/111-spawnprocasync.t"
+                            "t/nqp/113-run-command.t")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-after 'unpack 'patch-source-date
+           (lambda _
+             (substitute* "tools/build/gen-version.pl"
+               (("gmtime") "gmtime(0)"))
+             #t))
+         (add-after 'unpack 'remove-failing-test
+           ;; One subtest fails for unknown reasons
+           (lambda _
+             (delete-file "t/nqp/019-file-ops.t")
+             #t))
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out  (assoc-ref outputs "out"))
+                   (moar (assoc-ref inputs "moarvm")))
+               (invoke "perl" "Configure.pl"
+                       "--backends=moar"
+                       "--with-moar" (string-append moar "/bin/moar")
+                       "--prefix" out)))))))
+    (inputs
+     `(("moarvm" ,moarvm)))
+    (home-page "https://github.com/perl6/nqp")
+    (synopsis "Not Quite Perl")
+    (description "This is \"Not Quite Perl\" -- a lightweight Perl 6-like
+environment for virtual machines.  The key feature of NQP is that it's designed
+to be a very small environment (as compared with, say, perl6 or Rakudo) and is
+focused on being a high-level way to create compilers and libraries for virtual
+machines like MoarVM, the JVM, and others.
+
+Unlike a full-fledged implementation of Perl 6, NQP strives to have as small a
+runtime footprint as it can, while still providing a Perl 6 object model and
+regular expression engine for the virtual machine.")
+    (license license:artistic2.0)))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 03/25] gnu: Add rakudo.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 01/25] gnu: Add moarvm Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 02/25] gnu: Add nqp Efraim Flashner
@ 2019-03-12 20:19 ` Efraim Flashner
  2019-03-19 10:04   ` Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 04/25] build: Add rakudo-build-system Efraim Flashner
                   ` (22 subsequent siblings)
  25 siblings, 1 reply; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:19 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (rakudo): New variable.
---
 gnu/packages/perl6.scm | 70 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 69 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 344bb4efda..9659361309 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -25,7 +25,8 @@
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
-  #:use-module (gnu packages pkg-config))
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages tls))
 
 (define-public moarvm
   (package
@@ -159,3 +160,70 @@ Unlike a full-fledged implementation of Perl 6, NQP strives to have as small a
 runtime footprint as it can, while still providing a Perl 6 object model and
 regular expression engine for the virtual machine.")
     (license license:artistic2.0)))
+
+(define-public rakudo
+  (package
+    (name "rakudo")
+    (version "2018.12")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/rakudo/rakudo.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1g8n1vmpi3g6qd0bj59lwgmcqdwlyg3nciyxbdnq7bw7qp12k0p4"))))
+    (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source-date
+           (lambda _
+             (substitute* "tools/build/gen-version.pl"
+               (("gmtime") "gmtime(0)"))
+             #t))
+         (add-after 'patch-source-shebangs 'patch-more-shebangs
+           (lambda _
+             (substitute* '("tools/build/create-js-runner.pl"
+                            "tools/build/create-moar-runner.p6"
+                            "tools/build/create-jvm-runner.pl"
+                            "src/core/Proc.pm6")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (nqp (assoc-ref inputs "nqp")))
+               (invoke "perl" "./Configure.pl"
+                       "--backend=moar"
+                       "--with-nqp" (string-append nqp "/bin/nqp")
+                       "--prefix" out))))
+         ;; This is the recommended tool to use for installing perl6 modules as
+         ;; a distribution. See: https://github.com/ugexe/zef/issues/117
+         (add-after 'install 'install-dist-tool
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (dest (string-append out "/share/perl6/tools")))
+               (install-file "tools/install-dist.p6" dest)
+               (substitute* (string-append dest "/install-dist.p6")
+                 (("/usr/bin/env perl6")
+                  (string-append out "/bin/perl6"))))
+             #t)))))
+    (inputs
+     `(("moarvm" ,moarvm)
+       ("nqp" ,nqp)
+       ("openssl" ,openssl)))
+    (home-page "https://rakudo.org/")
+    (native-search-paths
+      (list (search-path-specification
+              (variable "PERL6LIB")
+              (separator ",")
+              (files '("share/perl6/lib"
+                       "share/perl6/site/lib"
+                       "share/perl6/vendor/lib")))))
+    (synopsis "Perl 6 Compiler")
+    (description "Rakudo Perl is a compiler that implements the Perl 6
+specification and runs on top of several virtual machines.")
+    (license license:artistic2.0)))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 04/25] build: Add rakudo-build-system.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (2 preceding siblings ...)
  2019-03-12 20:19 ` [bug#34831] [PATCH 03/25] gnu: Add rakudo Efraim Flashner
@ 2019-03-12 20:19 ` Efraim Flashner
  2019-03-19 10:13   ` Efraim Flashner
  2019-03-19 10:15   ` Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 05/25] gnu: Add perl6-tap-harness Efraim Flashner
                   ` (21 subsequent siblings)
  25 siblings, 2 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:19 UTC (permalink / raw)
  To: 34831

* guix/build-system/rakudo.scm,
guix/build/rakudo-build-system.scm: New files.
* Makefile.am (MODULES): Add them.
* doc/guix.texi (Build System): Document it.
---
 Makefile.am                        |   3 +
 doc/guix.texi                      |  20 +++-
 guix/build-system/rakudo.scm       | 155 +++++++++++++++++++++++++++++
 guix/build/rakudo-build-system.scm | 140 ++++++++++++++++++++++++++
 4 files changed, 317 insertions(+), 1 deletion(-)
 create mode 100644 guix/build-system/rakudo.scm
 create mode 100644 guix/build/rakudo-build-system.scm

diff --git a/Makefile.am b/Makefile.am
index cf35770ba7..c3d2525af3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -13,6 +13,7 @@
 # Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
 # Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 # Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
+# Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 #
 # This file is part of GNU Guix.
 #
@@ -124,6 +125,7 @@ MODULES =					\
   guix/build-system/ocaml.scm			\
   guix/build-system/waf.scm			\
   guix/build-system/r.scm			\
+  guix/build-system/rakudo.scm			\
   guix/build-system/ruby.scm			\
   guix/build-system/scons.scm			\
   guix/build-system/texlive.scm			\
@@ -164,6 +166,7 @@ MODULES =					\
   guix/build/python-build-system.scm		\
   guix/build/ocaml-build-system.scm		\
   guix/build/r-build-system.scm			\
+  guix/build/rakudo-build-system.scm		\
   guix/build/ruby-build-system.scm		\
   guix/build/scons-build-system.scm		\
   guix/build/texlive-build-system.scm		\
diff --git a/doc/guix.texi b/doc/guix.texi
index 82cf2babb2..5937c86dad 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -28,7 +28,7 @@ Copyright @copyright{} 2015, 2016, 2017 Leo Famulari@*
 Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus@*
 Copyright @copyright{} 2016 Ben Woodcroft@*
 Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@*
-Copyright @copyright{} 2016, 2017, 2018 Efraim Flashner@*
+Copyright @copyright{} 2016, 2017, 2018, 2019 Efraim Flashner@*
 Copyright @copyright{} 2016 John Darrington@*
 Copyright @copyright{} 2016, 2017 Nils Gillmann@*
 Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@*
@@ -5893,6 +5893,24 @@ are run after installation using the R function
 @code{tools::testInstalledPackage}.
 @end defvr
 
+@defvr {Scheme Variable} rakudo-build-system
+This variable is exported by @code{(guix build-system rakudo)} It
+implements the build procedure used by @uref{https://rakudo.org/,
+Rakudo} for @uref{https://perl6.org/, Perl6} packages. It installs the
+package to @code{/gnu/store/@dots{}/NAME-VERSION/share/perl6} and
+installs the binaries, library files and the resources, as well as wrap
+the files under the @code{bin/} directory.  Tests can be  skipped by
+passing @code{#f} to the @code{tests?} parameter.
+
+Which rakudo package is used can be specified with @code{rakudo}.
+Which perl6-tap-harness package used for the tests can be specified with
+@code{#:prove6} or removed by passing @code{#f} to the
+@code{with-prove6?} parameter.
+Which perl6-zef package used for tests and installing can be specified
+with @code{#:zef} or removed by passing @code{#f} to the
+@code{with-zef?} parameter.
+@end defvr
+
 @defvr {Scheme Variable} texlive-build-system
 This variable is exported by @code{(guix build-system texlive)}.  It is
 used to build TeX packages in batch mode with a specified engine.  The
diff --git a/guix/build-system/rakudo.scm b/guix/build-system/rakudo.scm
new file mode 100644
index 0000000000..fd469f0bb5
--- /dev/null
+++ b/guix/build-system/rakudo.scm
@@ -0,0 +1,155 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build-system rakudo)
+  #:use-module (guix store)
+  #:use-module (guix utils)
+  #:use-module (guix derivations)
+  #:use-module (guix search-paths)
+  #:use-module (guix build-system)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix packages)
+  #:use-module (ice-9 match)
+  #:export (%rakudo-build-system-modules
+            rakudo-build
+            rakudo-build-system))
+
+;; Commentary:
+;;
+;; Standard build and install procedure for packages using the Rakudo
+;; build system to be installed as system libraries.  This is
+;; implemented as an extension of `gnu-build-system'.
+;;
+;; Code:
+
+(define %rakudo-build-system-modules
+  ;; Build-side modules imported by default.
+  `((guix build rakudo-build-system)
+    ,@%gnu-build-system-modules))
+
+(define (default-rakudo)
+  "Return the default Rakudo package."
+
+  ;; Do not use `@' to avoid introducing circular dependencies.
+  (let ((module (resolve-interface '(gnu packages perl6))))
+    (module-ref module 'rakudo)))
+
+(define (default-prove6)
+  "Return the default perl6-tap-harness package for tests."
+  (let ((module (resolve-interface '(gnu packages perl6))))
+    (module-ref module 'perl6-tap-harness)))
+
+(define (default-zef)
+  "Return the default perl6-zef package."
+  (let ((module (resolve-interface '(gnu packages perl6))))
+    (module-ref module 'perl6-zef)))
+
+(define* (lower name
+                #:key source inputs native-inputs outputs
+                system target
+                (rakudo (default-rakudo))
+                (prove6 (default-prove6))
+                (zef (default-zef))
+                (with-prove6? #t)
+                (with-zef? #t)
+                #:allow-other-keys
+                #:rest arguments)
+  "Return a bag for NAME."
+  (define private-keywords
+    '(#:source #:target #:rakudo #:prove6 #:zef #:inputs #:native-inputs))
+
+  (and (not target)                               ;XXX: no cross-compilation
+       (bag
+         (name name)
+         (system system)
+         (host-inputs `(,@(if source
+                              `(("source" ,source))
+                              '())
+                        ,@inputs
+
+                        ;; Keep the standard inputs of 'gnu-build-system'.
+                        ,@(standard-packages)))
+         (build-inputs `(("rakudo" ,rakudo)
+                         ,@(if with-prove6?
+                               `(("perl6-tap-harness" ,prove6))
+                               '())
+                         ,@(if with-zef?
+                               `(("perl6-zef" ,zef))
+                               '())
+                         ,@native-inputs))
+         (outputs outputs)
+         (build rakudo-build)
+         (arguments (strip-keyword-arguments private-keywords arguments)))))
+
+(define* (rakudo-build store name inputs
+                       #:key
+                       (search-paths '())
+                       (tests? #t)
+                       (phases '(@ (guix build rakudo-build-system)
+                                   %standard-phases))
+                       (outputs '("out"))
+                       (system (%current-system))
+                       (guile #f)
+                       (with-zef? #t)
+                       (with-prove6? #t)
+                       (imported-modules %rakudo-build-system-modules)
+                       (modules '((guix build rakudo-build-system)
+                                  (guix build utils))))
+  "Build SOURCE using PERL6, and with INPUTS."
+  (define builder
+    `(begin
+       (use-modules ,@modules)
+       (rakudo-build #:name ,name
+                     #:source ,(match (assoc-ref inputs "source")
+                                      (((? derivation? source))
+                                       (derivation->output-path source))
+                                      ((source)
+                                       source)
+                                      (source
+                                        source))
+                     #:search-paths ',(map search-path-specification->sexp
+                                           search-paths)
+                     #:phases ,phases
+                     #:system ,system
+                     #:tests? ,tests?
+                     #:outputs %outputs
+                     #:inputs %build-inputs)))
+
+  (define guile-for-build
+    (match guile
+      ((? package?)
+       (package-derivation store guile system #:graft? #f))
+      (#f                                         ; the default
+       (let* ((distro (resolve-interface '(gnu packages commencement)))
+              (guile  (module-ref distro 'guile-final)))
+         (package-derivation store guile system #:graft? #f)))))
+
+  (build-expression->derivation store name builder
+                                #:system system
+                                #:inputs inputs
+                                #:modules imported-modules
+                                #:outputs outputs
+                                #:guile-for-build guile-for-build))
+
+(define rakudo-build-system
+  (build-system
+    (name 'rakudo)
+    (description "The standard Rakudo build system")
+    (lower lower)))
+
+;;; rakudo.scm ends here
diff --git a/guix/build/rakudo-build-system.scm b/guix/build/rakudo-build-system.scm
new file mode 100644
index 0000000000..bfdefa3c4e
--- /dev/null
+++ b/guix/build/rakudo-build-system.scm
@@ -0,0 +1,140 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build rakudo-build-system)
+  #:use-module ((guix build gnu-build-system) #:prefix gnu:)
+  #:use-module (guix build utils)
+  #:use-module (ice-9 ftw)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
+  #:export (%standard-phases
+            rakudo-build))
+
+;; Commentary:
+;;
+;; Builder-side code of the standard Rakudo package build procedure.
+;;
+;; Code:
+
+(define* (check #:key tests? inputs with-prove6? #:allow-other-keys)
+  (if (and tests? (assoc-ref inputs "perl6-tap-harness"))
+  ;(if (and tests? with-prove6?)
+      (invoke "prove6" "-I=lib" "t/")
+      (format #t "test suite not run~%"))
+  #t)
+
+(define* (install #:key inputs outputs with-zef? #:allow-other-keys)
+  "Install a given Perl6 package."
+  (let* ((out   (assoc-ref outputs "out"))
+         (perl6 (string-append out "/share/perl6")))
+    (if (assoc-ref inputs "perl6-zef")
+    ;(if with-zef?
+        (begin
+          (let ((zef (string-append (assoc-ref inputs "perl6-zef")
+                                    "/bin/zef")))
+            (setenv "HOME" (getcwd))
+            (mkdir-p perl6)
+            (invoke zef "install" "--verbose" "."
+                    ;; Don't install any of the following:
+                    "--/depends" "--/build-depends" "--/test-depends"
+                    (string-append "--install-to=" perl6))
+            (delete-file (string-append perl6 "/repo.lock")))
+          #t)
+        (begin
+          (let ((inst (string-append (assoc-ref inputs "rakudo")
+                                     "/share/perl6/tools/install-dist.p6")))
+            (setenv "RAKUDO_RERESOLVE_DEPENDENCIES" "0")
+            (setenv "RAKUDO_MODULE_DEBUG" "1") ; be verbose while building
+            (invoke inst (string-append "--to=" perl6) "--for=site"))))))
+
+(define* (install-libs #:key outputs #:allow-other-keys)
+  (let ((out  (assoc-ref outputs "out"))
+        (lock "lib/.precomp/.lock"))
+    (when (file-exists? lock)
+      (delete-file "lib/.precomp/.lock"))
+    (copy-recursively "lib" (string-append out "/share/perl6/lib"))
+    #t))
+
+(define* (install-bins #:key outputs #:allow-other-keys)
+  (let ((out  (assoc-ref outputs "out")))
+    (when (file-exists? "bin")
+      (for-each (lambda (file)
+                  (install-file file (string-append out "/bin"))
+                  (chmod (string-append out "/" file) #o555))
+                (find-files "bin" ".*")))
+    #t))
+
+(define* (install-resources #:key outputs #:allow-other-keys)
+  (let ((out  (assoc-ref outputs "out")))
+    (when (file-exists? "resources")
+      (copy-recursively "resources"
+                        (string-append out "/share/perl6/resources")))
+  #t))
+
+(define* (wrap #:key inputs outputs #:allow-other-keys)
+  (define (list-of-files dir)
+    (map (cut string-append dir "/" <>)
+         (or (scandir dir (lambda (f)
+                            (let ((s (stat (string-append dir "/" f))))
+                              (eq? 'regular (stat:type s)))))
+             '())))
+
+  (define bindirs
+    (append-map (match-lambda
+                 ((_ . dir)
+                  (list (string-append dir "/bin")
+                        (string-append dir "/sbin"))))
+                outputs))
+
+  (let* ((out  (assoc-ref outputs "out"))
+         (var `("PERL6LIB" "," prefix
+                ,(cons (string-append out "/share/perl6/lib,"
+                                      out "/share/perl6/site/lib,"
+                                      out "/share/perl6/vendor/lib")
+                       (search-path-as-string->list
+                        (or (getenv "PERL6LIB") "") #\,)))))
+    (for-each (lambda (dir)
+                (let ((files (list-of-files dir)))
+                  (for-each (cut wrap-program <> var)
+                            files)))
+              bindirs)
+    #t))
+
+(define %standard-phases
+  ;; No need for 'bootstrap, 'configure or 'build.
+  (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
+    (delete 'configure)
+    (delete 'build)
+    (replace 'check check)
+    (replace 'install install)
+    (add-before 'install 'install-lib-dir install-libs)
+    (add-after 'install-lib-dir 'install-resources install-resources)
+    (add-after 'install-resources 'install-binaries install-bins)
+    ;; needs to be after 'install-binaries and all 'install phases
+    (add-after 'install 'wrap wrap)))
+
+(define* (rakudo-build #:key inputs (phases %standard-phases)
+                       #:allow-other-keys #:rest args)
+  "Build the given Perl6 package, applying all of PHASES in order."
+  (apply gnu:gnu-build
+         #:inputs inputs #:phases phases
+         args))
+
+;;; rakudo-build-system.scm ends here
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 05/25] gnu: Add perl6-tap-harness.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (3 preceding siblings ...)
  2019-03-12 20:19 ` [bug#34831] [PATCH 04/25] build: Add rakudo-build-system Efraim Flashner
@ 2019-03-12 20:19 ` Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 06/25] gnu: Add perl6-zef Efraim Flashner
                   ` (20 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:19 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-tap-harness): New variable.
---
 gnu/packages/perl6.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 9659361309..1bcd99faff 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -22,6 +22,7 @@
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix build-system perl)
+  #:use-module (guix build-system rakudo)
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
@@ -227,3 +228,33 @@ regular expression engine for the virtual machine.")
     (description "Rakudo Perl is a compiler that implements the Perl 6
 specification and runs on top of several virtual machines.")
     (license license:artistic2.0)))
+
+(define-public perl6-tap-harness
+  (package
+    (name "perl6-tap-harness")
+    (version "0.0.7")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/perl6/tap-harness6.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1lig8i0my3fgqvlay9532xslbf3iis2d7wz89gniwvwqffi2kh6r"))))
+    (build-system rakudo-build-system)
+    (arguments
+     '(#:with-zef? #f
+       #:with-prove6? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "perl6" "-Ilib" "bin/prove6" "-l" "t"))))))
+    (home-page "https://github.com/perl6/tap-harness6/")
+    (synopsis "TAP harness for perl6")
+    (description "This module provides the @command{prove6} command which runs a
+TAP based test suite and prints a report.  The @command{prove6} command is a
+minimal wrapper around an instance of this module.")
+    (license license:artistic2.0)))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 06/25] gnu: Add perl6-zef.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (4 preceding siblings ...)
  2019-03-12 20:19 ` [bug#34831] [PATCH 05/25] gnu: Add perl6-tap-harness Efraim Flashner
@ 2019-03-12 20:19 ` Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 07/25] gnu: Add perl6-uri Efraim Flashner
                   ` (19 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:19 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-zef): New variable.
---
 gnu/packages/perl6.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 1bcd99faff..1f5af42d04 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -258,3 +258,34 @@ specification and runs on top of several virtual machines.")
 TAP based test suite and prints a report.  The @command{prove6} command is a
 minimal wrapper around an instance of this module.")
     (license license:artistic2.0)))
+
+(define-public perl6-zef
+  (package
+    (name "perl6-zef")
+    (version "0.6.7")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/ugexe/zef.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "07n7g1xw2c4g860rs890gx85vyhdq0ysgwbrnzw6q905jph2bkv7"))))
+    (build-system rakudo-build-system)
+    (arguments
+     '(#:with-zef? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (setenv "HOME" "/tmp")
+             (invoke "perl6" "-I." "bin/zef" "--debug"
+                     "--tap-harness" "test" "."))))))
+    (home-page "https://github.com/ugexe/zef")
+    (synopsis "Perl6 Module Management")
+    (description "Zef is a Perl 6 package (module) manager.  It can be used to
+download and install Perl 6 modules in your home directory or as a system-wide
+module.")
+    (license license:artistic2.0)))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 07/25] gnu: Add perl6-uri.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (5 preceding siblings ...)
  2019-03-12 20:19 ` [bug#34831] [PATCH 06/25] gnu: Add perl6-zef Efraim Flashner
@ 2019-03-12 20:19 ` Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 08/25] gnu: Add perl6-json-fast Efraim Flashner
                   ` (18 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:19 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-uri): New variable.
---
 gnu/packages/perl6.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 1f5af42d04..0ab441cf82 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -259,6 +259,30 @@ TAP based test suite and prints a report.  The @command{prove6} command is a
 minimal wrapper around an instance of this module.")
     (license license:artistic2.0)))
 
+(define-public perl6-uri
+  (package
+    (name "perl6-uri")
+    (version "0.1.5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/perl6-community-modules/uri.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0h318g75jqn2ckw051g35iqyfxz1mps0jyg5z6pd857y3kacbkpl"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/perl6-community-modules/uri")
+    (synopsis "URI implementation using Perl 6")
+    (description "A URI implementation using Perl 6 grammars to implement RFC
+3986 BNF.  Currently only implements parsing.  Includes @code{URI::Escape} to
+(un?)escape characters that aren't otherwise allowed in a URI with % and a hex
+character numbering.")
+    (license license:artistic2.0)))
+
 (define-public perl6-zef
   (package
     (name "perl6-zef")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 08/25] gnu: Add perl6-json-fast.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (6 preceding siblings ...)
  2019-03-12 20:19 ` [bug#34831] [PATCH 07/25] gnu: Add perl6-uri Efraim Flashner
@ 2019-03-12 20:19 ` Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 09/25] gnu: Add perl6-json-name Efraim Flashner
                   ` (17 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:19 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-json-fast): New variable.
---
 gnu/packages/perl6.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 0ab441cf82..0cd1f02621 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -229,6 +229,30 @@ regular expression engine for the virtual machine.")
 specification and runs on top of several virtual machines.")
     (license license:artistic2.0)))
 
+(define-public perl6-json-fast
+  (package
+    (name "perl6-json-fast")
+    (version "0.8")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/timo/json_fast.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1fif081gdxdnja14vkj523p9dyzdcdj81lmjv9fvfazvpagb6dg2"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/timo/json_fast")
+    (synopsis "Perl6 json parser")
+    (description "A naive imperative json parser in pure perl6 (but with direct
+access to @code{nqp::} ops), to evaluate performance against @code{JSON::Tiny}.
+It is a drop-in replacement for @code{JSON::Tiny}'s from-json and to-json subs,
+but it offers a few extra features.")
+    (license license:artistic2.0)))
+
 (define-public perl6-tap-harness
   (package
     (name "perl6-tap-harness")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 09/25] gnu: Add perl6-json-name.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (7 preceding siblings ...)
  2019-03-12 20:19 ` [bug#34831] [PATCH 08/25] gnu: Add perl6-json-fast Efraim Flashner
@ 2019-03-12 20:19 ` Efraim Flashner
  2019-03-12 20:19 ` [bug#34831] [PATCH 10/25] gnu: Add perl6-json-unmarshal Efraim Flashner
                   ` (16 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:19 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-json-name): New variable.
---
 gnu/packages/perl6.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 0cd1f02621..1090809b5c 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -253,6 +253,32 @@ It is a drop-in replacement for @code{JSON::Tiny}'s from-json and to-json subs,
 but it offers a few extra features.")
     (license license:artistic2.0)))
 
+(define-public perl6-json-name
+  (package
+    (name "perl6-json-name")
+    (version "0.0.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/JSON-Name.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "130qwdpbj5qdlsdz05y0rksd79lzbq79scy47n6lnf21b0hz1qjc"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/jonathanstowe/JSON-Name")
+    (synopsis "Provides a trait to store an alternative JSON Name")
+    (description "This is released as a dependency of @code{JSON::Marshal} and
+@code{JSON::Unmarshal} in order to save duplication, it is intended to store a
+separate JSON name for an attribute where the name of the JSON attribute might be
+changed, either for aesthetic reasons or the name is not a valid Perl identifier.
+It will of course also be needed in classes thar are going to use
+@code{JSON::Marshal} or @code{JSON::Unmarshal} for serialisation/de-serialisation.")
+    (license license:artistic2.0)))
+
 (define-public perl6-tap-harness
   (package
     (name "perl6-tap-harness")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 10/25] gnu: Add perl6-json-unmarshal.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (8 preceding siblings ...)
  2019-03-12 20:19 ` [bug#34831] [PATCH 09/25] gnu: Add perl6-json-name Efraim Flashner
@ 2019-03-12 20:19 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 11/25] gnu: Add perl6-json-marshal Efraim Flashner
                   ` (15 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:19 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-json-unmarshal): New variable.
---
 gnu/packages/perl6.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 1090809b5c..39b9a6fd13 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -279,6 +279,33 @@ It will of course also be needed in classes thar are going to use
 @code{JSON::Marshal} or @code{JSON::Unmarshal} for serialisation/de-serialisation.")
     (license license:artistic2.0)))
 
+(define-public perl6-json-unmarshal
+  ;; Last commit was May 2017
+  (let ((commit "e1b6288c5f3165058f36c0f4e171cdf2dfd640da")
+        (revision "1"))
+    (package
+      (name "perl6-json-unmarshal")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/tadzik/JSON-Unmarshal.git")
+                 (commit commit)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "14azsmzmwdn8k0gqcpvballharcvzylmlyrx2wmv4kpqfnz29fjc"))))
+      (build-system rakudo-build-system)
+      (propagated-inputs
+       `(("perl6-json-fast" ,perl6-json-fast)
+         ("perl6-json-name" ,perl6-json-name)))
+      (home-page "https://github.com/tadzik/JSON-Unmarshal")
+      (synopsis "Make JSON from an Object")
+      (description "This library provides a single exported subroutine to
+create an object from a JSON representation of an object.")
+      (license license:expat))))
+
 (define-public perl6-tap-harness
   (package
     (name "perl6-tap-harness")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 11/25] gnu: Add perl6-json-marshal.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (9 preceding siblings ...)
  2019-03-12 20:19 ` [bug#34831] [PATCH 10/25] gnu: Add perl6-json-unmarshal Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 12/25] gnu: Add perl6-json-class Efraim Flashner
                   ` (14 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-json-marshal): New variable.
---
 gnu/packages/perl6.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 39b9a6fd13..da399a45a6 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -253,6 +253,33 @@ It is a drop-in replacement for @code{JSON::Tiny}'s from-json and to-json subs,
 but it offers a few extra features.")
     (license license:artistic2.0)))
 
+(define-public perl6-json-marshal
+  (package
+    (name "perl6-json-marshal")
+    (version "0.0.16")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/JSON-Marshal.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0qy7j83h6gjzyyv74ncd92cd9h45rv8diaz3vldiv3b6fqwz4c6i"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-json-fast" ,perl6-json-fast)
+       ("perl6-json-name" ,perl6-json-name)))
+    (native-inputs
+     `(("perl6-json-fast" ,perl6-json-fast)))
+    (home-page "https://github.com/jonathanstowe/JSON-Marshal")
+    (synopsis "Simple serialisation of objects to JSON")
+    (description "This library provides a single exported subroutine to create
+a JSON representation of an object.  It should round trip back into an object
+of the same class using @code{JSON::Unmarshal}.")
+    (license license:artistic2.0)))
+
 (define-public perl6-json-name
   (package
     (name "perl6-json-name")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 12/25] gnu: Add perl6-json-class.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (10 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 11/25] gnu: Add perl6-json-marshal Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 13/25] gnu: Add perl6-meta6 Efraim Flashner
                   ` (13 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-json-class): New variable.
---
 gnu/packages/perl6.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index da399a45a6..845cfae3f2 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -229,6 +229,37 @@ regular expression engine for the virtual machine.")
 specification and runs on top of several virtual machines.")
     (license license:artistic2.0)))
 
+(define-public perl6-json-class
+  (package
+    (name "perl6-json-class")
+    (version "0.0.12")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/JSON-Class.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1zyzajc57j3m8q0nr72h9pw4w2nx92rafywlvysgphc5q9sb8np2"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-json-marshal" ,perl6-json-marshal)
+       ("perl6-json-unmarshal" ,perl6-json-unmarshal)))
+    (native-inputs
+     `(("perl6-json-fast" ,perl6-json-fast)))
+    (home-page "https://github.com/jonathanstowe/JSON-Class")
+    (synopsis "Provide simple serialisation/deserialisation of objects to/from JSON")
+    (description "This is a simple role that provides methods to instantiate a
+class from a JSON string that (hopefully,) represents it, and to serialise an
+object of the class to a JSON string.  The JSON created from an instance should
+round trip to a new instance with the same values for the @quot{public
+attributes}.  @quot{Private} attributes (that is ones without accessors,) will
+be ignored for both serialisation and de-serialisation.  The exact behaviour
+depends on that of @code{JSON::Marshal} and @code{JSON::Unmarshal} respectively.")
+    (license license:artistic2.0)))
+
 (define-public perl6-json-fast
   (package
     (name "perl6-json-fast")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 13/25] gnu: Add perl6-meta6.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (11 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 12/25] gnu: Add perl6-json-class Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 14/25] gnu: Add perl6-license-spdx Efraim Flashner
                   ` (12 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-meta6): New variable.
---
 gnu/packages/perl6.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 845cfae3f2..3fdae92842 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -364,6 +364,40 @@ It will of course also be needed in classes thar are going to use
 create an object from a JSON representation of an object.")
       (license license:expat))))
 
+(define-public perl6-meta6
+  (package
+    (name "perl6-meta6")
+    (version "0.0.23")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/META6.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1xnlaamfbdlfb2zidim3bbc4mawsrg6qxhxi6gbld46z1cyry1cw"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-json-class" ,perl6-json-class)))
+    (native-inputs
+     `(("perl6-json-fast" ,perl6-json-fast)))
+    (home-page "https://github.com/jonathanstowe/META6")
+    (synopsis "Do things with Perl 6 [META files]")
+    (description "This provides a representation of the Perl 6 META files
+specification - the META file data can be read, created, parsed and written in a
+manner that is conformant with the specification.
+
+Where they are known about it also makes allowance for @quot{customary} usage in
+existing software (such as installers and so forth.)
+
+The intent of this is allow the generation and testing of META files for module
+authors, so it can provide meta-information whether the attributes are mandatory
+as per the spec and where known the places that @quot{customary} attributes are
+used.")
+    (license license:artistic2.0)))
+
 (define-public perl6-tap-harness
   (package
     (name "perl6-tap-harness")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 14/25] gnu: Add perl6-license-spdx.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (12 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 13/25] gnu: Add perl6-meta6 Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 15/25] gnu: Add perl6-test-meta Efraim Flashner
                   ` (11 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-license-spdx): New variable.
---
 gnu/packages/perl6.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 3fdae92842..f3a10e00c6 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -364,6 +364,31 @@ It will of course also be needed in classes thar are going to use
 create an object from a JSON representation of an object.")
       (license license:expat))))
 
+(define-public perl6-license-spdx
+  (package
+    (name "perl6-license-spdx")
+    (version "3.4.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/License-SPDX")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0dl263c3fbxk001gm5fisrzqz1dx182ipaa0x2qva2gxvl075xm8"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-json-class" ,perl6-json-class)))
+    (home-page "https://github.com/jonathanstowe/License-SPDX")
+    (synopsis "Abstraction over the SPDX License List")
+    (description "This provides an abstraction over the SPDX License List as
+provided in JSON format.  Its primary raison d'être is to help the licence
+checking of @code{Test::META} and to allow for the warning about deprecated
+licences therein.")
+    (license license:artistic2.0)))
+
 (define-public perl6-meta6
   (package
     (name "perl6-meta6")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 15/25] gnu: Add perl6-test-meta.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (13 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 14/25] gnu: Add perl6-license-spdx Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 16/25] gnu: Add perl6-xml-writer Efraim Flashner
                   ` (10 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-test-meta): New variable.
---
 gnu/packages/perl6.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index f3a10e00c6..08f5f86665 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -453,6 +453,30 @@ TAP based test suite and prints a report.  The @command{prove6} command is a
 minimal wrapper around an instance of this module.")
     (license license:artistic2.0)))
 
+(define-public perl6-test-meta
+  (package
+    (name "perl6-test-meta")
+    (version "0.0.14")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/Test-META")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1mzrglb7lbiy5h9dlc7dyhvv9gppxmdmpmrv6nzbd695jzr38bri"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-meta6" ,perl6-meta6)
+       ("perl6-uri" ,perl6-uri)))
+    (home-page "https://github.com/jonathanstowe/Test-META")
+    (synopsis "Test a distributions META file")
+    (description "This provides a simple mechanism for module authors to have
+some confidence that they have a working distribution META description file.")
+    (license license:artistic2.0)))
+
 (define-public perl6-uri
   (package
     (name "perl6-uri")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 16/25] gnu: Add perl6-xml-writer.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (14 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 15/25] gnu: Add perl6-test-meta Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 17/25] gnu: Add perl6-svg Efraim Flashner
                   ` (9 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-xml-writer): New variable.
---
 gnu/packages/perl6.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 08f5f86665..04e0419135 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -501,6 +501,30 @@ some confidence that they have a working distribution META description file.")
 character numbering.")
     (license license:artistic2.0)))
 
+(define-public perl6-xml-writer
+  ;; Last commit was May 2017
+  (let ((commit "4d30a9d8e06033ca97387971b653817becd5a759")
+        (revision "1"))
+    (package
+      (name "perl6-xml-writer")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/masak/xml-writer")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "1kwrf7akp70kyzw1b90khp71a6hpilihwndy2jsjpffcd4hd4m4z"))))
+      (build-system rakudo-build-system)
+      (arguments '(#:with-zef? #f))
+      (home-page "https://github.com/masak/xml-writer")
+      (synopsis "Perl 6 module to generate XML")
+      (description "@code{XML::Writer} is a module for creating XML in Perl 6.")
+      (license license:artistic2.0))))
+
 (define-public perl6-zef
   (package
     (name "perl6-zef")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 17/25] gnu: Add perl6-svg.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (15 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 16/25] gnu: Add perl6-xml-writer Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 18/25] gnu: Add perl6-svg-plot Efraim Flashner
                   ` (8 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-svg): New variable.
---
 gnu/packages/perl6.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 04e0419135..96d4a670fa 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -423,6 +423,34 @@ as per the spec and where known the places that @quot{customary} attributes are
 used.")
     (license license:artistic2.0)))
 
+(define-public perl6-svg
+  ;; Latest commit, basically unchanged since August 2015
+  (let ((commit "07190c0602aa276e5319f06aa0012452dbff3582")
+        (revision "1"))
+    (package
+      (name "perl6-svg")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/moritz/svg")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "0mkjdhg7ajksdn61n8fqhyzfd7ly9myazsvpsm02a5c2q73hdygg"))))
+      (build-system rakudo-build-system)
+      (propagated-inputs
+       `(("perl6-xml-writer" ,perl6-xml-writer)))
+      (home-page "https://github.com/moritz/svg")
+      (synopsis "Perl 6 module to generate SVG")
+      (description "This is a Perl 6 module that makes it easy to write
+@dfn{Scalable Vector Graphic files} (SVG).  Right now it is a shallow wrapper
+around @code{XML::Writer}, adding only the xmlns attributes that identifies an
+XML file as SVG.")
+      (license license:artistic2.0))))
+
 (define-public perl6-tap-harness
   (package
     (name "perl6-tap-harness")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 18/25] gnu: Add perl6-svg-plot.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (16 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 17/25] gnu: Add perl6-svg Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 19/25] gnu: Add perl6-terminal-ansicolor Efraim Flashner
                   ` (7 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-svg-plot): New variable.
---
 gnu/packages/perl6.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 96d4a670fa..af43dd3b60 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -451,6 +451,33 @@ around @code{XML::Writer}, adding only the xmlns attributes that identifies an
 XML file as SVG.")
       (license license:artistic2.0))))
 
+(define-public perl6-svg-plot
+  ;; Latest commit
+  (let ((commit "062570a78fd38c3c6baba29dfe2fbb8ca014f4de")
+        (revision "1"))
+    (package
+      (name "perl6-svg-plot")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/moritz/svg-plot")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "095ga5hbg92jnmczxvhk1hjz14yr334zyf8cph4w5w5frcza44my"))))
+      (build-system rakudo-build-system)
+      (propagated-inputs
+       `(("perl6-svg" ,perl6-svg)))
+      (home-page "https://github.com/moritz/svg-plot")
+      (synopsis "Perl 6 charting and plotting library that produces SVG output")
+      (description "@code{SVG::Plot} is a simple 2D chart plotter for Perl 6.
+It currently supports bars, stacked bars, lines and points (both equally spaced
+with optional labels, or xy plots).")
+      (license license:artistic2.0))))
+
 (define-public perl6-tap-harness
   (package
     (name "perl6-tap-harness")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 19/25] gnu: Add perl6-terminal-ansicolor.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (17 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 18/25] gnu: Add perl6-svg-plot Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 20/25] gnu: Add perl6-oo-monitors Efraim Flashner
                   ` (6 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-terminal-ansicolor): New variable.
---
 gnu/packages/perl6.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index af43dd3b60..30d1f4cfdd 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -508,6 +508,28 @@ TAP based test suite and prints a report.  The @command{prove6} command is a
 minimal wrapper around an instance of this module.")
     (license license:artistic2.0)))
 
+(define-public perl6-terminal-ansicolor
+  (package
+    (name "perl6-terminal-ansicolor")
+    (version "0.5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/tadzik/Terminal-ANSIColor.git")
+               ;; The commit where 0.5 was "tagged"
+               (commit "edded4a7116ce11cbc9fb5a83669c7ba119d0212")))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1apm999azkyg5s35gid12wq019aqnvzrkz7qjmipd74mdxgr00x7"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/tadzik/Terminal-ANSIColor")
+    (synopsis "Colorize terminal output")
+    (description "This is a @code{Terminal::ANSIColor} module for Perl 6.")
+    (license license:expat)))
+
 (define-public perl6-test-meta
   (package
     (name "perl6-test-meta")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 20/25] gnu: Add perl6-oo-monitors.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (18 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 19/25] gnu: Add perl6-terminal-ansicolor Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 21/25] gnu: Add perl6-test-mock Efraim Flashner
                   ` (5 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-oo-monitors): New variable.
---
 gnu/packages/perl6.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 30d1f4cfdd..1d47562c13 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -423,6 +423,32 @@ as per the spec and where known the places that @quot{customary} attributes are
 used.")
     (license license:artistic2.0)))
 
+(define-public perl6-oo-monitors
+  (package
+    (name "perl6-oo-monitors")
+    (version "1.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jnthn/oo-monitors")
+               ;; The commit where 1.1 was "tagged"
+               (commit "494db3a3852854f30a80c9bd1489a7d5e429e7c5")))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1sbw2x54wwjjanghjnc7ipmplaw1srvbrphsdv4ym6cipnbmbj9x"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/jnthn/oo-monitors")
+    (synopsis "Monitors with condition variables for Perl 6")
+    (description "A monitor provides per-instance mutual exclusion for objects.
+This means that for a given object instance, only one thread can ever be inside
+its methods at a time.  This is achieved by a lock being associated with each
+object.  The lock is acquired automatically at the entry to each method in the
+monitor.  Condition variables are also supported.")
+    (license license:artistic2.0)))
+
 (define-public perl6-svg
   ;; Latest commit, basically unchanged since August 2015
   (let ((commit "07190c0602aa276e5319f06aa0012452dbff3582")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 21/25] gnu: Add perl6-test-mock.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (19 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 20/25] gnu: Add perl6-oo-monitors Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 22/25] gnu: Add perl6-grammar-profiler-simple Efraim Flashner
                   ` (4 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-test-mock): New variable.
---
 gnu/packages/perl6.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 1d47562c13..b1e2f10ac9 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -580,6 +580,33 @@ minimal wrapper around an instance of this module.")
 some confidence that they have a working distribution META description file.")
     (license license:artistic2.0)))
 
+(define-public perl6-test-mock
+  (package
+    (name "perl6-test-mock")
+    (version "1.5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jnthn/test-mock")
+               ;; The commit where 1.5 was "tagged"
+               (commit "6eddb42f73f40b9ac29c14badb41ce4a04d876f2")))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "07yr3qimc8fl29p23562ayj2j9h53madcnf9sgqvgf2kcprh0zd2"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-oo-monitors" ,perl6-oo-monitors)))
+    (home-page "https://github.com/jnthn/test-mock")
+    (synopsis "Module for simply generating and checking mock objects")
+    (description "@code{Test::Mock} is a module that works alongside the
+standard Test module to help you write tests when you want to verify what
+methods are called on an object, while still having calls to undefined methods
+die.  You get started just as normal with the test file, but also add a use
+statement for @code{Test::Mock}.")
+    (license license:artistic2.0)))
+
 (define-public perl6-uri
   (package
     (name "perl6-uri")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 22/25] gnu: Add perl6-grammar-profiler-simple.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (20 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 21/25] gnu: Add perl6-test-mock Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 23/25] gnu: Add perl6-grammar-debugger Efraim Flashner
                   ` (3 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-grammar-profiler-simple): New variable.
---
 gnu/packages/perl6.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index b1e2f10ac9..2b224aba64 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -229,6 +229,33 @@ regular expression engine for the virtual machine.")
 specification and runs on top of several virtual machines.")
     (license license:artistic2.0)))
 
+(define-public perl6-grammar-profiler-simple
+  ;; Last commit was June 2017
+  (let ((commit "c0aca5fab323b2974821dabd6b89330c609e0b7d")
+        (revision "1"))
+    (package
+      (name "perl6-grammar-profiler-simple")
+      (version (git-version "0.02" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/perlpilot/Grammar-Profiler-Simple.git")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "1qcsa4lmcilp3vp0jng0hrgzyzxin9ayg2wjvkcd0k6h7djx9dff"))))
+      (build-system rakudo-build-system)
+      (arguments '(#:with-zef? #f))
+      (home-page "https://github.com/perlpilot/Grammar-Profiler-Simple")
+      (synopsis "Simple rule profiling for Perl 6 grammars")
+      (description "This module provides a simple profiler for Perl 6 grammars.
+To enable profiling simply add use @code{Grammar::Profiler::Simple;} to your
+code.  Any grammar in the lexical scope of the use statement will automatically
+have profiling information collected when the grammar is used.")
+      (license license:artistic2.0))))
+
 (define-public perl6-json-class
   (package
     (name "perl6-json-class")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 23/25] gnu: Add perl6-grammar-debugger.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (21 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 22/25] gnu: Add perl6-grammar-profiler-simple Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 24/25] gnu: Add perl6-mime-base64 Efraim Flashner
                   ` (2 subsequent siblings)
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-grammar-debugger): New variable.
---
 gnu/packages/perl6.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 2b224aba64..dff6e0d41f 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -229,6 +229,35 @@ regular expression engine for the virtual machine.")
 specification and runs on top of several virtual machines.")
     (license license:artistic2.0)))
 
+(define-public perl6-grammar-debugger
+  ;; Last commit was September 2017
+  (let ((commit "0375008027c8caa216bd869476ce59ae09b2a702")
+        (revision "1"))
+    (package
+      (name "perl6-grammar-debugger")
+      (version (git-version "1.0.1" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/jnthn/grammar-debugger")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "0y826z3m276n7ia810hgcb3div67nxmx125m2fzlc16994zd5vm5"))))
+      (build-system rakudo-build-system)
+      (propagated-inputs
+       `(("perl6-terminal-ansicolor" ,perl6-terminal-ansicolor)))
+      (home-page "https://github.com/jnthn/grammar-debugger")
+      (synopsis "Simple tracing and debugging support for Perl 6 grammars")
+      (description "This module provides a simple debugger for grammars.  Just
+@code{use} it: use @code{Grammar::Debugger;} and any grammar in the lexical
+scope of the use statement will automatically have debugging enabled. The
+debugger will break execution when you first enter the grammar, and provide a
+prompt.")
+      (license license:artistic2.0))))
+
 (define-public perl6-grammar-profiler-simple
   ;; Last commit was June 2017
   (let ((commit "c0aca5fab323b2974821dabd6b89330c609e0b7d")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 24/25] gnu: Add perl6-mime-base64.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (22 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 23/25] gnu: Add perl6-grammar-debugger Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-12 20:20 ` [bug#34831] [PATCH 25/25] gnu: Add perl6-json Efraim Flashner
  2019-03-24 14:31 ` bug#34831: [PATCH 00/25] Add perl6 Efraim Flashner
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-mime-base64): New variable.
---
 gnu/packages/perl6.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index dff6e0d41f..162989b3d5 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -479,6 +479,28 @@ as per the spec and where known the places that @quot{customary} attributes are
 used.")
     (license license:artistic2.0)))
 
+(define-public perl6-mime-base64
+  (package
+    (name "perl6-mime-base64")
+    (version "1.2.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/perl6/Perl6-MIME-Base64")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0l67m8mvz3gxml425sd1ggfnhzh4lf754k7w8fngfr453s6lsza1"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/perl6/Perl6-MIME-Base64")
+    (synopsis "Encoding and decoding Base64 ASCII strings")
+    (description "This Perl 6 module implements encoding and decoding to and
+from base64.")
+    (license license:artistic2.0)))
+
 (define-public perl6-oo-monitors
   (package
     (name "perl6-oo-monitors")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 25/25] gnu: Add perl6-json.
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (23 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 24/25] gnu: Add perl6-mime-base64 Efraim Flashner
@ 2019-03-12 20:20 ` Efraim Flashner
  2019-03-24 14:31 ` bug#34831: [PATCH 00/25] Add perl6 Efraim Flashner
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-12 20:20 UTC (permalink / raw)
  To: 34831

* gnu/packages/perl6.scm (perl6-json): New variable.
---
 gnu/packages/perl6.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 162989b3d5..3cdfefc17d 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -285,6 +285,29 @@ code.  Any grammar in the lexical scope of the use statement will automatically
 have profiling information collected when the grammar is used.")
       (license license:artistic2.0))))
 
+(define-public perl6-json
+  (package
+    (name "perl6-json")
+    (version "1.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/moritz/json")
+               ;; The commit where 1.0 was "tagged"
+               (commit "a5ef8c179350dae44ce7fb1abb684fc62c1c2b99")))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1kzryxkqyr129rcckd4jh0dfxdgzv71qx8dpkpm1divbfjyknlay"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/moritz/json")
+    (synopsis "A minimal JSON (de)serializer")
+    (description "This module is a simple Perl 6 module for serializing and
+deserializing JSON.")
+    (license license:artistic2.0)))
+
 (define-public perl6-json-class
   (package
     (name "perl6-json-class")
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 02/25] gnu: Add nqp.
  2019-03-12 20:19 ` [bug#34831] [PATCH 02/25] gnu: Add nqp Efraim Flashner
@ 2019-03-19 10:02   ` Efraim Flashner
  0 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-19 10:02 UTC (permalink / raw)
  To: 34831

[-- Attachment #1: Type: text/plain, Size: 4293 bytes --]

On Tue, Mar 12, 2019 at 10:19:51PM +0200, Efraim Flashner wrote:
> * gnu/packages/perl6.scm (nqp): New variable.
> ---
>  gnu/packages/perl6.scm | 68 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 68 insertions(+)
> 
> diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
> index 7e92c865aa..344bb4efda 100644
> --- a/gnu/packages/perl6.scm
> +++ b/gnu/packages/perl6.scm
> @@ -19,6 +19,7 @@
>  (define-module (gnu packages perl6)
>    #:use-module ((guix licenses) #:prefix license:)
>    #:use-module (guix download)
> +  #:use-module (guix git-download)
>    #:use-module (guix packages)
>    #:use-module (guix build-system perl)
>    #:use-module (gnu packages bdw-gc)
> @@ -91,3 +92,70 @@ exceptions, continuations, runtime loading of code, big integers and interfacing
>  with native libraries.
>  @end itemize")
>      (license license:artistic2.0)))
> +
> +(define-public nqp
> +  (package
> +    (name "nqp")
> +    (version "2018.12")
> +    (source
> +      (origin
> +        (method git-fetch)
> +        (uri (git-reference
> +               (url "https://github.com/perl6/nqp.git")
> +               (commit version)))
> +        (file-name (git-file-name name version))

This should be downloaded from here: https://rakudo.perl6.org/downloads/nqp/

> +        (sha256
> +         (base32
> +          "1bwvyfyhirqi46p0j5m1ri98rxbfks8wc5amiaqwqyqq7x1l25xd"))
> +        (modules '((guix build utils)))
> +        (snippet
> +         '(begin
> +            (delete-file-recursively "3rdparty") #t))))
> +    (build-system perl-build-system)
> +    (arguments
> +     '(#:phases
> +       (modify-phases %standard-phases
> +         (add-after 'patch-source-shebangs 'patch-more-shebangs
> +           (lambda _
> +             (substitute* '("tools/build/install-jvm-runner.pl.in"
> +                            "tools/build/gen-js-cross-runner.pl"
> +                            "tools/build/gen-js-runner.pl"
> +                            "tools/build/install-js-runner.pl"
> +                            "tools/build/install-moar-runner.pl"
> +                            "tools/build/gen-moar-runner.pl"
> +                            "t/nqp/111-spawnprocasync.t"
> +                            "t/nqp/113-run-command.t")
> +               (("/bin/sh") (which "sh")))
> +             #t))
> +         (add-after 'unpack 'patch-source-date
> +           (lambda _
> +             (substitute* "tools/build/gen-version.pl"
> +               (("gmtime") "gmtime(0)"))
> +             #t))
> +         (add-after 'unpack 'remove-failing-test
> +           ;; One subtest fails for unknown reasons

can we delete/skip just the one subtest?

> +           (lambda _
> +             (delete-file "t/nqp/019-file-ops.t")
> +             #t))
> +         (replace 'configure
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (let ((out  (assoc-ref outputs "out"))
> +                   (moar (assoc-ref inputs "moarvm")))
> +               (invoke "perl" "Configure.pl"
> +                       "--backends=moar"
> +                       "--with-moar" (string-append moar "/bin/moar")
> +                       "--prefix" out)))))))
> +    (inputs
> +     `(("moarvm" ,moarvm)))
> +    (home-page "https://github.com/perl6/nqp")
> +    (synopsis "Not Quite Perl")
> +    (description "This is \"Not Quite Perl\" -- a lightweight Perl 6-like
> +environment for virtual machines.  The key feature of NQP is that it's designed
> +to be a very small environment (as compared with, say, perl6 or Rakudo) and is
> +focused on being a high-level way to create compilers and libraries for virtual
> +machines like MoarVM, the JVM, and others.
> +
> +Unlike a full-fledged implementation of Perl 6, NQP strives to have as small a
> +runtime footprint as it can, while still providing a Perl 6 object model and
> +regular expression engine for the virtual machine.")
> +    (license license:artistic2.0)))
> -- 
> 2.21.0
> 

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 03/25] gnu: Add rakudo.
  2019-03-12 20:19 ` [bug#34831] [PATCH 03/25] gnu: Add rakudo Efraim Flashner
@ 2019-03-19 10:04   ` Efraim Flashner
  0 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-19 10:04 UTC (permalink / raw)
  To: 34831

[-- Attachment #1: Type: text/plain, Size: 4500 bytes --]

On Tue, Mar 12, 2019 at 10:19:52PM +0200, Efraim Flashner wrote:
> * gnu/packages/perl6.scm (rakudo): New variable.
> ---
>  gnu/packages/perl6.scm | 70 +++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 69 insertions(+), 1 deletion(-)
> 
> diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
> index 344bb4efda..9659361309 100644
> --- a/gnu/packages/perl6.scm
> +++ b/gnu/packages/perl6.scm
> @@ -25,7 +25,8 @@
>    #:use-module (gnu packages bdw-gc)
>    #:use-module (gnu packages libevent)
>    #:use-module (gnu packages libffi)
> -  #:use-module (gnu packages pkg-config))
> +  #:use-module (gnu packages pkg-config)
> +  #:use-module (gnu packages tls))
>  
>  (define-public moarvm
>    (package
> @@ -159,3 +160,70 @@ Unlike a full-fledged implementation of Perl 6, NQP strives to have as small a
>  runtime footprint as it can, while still providing a Perl 6 object model and
>  regular expression engine for the virtual machine.")
>      (license license:artistic2.0)))
> +
> +(define-public rakudo
> +  (package
> +    (name "rakudo")
> +    (version "2018.12")
> +    (source
> +      (origin
> +        (method git-fetch)
> +        (uri (git-reference
> +               (url "https://github.com/rakudo/rakudo.git")
> +               (commit version)))
> +        (file-name (git-file-name name version))

This can also be downloaded from https://rakudo.perl6.org/downloads/rakudo/

> +        (sha256
> +         (base32
> +          "1g8n1vmpi3g6qd0bj59lwgmcqdwlyg3nciyxbdnq7bw7qp12k0p4"))))
> +    (build-system perl-build-system)
> +    (arguments
> +     '(#:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'patch-source-date
> +           (lambda _
> +             (substitute* "tools/build/gen-version.pl"
> +               (("gmtime") "gmtime(0)"))
> +             #t))
> +         (add-after 'patch-source-shebangs 'patch-more-shebangs
> +           (lambda _
> +             (substitute* '("tools/build/create-js-runner.pl"
> +                            "tools/build/create-moar-runner.p6"
> +                            "tools/build/create-jvm-runner.pl"
> +                            "src/core/Proc.pm6")
> +               (("/bin/sh") (which "sh")))
> +             #t))
> +         (replace 'configure
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (let ((out (assoc-ref outputs "out"))
> +                   (nqp (assoc-ref inputs "nqp")))
> +               (invoke "perl" "./Configure.pl"
> +                       "--backend=moar"
> +                       "--with-nqp" (string-append nqp "/bin/nqp")
> +                       "--prefix" out))))
> +         ;; This is the recommended tool to use for installing perl6 modules as
> +         ;; a distribution. See: https://github.com/ugexe/zef/issues/117

"This is the recommended tool for distro maintainers to install perl6
modules systemwide"

> +         (add-after 'install 'install-dist-tool
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let* ((out  (assoc-ref outputs "out"))
> +                    (dest (string-append out "/share/perl6/tools")))
> +               (install-file "tools/install-dist.p6" dest)
> +               (substitute* (string-append dest "/install-dist.p6")
> +                 (("/usr/bin/env perl6")
> +                  (string-append out "/bin/perl6"))))

Should we install the rest of the 'dist' folder and the 'resources'
folder?

> +             #t)))))
> +    (inputs
> +     `(("moarvm" ,moarvm)
> +       ("nqp" ,nqp)
> +       ("openssl" ,openssl)))
> +    (home-page "https://rakudo.org/")
> +    (native-search-paths
> +      (list (search-path-specification
> +              (variable "PERL6LIB")
> +              (separator ",")
> +              (files '("share/perl6/lib"
> +                       "share/perl6/site/lib"
> +                       "share/perl6/vendor/lib")))))
> +    (synopsis "Perl 6 Compiler")
> +    (description "Rakudo Perl is a compiler that implements the Perl 6
> +specification and runs on top of several virtual machines.")

Can this be lengthened?

> +    (license license:artistic2.0)))
> -- 
> 2.21.0
> 

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 01/25] gnu: Add moarvm.
  2019-03-12 20:19 ` [bug#34831] [PATCH 01/25] gnu: Add moarvm Efraim Flashner
@ 2019-03-19 10:05   ` Efraim Flashner
  0 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-19 10:05 UTC (permalink / raw)
  To: 34831

[-- Attachment #1: Type: text/plain, Size: 6241 bytes --]

On Tue, Mar 12, 2019 at 10:19:50PM +0200, Efraim Flashner wrote:
> * gnu/packages/perl6.scm (moarvm): New variable.
> ---
>  gnu/local.mk           |  3 +-
>  gnu/packages/perl6.scm | 93 ++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 95 insertions(+), 1 deletion(-)
>  create mode 100644 gnu/packages/perl6.scm
> 
> diff --git a/gnu/local.mk b/gnu/local.mk
> index af2bf87273..79b93d5966 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -10,7 +10,7 @@
>  # Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
>  # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
>  # Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
> -# Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
> +# Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
>  # Copyright © 2016, 2017 Jan Nieuwenhuizen <janneke@gnu.org>
>  # Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
>  # Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
> @@ -364,6 +364,7 @@ GNU_SYSTEM_MODULES =				\
>    %D%/packages/perl-check.scm			\
>    %D%/packages/perl-compression.scm		\
>    %D%/packages/perl-web.scm			\
> +  %D%/packages/perl6.scm			\
>    %D%/packages/photo.scm			\
>    %D%/packages/phabricator.scm 			\
>    %D%/packages/php.scm				\
> diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
> new file mode 100644
> index 0000000000..7e92c865aa
> --- /dev/null
> +++ b/gnu/packages/perl6.scm
> @@ -0,0 +1,93 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (gnu packages perl6)
> +  #:use-module ((guix licenses) #:prefix license:)
> +  #:use-module (guix download)
> +  #:use-module (guix packages)
> +  #:use-module (guix build-system perl)
> +  #:use-module (gnu packages bdw-gc)
> +  #:use-module (gnu packages libevent)
> +  #:use-module (gnu packages libffi)
> +  #:use-module (gnu packages pkg-config))
> +
> +(define-public moarvm
> +  (package
> +    (name "moarvm")
> +    (version "2018.12")

Can this be upgraded to 2019.03? I saw rakudo has a 2019.03.1 release
which might fix issues discovered previously when using 2019.03

> +    (source
> +      (origin
> +        (method url-fetch)
> +        (uri (string-append "https://moarvm.org/releases/MoarVM-"
> +                            version ".tar.gz"))
> +        (sha256
> +         (base32
> +          "0fv98712k1gk56a612388db1azjsyabsbygav1pa3z2kd6js4cz4"))
> +        (modules '((guix build utils)))
> +        (snippet
> +         '(begin
> +            ;(delete-file-recursively "3rdparty/dynasm") ; JIT
> +            (delete-file-recursively "3rdparty/dyncall")
> +            (delete-file-recursively "3rdparty/freebsd")
> +            (delete-file-recursively "3rdparty/libatomicops")
> +            (delete-file-recursively "3rdparty/libuv")
> +            ;(delete-file-recursively "3rdparty/libtommath") v1.0

Perhaps libtommath-1.0 should be packaged also and used

> +            (delete-file-recursively "3rdparty/msinttypes")
> +            #t))))
> +    (build-system perl-build-system)
> +    (arguments
> +     '(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'configure
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (let ((out        (assoc-ref outputs "out"))
> +                   (pkg-config (assoc-ref inputs "pkg-config")))
> +               (setenv "LDFLAGS" (string-append "-Wl,-rpath=" out "/lib"))
> +               (invoke "perl" "Configure.pl"
> +                       "--prefix" out
> +                       "--pkgconfig" (string-append pkg-config "/bin/pkg-config")
> +                       "--has-libatomic_ops"
> +                       "--has-libffi"
> +                       "--has-libuv")))))))
> +    (home-page "https://moarvm.org/")
> +    ;; These should be inputs but moar.h can't find them when building rakudo
> +    (propagated-inputs
> +     `(("libatomic-ops" ,libatomic-ops)
> +       ("libuv" ,libuv)))
> +    (inputs
> +     `(("libffi" ,libffi)))
> +    (native-inputs
> +     `(("pkg-config" ,pkg-config)))
> +    (synopsis "VM for NQP And Rakudo Perl 6")
> +    (description
> +     "Short for \"Metamodel On A Runtime\", MoarVM is a modern virtual machine
> +built for the Rakudo Perl 6 compiler and the NQP Compiler Toolchain.  Highlights
> +include:
> +
> +@itemize
> +@item Great Unicode support, with strings represented at grapheme level
> +@item Dynamic analysis of running code to identify hot functions and loops, and
> +perform a range of optimizations, including type specialization and inlining
> +@item Support for threads, a range of concurrency control constructs, and
> +asynchronous sockets, timers, processes, and more
> +@item Generational, parallel, garbage collection
> +@item Support for numerous language features, including first class functions,
> +exceptions, continuations, runtime loading of code, big integers and interfacing
> +with native libraries.
> +@end itemize")
> +    (license license:artistic2.0)))
> -- 
> 2.21.0
> 

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 04/25] build: Add rakudo-build-system.
  2019-03-12 20:19 ` [bug#34831] [PATCH 04/25] build: Add rakudo-build-system Efraim Flashner
@ 2019-03-19 10:13   ` Efraim Flashner
  2019-03-19 10:15   ` Efraim Flashner
  1 sibling, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-19 10:13 UTC (permalink / raw)
  To: 34831

[-- Attachment #1: Type: text/plain, Size: 17394 bytes --]

On Tue, Mar 12, 2019 at 10:19:53PM +0200, Efraim Flashner wrote:
> * guix/build-system/rakudo.scm,
> guix/build/rakudo-build-system.scm: New files.
> * Makefile.am (MODULES): Add them.
> * doc/guix.texi (Build System): Document it.
> ---
>  Makefile.am                        |   3 +
>  doc/guix.texi                      |  20 +++-
>  guix/build-system/rakudo.scm       | 155 +++++++++++++++++++++++++++++
>  guix/build/rakudo-build-system.scm | 140 ++++++++++++++++++++++++++
>  4 files changed, 317 insertions(+), 1 deletion(-)
>  create mode 100644 guix/build-system/rakudo.scm
>  create mode 100644 guix/build/rakudo-build-system.scm
> 
> diff --git a/Makefile.am b/Makefile.am
> index cf35770ba7..c3d2525af3 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -13,6 +13,7 @@
>  # Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
>  # Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
>  # Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
> +# Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
>  #
>  # This file is part of GNU Guix.
>  #
> @@ -124,6 +125,7 @@ MODULES =					\
>    guix/build-system/ocaml.scm			\
>    guix/build-system/waf.scm			\
>    guix/build-system/r.scm			\
> +  guix/build-system/rakudo.scm			\
>    guix/build-system/ruby.scm			\
>    guix/build-system/scons.scm			\
>    guix/build-system/texlive.scm			\
> @@ -164,6 +166,7 @@ MODULES =					\
>    guix/build/python-build-system.scm		\
>    guix/build/ocaml-build-system.scm		\
>    guix/build/r-build-system.scm			\
> +  guix/build/rakudo-build-system.scm		\
>    guix/build/ruby-build-system.scm		\
>    guix/build/scons-build-system.scm		\
>    guix/build/texlive-build-system.scm		\
> diff --git a/doc/guix.texi b/doc/guix.texi
> index 82cf2babb2..5937c86dad 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -28,7 +28,7 @@ Copyright @copyright{} 2015, 2016, 2017 Leo Famulari@*
>  Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus@*
>  Copyright @copyright{} 2016 Ben Woodcroft@*
>  Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@*
> -Copyright @copyright{} 2016, 2017, 2018 Efraim Flashner@*
> +Copyright @copyright{} 2016, 2017, 2018, 2019 Efraim Flashner@*
>  Copyright @copyright{} 2016 John Darrington@*
>  Copyright @copyright{} 2016, 2017 Nils Gillmann@*
>  Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@*
> @@ -5893,6 +5893,24 @@ are run after installation using the R function
>  @code{tools::testInstalledPackage}.
>  @end defvr
>  
> +@defvr {Scheme Variable} rakudo-build-system
> +This variable is exported by @code{(guix build-system rakudo)} It
> +implements the build procedure used by @uref{https://rakudo.org/,
> +Rakudo} for @uref{https://perl6.org/, Perl6} packages. It installs the
> +package to @code{/gnu/store/@dots{}/NAME-VERSION/share/perl6} and
> +installs the binaries, library files and the resources, as well as wrap
> +the files under the @code{bin/} directory.  Tests can be  skipped by
                                        extra space here ---^
> +passing @code{#f} to the @code{tests?} parameter.
> +
> +Which rakudo package is used can be specified with @code{rakudo}.
> +Which perl6-tap-harness package used for the tests can be specified with
> +@code{#:prove6} or removed by passing @code{#f} to the
> +@code{with-prove6?} parameter.
> +Which perl6-zef package used for tests and installing can be specified
> +with @code{#:zef} or removed by passing @code{#f} to the
> +@code{with-zef?} parameter.
> +@end defvr
> +
>  @defvr {Scheme Variable} texlive-build-system
>  This variable is exported by @code{(guix build-system texlive)}.  It is
>  used to build TeX packages in batch mode with a specified engine.  The
> diff --git a/guix/build-system/rakudo.scm b/guix/build-system/rakudo.scm
> new file mode 100644
> index 0000000000..fd469f0bb5
> --- /dev/null
> +++ b/guix/build-system/rakudo.scm
> @@ -0,0 +1,155 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (guix build-system rakudo)
> +  #:use-module (guix store)
> +  #:use-module (guix utils)
> +  #:use-module (guix derivations)
> +  #:use-module (guix search-paths)
> +  #:use-module (guix build-system)
> +  #:use-module (guix build-system gnu)
> +  #:use-module (guix packages)
> +  #:use-module (ice-9 match)
> +  #:export (%rakudo-build-system-modules
> +            rakudo-build
> +            rakudo-build-system))
> +
> +;; Commentary:
> +;;
> +;; Standard build and install procedure for packages using the Rakudo
> +;; build system to be installed as system libraries.  This is
> +;; implemented as an extension of `gnu-build-system'.
> +;;
> +;; Code:
> +
> +(define %rakudo-build-system-modules
> +  ;; Build-side modules imported by default.
> +  `((guix build rakudo-build-system)
> +    ,@%gnu-build-system-modules))
> +
> +(define (default-rakudo)
> +  "Return the default Rakudo package."
> +
> +  ;; Do not use `@' to avoid introducing circular dependencies.
> +  (let ((module (resolve-interface '(gnu packages perl6))))
> +    (module-ref module 'rakudo)))
> +
> +(define (default-prove6)
> +  "Return the default perl6-tap-harness package for tests."
> +  (let ((module (resolve-interface '(gnu packages perl6))))
> +    (module-ref module 'perl6-tap-harness)))
> +
> +(define (default-zef)
> +  "Return the default perl6-zef package."
> +  (let ((module (resolve-interface '(gnu packages perl6))))
> +    (module-ref module 'perl6-zef)))
> +
> +(define* (lower name
> +                #:key source inputs native-inputs outputs
> +                system target
> +                (rakudo (default-rakudo))
> +                (prove6 (default-prove6))
> +                (zef (default-zef))
> +                (with-prove6? #t)
> +                (with-zef? #t)
> +                #:allow-other-keys
> +                #:rest arguments)
> +  "Return a bag for NAME."
> +  (define private-keywords
> +    '(#:source #:target #:rakudo #:prove6 #:zef #:inputs #:native-inputs))
> +
> +  (and (not target)                               ;XXX: no cross-compilation
> +       (bag
> +         (name name)
> +         (system system)
> +         (host-inputs `(,@(if source
> +                              `(("source" ,source))
> +                              '())
> +                        ,@inputs
> +
> +                        ;; Keep the standard inputs of 'gnu-build-system'.
> +                        ,@(standard-packages)))
> +         (build-inputs `(("rakudo" ,rakudo)
> +                         ,@(if with-prove6?
> +                               `(("perl6-tap-harness" ,prove6))
> +                               '())
> +                         ,@(if with-zef?
> +                               `(("perl6-zef" ,zef))
> +                               '())

perl6-zef depends on perl6-tap-harness, so this check could be wrapped
inside the 'with-prove6?' check

> +                         ,@native-inputs))
> +         (outputs outputs)
> +         (build rakudo-build)
> +         (arguments (strip-keyword-arguments private-keywords arguments)))))
> +
> +(define* (rakudo-build store name inputs
> +                       #:key
> +                       (search-paths '())
> +                       (tests? #t)
> +                       (phases '(@ (guix build rakudo-build-system)
> +                                   %standard-phases))
> +                       (outputs '("out"))
> +                       (system (%current-system))
> +                       (guile #f)
> +                       (with-zef? #t)
> +                       (with-prove6? #t)
> +                       (imported-modules %rakudo-build-system-modules)
> +                       (modules '((guix build rakudo-build-system)
> +                                  (guix build utils))))
> +  "Build SOURCE using PERL6, and with INPUTS."
> +  (define builder
> +    `(begin
> +       (use-modules ,@modules)
> +       (rakudo-build #:name ,name
> +                     #:source ,(match (assoc-ref inputs "source")
> +                                      (((? derivation? source))
> +                                       (derivation->output-path source))
> +                                      ((source)
> +                                       source)
> +                                      (source
> +                                        source))
> +                     #:search-paths ',(map search-path-specification->sexp
> +                                           search-paths)
> +                     #:phases ,phases
> +                     #:system ,system
> +                     #:tests? ,tests?
> +                     #:outputs %outputs
> +                     #:inputs %build-inputs)))
> +
> +  (define guile-for-build
> +    (match guile
> +      ((? package?)
> +       (package-derivation store guile system #:graft? #f))
> +      (#f                                         ; the default
> +       (let* ((distro (resolve-interface '(gnu packages commencement)))
> +              (guile  (module-ref distro 'guile-final)))
> +         (package-derivation store guile system #:graft? #f)))))
> +
> +  (build-expression->derivation store name builder
> +                                #:system system
> +                                #:inputs inputs
> +                                #:modules imported-modules
> +                                #:outputs outputs
> +                                #:guile-for-build guile-for-build))
> +
> +(define rakudo-build-system
> +  (build-system
> +    (name 'rakudo)
> +    (description "The standard Rakudo build system")
> +    (lower lower)))
> +
> +;;; rakudo.scm ends here
> diff --git a/guix/build/rakudo-build-system.scm b/guix/build/rakudo-build-system.scm
> new file mode 100644
> index 0000000000..bfdefa3c4e
> --- /dev/null
> +++ b/guix/build/rakudo-build-system.scm
> @@ -0,0 +1,140 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (guix build rakudo-build-system)
> +  #:use-module ((guix build gnu-build-system) #:prefix gnu:)
> +  #:use-module (guix build utils)
> +  #:use-module (ice-9 ftw)
> +  #:use-module (ice-9 match)
> +  #:use-module (srfi srfi-1)
> +  #:use-module (srfi srfi-26)
> +  #:export (%standard-phases
> +            rakudo-build))
> +
> +;; Commentary:
> +;;
> +;; Builder-side code of the standard Rakudo package build procedure.
> +;;
> +;; Code:
> +
> +(define* (check #:key tests? inputs with-prove6? #:allow-other-keys)
> +  (if (and tests? (assoc-ref inputs "perl6-tap-harness"))
> +  ;(if (and tests? with-prove6?)

This might work the same in practice, but it should be fixed IMO

> +      (invoke "prove6" "-I=lib" "t/")
> +      (format #t "test suite not run~%"))
> +  #t)
> +
> +(define* (install #:key inputs outputs with-zef? #:allow-other-keys)
> +  "Install a given Perl6 package."
> +  (let* ((out   (assoc-ref outputs "out"))
> +         (perl6 (string-append out "/share/perl6")))
> +    (if (assoc-ref inputs "perl6-zef")
> +    ;(if with-zef?

same as above

> +        (begin
> +          (let ((zef (string-append (assoc-ref inputs "perl6-zef")
> +                                    "/bin/zef")))
> +            (setenv "HOME" (getcwd))
> +            (mkdir-p perl6)
> +            (invoke zef "install" "--verbose" "."
> +                    ;; Don't install any of the following:
> +                    "--/depends" "--/build-depends" "--/test-depends"
> +                    (string-append "--install-to=" perl6))
> +            (delete-file (string-append perl6 "/repo.lock")))
> +          #t)
> +        (begin
> +          (let ((inst (string-append (assoc-ref inputs "rakudo")
> +                                     "/share/perl6/tools/install-dist.p6")))
> +            (setenv "RAKUDO_RERESOLVE_DEPENDENCIES" "0")
> +            (setenv "RAKUDO_MODULE_DEBUG" "1") ; be verbose while building
> +            (invoke inst (string-append "--to=" perl6) "--for=site"))))))
> +
> +(define* (install-libs #:key outputs #:allow-other-keys)
> +  (let ((out  (assoc-ref outputs "out"))
> +        (lock "lib/.precomp/.lock"))
> +    (when (file-exists? lock)
> +      (delete-file "lib/.precomp/.lock"))
> +    (copy-recursively "lib" (string-append out "/share/perl6/lib"))
> +    #t))
> +
> +(define* (install-bins #:key outputs #:allow-other-keys)
> +  (let ((out  (assoc-ref outputs "out")))
> +    (when (file-exists? "bin")
> +      (for-each (lambda (file)
> +                  (install-file file (string-append out "/bin"))
> +                  (chmod (string-append out "/" file) #o555))
> +                (find-files "bin" ".*")))
> +    #t))

Both 'bin' and 'sbin' are wrapped in the 'wrap phase (see below) but
only the bin directory is installed. IMO both should be done.

> +
> +(define* (install-resources #:key outputs #:allow-other-keys)
> +  (let ((out  (assoc-ref outputs "out")))
> +    (when (file-exists? "resources")
> +      (copy-recursively "resources"
> +                        (string-append out "/share/perl6/resources")))
> +  #t))
> +
> +(define* (wrap #:key inputs outputs #:allow-other-keys)
> +  (define (list-of-files dir)
> +    (map (cut string-append dir "/" <>)
> +         (or (scandir dir (lambda (f)
> +                            (let ((s (stat (string-append dir "/" f))))
> +                              (eq? 'regular (stat:type s)))))
> +             '())))
> +
> +  (define bindirs
> +    (append-map (match-lambda
> +                 ((_ . dir)
> +                  (list (string-append dir "/bin")
> +                        (string-append dir "/sbin"))))
> +                outputs))
> +
> +  (let* ((out  (assoc-ref outputs "out"))
> +         (var `("PERL6LIB" "," prefix
> +                ,(cons (string-append out "/share/perl6/lib,"
> +                                      out "/share/perl6/site/lib,"
> +                                      out "/share/perl6/vendor/lib")
> +                       (search-path-as-string->list
> +                        (or (getenv "PERL6LIB") "") #\,)))))
> +    (for-each (lambda (dir)
> +                (let ((files (list-of-files dir)))
> +                  (for-each (cut wrap-program <> var)
> +                            files)))
> +              bindirs)
> +    #t))
> +
> +(define %standard-phases
> +  ;; No need for 'bootstrap, 'configure or 'build.
> +  (modify-phases gnu:%standard-phases
> +    (delete 'bootstrap)
> +    (delete 'configure)
> +    (delete 'build)
> +    (replace 'check check)
> +    (replace 'install install)
> +    (add-before 'install 'install-lib-dir install-libs)
> +    (add-after 'install-lib-dir 'install-resources install-resources)
> +    (add-after 'install-resources 'install-binaries install-bins)
> +    ;; needs to be after 'install-binaries and all 'install phases
> +    (add-after 'install 'wrap wrap)))
> +
> +(define* (rakudo-build #:key inputs (phases %standard-phases)
> +                       #:allow-other-keys #:rest args)
> +  "Build the given Perl6 package, applying all of PHASES in order."
> +  (apply gnu:gnu-build
> +         #:inputs inputs #:phases phases
> +         args))
> +
> +;;; rakudo-build-system.scm ends here
> -- 
> 2.21.0
> 

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [bug#34831] [PATCH 04/25] build: Add rakudo-build-system.
  2019-03-12 20:19 ` [bug#34831] [PATCH 04/25] build: Add rakudo-build-system Efraim Flashner
  2019-03-19 10:13   ` Efraim Flashner
@ 2019-03-19 10:15   ` Efraim Flashner
  1 sibling, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-19 10:15 UTC (permalink / raw)
  To: 34831

[-- Attachment #1: Type: text/plain, Size: 17080 bytes --]

On Tue, Mar 12, 2019 at 10:19:53PM +0200, Efraim Flashner wrote:
> * guix/build-system/rakudo.scm,
> guix/build/rakudo-build-system.scm: New files.
> * Makefile.am (MODULES): Add them.
> * doc/guix.texi (Build System): Document it.
> ---
>  Makefile.am                        |   3 +
>  doc/guix.texi                      |  20 +++-
>  guix/build-system/rakudo.scm       | 155 +++++++++++++++++++++++++++++
>  guix/build/rakudo-build-system.scm | 140 ++++++++++++++++++++++++++
>  4 files changed, 317 insertions(+), 1 deletion(-)
>  create mode 100644 guix/build-system/rakudo.scm
>  create mode 100644 guix/build/rakudo-build-system.scm
> 
> diff --git a/Makefile.am b/Makefile.am
> index cf35770ba7..c3d2525af3 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -13,6 +13,7 @@
>  # Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
>  # Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
>  # Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
> +# Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
>  #
>  # This file is part of GNU Guix.
>  #
> @@ -124,6 +125,7 @@ MODULES =					\
>    guix/build-system/ocaml.scm			\
>    guix/build-system/waf.scm			\
>    guix/build-system/r.scm			\
> +  guix/build-system/rakudo.scm			\
>    guix/build-system/ruby.scm			\
>    guix/build-system/scons.scm			\
>    guix/build-system/texlive.scm			\
> @@ -164,6 +166,7 @@ MODULES =					\
>    guix/build/python-build-system.scm		\
>    guix/build/ocaml-build-system.scm		\
>    guix/build/r-build-system.scm			\
> +  guix/build/rakudo-build-system.scm		\
>    guix/build/ruby-build-system.scm		\
>    guix/build/scons-build-system.scm		\
>    guix/build/texlive-build-system.scm		\
> diff --git a/doc/guix.texi b/doc/guix.texi
> index 82cf2babb2..5937c86dad 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -28,7 +28,7 @@ Copyright @copyright{} 2015, 2016, 2017 Leo Famulari@*
>  Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus@*
>  Copyright @copyright{} 2016 Ben Woodcroft@*
>  Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@*
> -Copyright @copyright{} 2016, 2017, 2018 Efraim Flashner@*
> +Copyright @copyright{} 2016, 2017, 2018, 2019 Efraim Flashner@*
>  Copyright @copyright{} 2016 John Darrington@*
>  Copyright @copyright{} 2016, 2017 Nils Gillmann@*
>  Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@*
> @@ -5893,6 +5893,24 @@ are run after installation using the R function
>  @code{tools::testInstalledPackage}.
>  @end defvr
>  
> +@defvr {Scheme Variable} rakudo-build-system
> +This variable is exported by @code{(guix build-system rakudo)} It
> +implements the build procedure used by @uref{https://rakudo.org/,
> +Rakudo} for @uref{https://perl6.org/, Perl6} packages. It installs the
> +package to @code{/gnu/store/@dots{}/NAME-VERSION/share/perl6} and
> +installs the binaries, library files and the resources, as well as wrap
> +the files under the @code{bin/} directory.  Tests can be  skipped by
> +passing @code{#f} to the @code{tests?} parameter.
> +
> +Which rakudo package is used can be specified with @code{rakudo}.
> +Which perl6-tap-harness package used for the tests can be specified with
> +@code{#:prove6} or removed by passing @code{#f} to the
> +@code{with-prove6?} parameter.
> +Which perl6-zef package used for tests and installing can be specified
> +with @code{#:zef} or removed by passing @code{#f} to the
> +@code{with-zef?} parameter.
> +@end defvr
> +
>  @defvr {Scheme Variable} texlive-build-system
>  This variable is exported by @code{(guix build-system texlive)}.  It is
>  used to build TeX packages in batch mode with a specified engine.  The
> diff --git a/guix/build-system/rakudo.scm b/guix/build-system/rakudo.scm
> new file mode 100644
> index 0000000000..fd469f0bb5
> --- /dev/null
> +++ b/guix/build-system/rakudo.scm
> @@ -0,0 +1,155 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (guix build-system rakudo)
> +  #:use-module (guix store)
> +  #:use-module (guix utils)
> +  #:use-module (guix derivations)
> +  #:use-module (guix search-paths)
> +  #:use-module (guix build-system)
> +  #:use-module (guix build-system gnu)
> +  #:use-module (guix packages)
> +  #:use-module (ice-9 match)
> +  #:export (%rakudo-build-system-modules
> +            rakudo-build
> +            rakudo-build-system))
> +
> +;; Commentary:
> +;;
> +;; Standard build and install procedure for packages using the Rakudo
> +;; build system to be installed as system libraries.  This is
> +;; implemented as an extension of `gnu-build-system'.
> +;;
> +;; Code:
> +
> +(define %rakudo-build-system-modules
> +  ;; Build-side modules imported by default.
> +  `((guix build rakudo-build-system)
> +    ,@%gnu-build-system-modules))
> +
> +(define (default-rakudo)
> +  "Return the default Rakudo package."
> +
> +  ;; Do not use `@' to avoid introducing circular dependencies.
> +  (let ((module (resolve-interface '(gnu packages perl6))))
> +    (module-ref module 'rakudo)))
> +
> +(define (default-prove6)
> +  "Return the default perl6-tap-harness package for tests."
> +  (let ((module (resolve-interface '(gnu packages perl6))))
> +    (module-ref module 'perl6-tap-harness)))
> +
> +(define (default-zef)
> +  "Return the default perl6-zef package."
> +  (let ((module (resolve-interface '(gnu packages perl6))))
> +    (module-ref module 'perl6-zef)))
> +
> +(define* (lower name
> +                #:key source inputs native-inputs outputs
> +                system target
> +                (rakudo (default-rakudo))
> +                (prove6 (default-prove6))
> +                (zef (default-zef))
> +                (with-prove6? #t)
> +                (with-zef? #t)
> +                #:allow-other-keys
> +                #:rest arguments)
> +  "Return a bag for NAME."
> +  (define private-keywords
> +    '(#:source #:target #:rakudo #:prove6 #:zef #:inputs #:native-inputs))
> +
> +  (and (not target)                               ;XXX: no cross-compilation
> +       (bag
> +         (name name)
> +         (system system)
> +         (host-inputs `(,@(if source
> +                              `(("source" ,source))
> +                              '())
> +                        ,@inputs
> +
> +                        ;; Keep the standard inputs of 'gnu-build-system'.
> +                        ,@(standard-packages)))
> +         (build-inputs `(("rakudo" ,rakudo)
> +                         ,@(if with-prove6?
> +                               `(("perl6-tap-harness" ,prove6))
> +                               '())
> +                         ,@(if with-zef?
> +                               `(("perl6-zef" ,zef))
> +                               '())
> +                         ,@native-inputs))
> +         (outputs outputs)
> +         (build rakudo-build)
> +         (arguments (strip-keyword-arguments private-keywords arguments)))))
> +
> +(define* (rakudo-build store name inputs
> +                       #:key
> +                       (search-paths '())
> +                       (tests? #t)
> +                       (phases '(@ (guix build rakudo-build-system)
> +                                   %standard-phases))
> +                       (outputs '("out"))
> +                       (system (%current-system))
> +                       (guile #f)
> +                       (with-zef? #t)
> +                       (with-prove6? #t)
> +                       (imported-modules %rakudo-build-system-modules)
> +                       (modules '((guix build rakudo-build-system)
> +                                  (guix build utils))))
> +  "Build SOURCE using PERL6, and with INPUTS."
> +  (define builder
> +    `(begin
> +       (use-modules ,@modules)
> +       (rakudo-build #:name ,name
> +                     #:source ,(match (assoc-ref inputs "source")
> +                                      (((? derivation? source))
> +                                       (derivation->output-path source))
> +                                      ((source)
> +                                       source)
> +                                      (source
> +                                        source))
> +                     #:search-paths ',(map search-path-specification->sexp
> +                                           search-paths)
> +                     #:phases ,phases
> +                     #:system ,system
> +                     #:tests? ,tests?
> +                     #:outputs %outputs
> +                     #:inputs %build-inputs)))
> +
> +  (define guile-for-build
> +    (match guile
> +      ((? package?)
> +       (package-derivation store guile system #:graft? #f))
> +      (#f                                         ; the default
> +       (let* ((distro (resolve-interface '(gnu packages commencement)))
> +              (guile  (module-ref distro 'guile-final)))
> +         (package-derivation store guile system #:graft? #f)))))
> +
> +  (build-expression->derivation store name builder
> +                                #:system system
> +                                #:inputs inputs
> +                                #:modules imported-modules
> +                                #:outputs outputs
> +                                #:guile-for-build guile-for-build))
> +
> +(define rakudo-build-system
> +  (build-system
> +    (name 'rakudo)
> +    (description "The standard Rakudo build system")
> +    (lower lower)))
> +
> +;;; rakudo.scm ends here
> diff --git a/guix/build/rakudo-build-system.scm b/guix/build/rakudo-build-system.scm
> new file mode 100644
> index 0000000000..bfdefa3c4e
> --- /dev/null
> +++ b/guix/build/rakudo-build-system.scm
> @@ -0,0 +1,140 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (guix build rakudo-build-system)
> +  #:use-module ((guix build gnu-build-system) #:prefix gnu:)
> +  #:use-module (guix build utils)
> +  #:use-module (ice-9 ftw)
> +  #:use-module (ice-9 match)
> +  #:use-module (srfi srfi-1)
> +  #:use-module (srfi srfi-26)
> +  #:export (%standard-phases
> +            rakudo-build))
> +
> +;; Commentary:
> +;;
> +;; Builder-side code of the standard Rakudo package build procedure.
> +;;
> +;; Code:
> +
> +(define* (check #:key tests? inputs with-prove6? #:allow-other-keys)
> +  (if (and tests? (assoc-ref inputs "perl6-tap-harness"))
> +  ;(if (and tests? with-prove6?)
> +      (invoke "prove6" "-I=lib" "t/")

Can we have a default set of tests even if perl6-tap-harness isn't
available?

> +      (format #t "test suite not run~%"))
> +  #t)
> +
> +(define* (install #:key inputs outputs with-zef? #:allow-other-keys)
> +  "Install a given Perl6 package."
> +  (let* ((out   (assoc-ref outputs "out"))
> +         (perl6 (string-append out "/share/perl6")))
> +    (if (assoc-ref inputs "perl6-zef")
> +    ;(if with-zef?
> +        (begin
> +          (let ((zef (string-append (assoc-ref inputs "perl6-zef")
> +                                    "/bin/zef")))
> +            (setenv "HOME" (getcwd))
> +            (mkdir-p perl6)
> +            (invoke zef "install" "--verbose" "."
> +                    ;; Don't install any of the following:
> +                    "--/depends" "--/build-depends" "--/test-depends"
> +                    (string-append "--install-to=" perl6))
> +            (delete-file (string-append perl6 "/repo.lock")))
> +          #t)
> +        (begin
> +          (let ((inst (string-append (assoc-ref inputs "rakudo")
> +                                     "/share/perl6/tools/install-dist.p6")))
> +            (setenv "RAKUDO_RERESOLVE_DEPENDENCIES" "0")
> +            (setenv "RAKUDO_MODULE_DEBUG" "1") ; be verbose while building
> +            (invoke inst (string-append "--to=" perl6) "--for=site"))))))
> +
> +(define* (install-libs #:key outputs #:allow-other-keys)
> +  (let ((out  (assoc-ref outputs "out"))
> +        (lock "lib/.precomp/.lock"))
> +    (when (file-exists? lock)
> +      (delete-file "lib/.precomp/.lock"))
> +    (copy-recursively "lib" (string-append out "/share/perl6/lib"))
> +    #t))
> +
> +(define* (install-bins #:key outputs #:allow-other-keys)
> +  (let ((out  (assoc-ref outputs "out")))
> +    (when (file-exists? "bin")
> +      (for-each (lambda (file)
> +                  (install-file file (string-append out "/bin"))
> +                  (chmod (string-append out "/" file) #o555))
> +                (find-files "bin" ".*")))
> +    #t))
> +
> +(define* (install-resources #:key outputs #:allow-other-keys)
> +  (let ((out  (assoc-ref outputs "out")))
> +    (when (file-exists? "resources")
> +      (copy-recursively "resources"
> +                        (string-append out "/share/perl6/resources")))
> +  #t))
> +
> +(define* (wrap #:key inputs outputs #:allow-other-keys)
> +  (define (list-of-files dir)
> +    (map (cut string-append dir "/" <>)
> +         (or (scandir dir (lambda (f)
> +                            (let ((s (stat (string-append dir "/" f))))
> +                              (eq? 'regular (stat:type s)))))
> +             '())))
> +
> +  (define bindirs
> +    (append-map (match-lambda
> +                 ((_ . dir)
> +                  (list (string-append dir "/bin")
> +                        (string-append dir "/sbin"))))
> +                outputs))
> +
> +  (let* ((out  (assoc-ref outputs "out"))
> +         (var `("PERL6LIB" "," prefix
> +                ,(cons (string-append out "/share/perl6/lib,"
> +                                      out "/share/perl6/site/lib,"
> +                                      out "/share/perl6/vendor/lib")
> +                       (search-path-as-string->list
> +                        (or (getenv "PERL6LIB") "") #\,)))))
> +    (for-each (lambda (dir)
> +                (let ((files (list-of-files dir)))
> +                  (for-each (cut wrap-program <> var)
> +                            files)))
> +              bindirs)
> +    #t))
> +
> +(define %standard-phases
> +  ;; No need for 'bootstrap, 'configure or 'build.
> +  (modify-phases gnu:%standard-phases
> +    (delete 'bootstrap)
> +    (delete 'configure)
> +    (delete 'build)
> +    (replace 'check check)
> +    (replace 'install install)
> +    (add-before 'install 'install-lib-dir install-libs)
> +    (add-after 'install-lib-dir 'install-resources install-resources)
> +    (add-after 'install-resources 'install-binaries install-bins)
> +    ;; needs to be after 'install-binaries and all 'install phases
> +    (add-after 'install 'wrap wrap)))
> +
> +(define* (rakudo-build #:key inputs (phases %standard-phases)
> +                       #:allow-other-keys #:rest args)
> +  "Build the given Perl6 package, applying all of PHASES in order."
> +  (apply gnu:gnu-build
> +         #:inputs inputs #:phases phases
> +         args))
> +
> +;;; rakudo-build-system.scm ends here
> -- 
> 2.21.0
> 

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#34831: [PATCH 00/25] Add perl6
  2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
                   ` (24 preceding siblings ...)
  2019-03-12 20:20 ` [bug#34831] [PATCH 25/25] gnu: Add perl6-json Efraim Flashner
@ 2019-03-24 14:31 ` Efraim Flashner
  25 siblings, 0 replies; 32+ messages in thread
From: Efraim Flashner @ 2019-03-24 14:31 UTC (permalink / raw)
  To: 34831-done

[-- Attachment #1: Type: text/plain, Size: 231 bytes --]

Patches pushed


-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2019-03-24 14:33 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-12 20:16 [bug#34831] [PATCH 00/25] Add perl6 Efraim Flashner
2019-03-12 20:19 ` [bug#34831] [PATCH 01/25] gnu: Add moarvm Efraim Flashner
2019-03-19 10:05   ` Efraim Flashner
2019-03-12 20:19 ` [bug#34831] [PATCH 02/25] gnu: Add nqp Efraim Flashner
2019-03-19 10:02   ` Efraim Flashner
2019-03-12 20:19 ` [bug#34831] [PATCH 03/25] gnu: Add rakudo Efraim Flashner
2019-03-19 10:04   ` Efraim Flashner
2019-03-12 20:19 ` [bug#34831] [PATCH 04/25] build: Add rakudo-build-system Efraim Flashner
2019-03-19 10:13   ` Efraim Flashner
2019-03-19 10:15   ` Efraim Flashner
2019-03-12 20:19 ` [bug#34831] [PATCH 05/25] gnu: Add perl6-tap-harness Efraim Flashner
2019-03-12 20:19 ` [bug#34831] [PATCH 06/25] gnu: Add perl6-zef Efraim Flashner
2019-03-12 20:19 ` [bug#34831] [PATCH 07/25] gnu: Add perl6-uri Efraim Flashner
2019-03-12 20:19 ` [bug#34831] [PATCH 08/25] gnu: Add perl6-json-fast Efraim Flashner
2019-03-12 20:19 ` [bug#34831] [PATCH 09/25] gnu: Add perl6-json-name Efraim Flashner
2019-03-12 20:19 ` [bug#34831] [PATCH 10/25] gnu: Add perl6-json-unmarshal Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 11/25] gnu: Add perl6-json-marshal Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 12/25] gnu: Add perl6-json-class Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 13/25] gnu: Add perl6-meta6 Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 14/25] gnu: Add perl6-license-spdx Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 15/25] gnu: Add perl6-test-meta Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 16/25] gnu: Add perl6-xml-writer Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 17/25] gnu: Add perl6-svg Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 18/25] gnu: Add perl6-svg-plot Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 19/25] gnu: Add perl6-terminal-ansicolor Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 20/25] gnu: Add perl6-oo-monitors Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 21/25] gnu: Add perl6-test-mock Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 22/25] gnu: Add perl6-grammar-profiler-simple Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 23/25] gnu: Add perl6-grammar-debugger Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 24/25] gnu: Add perl6-mime-base64 Efraim Flashner
2019-03-12 20:20 ` [bug#34831] [PATCH 25/25] gnu: Add perl6-json Efraim Flashner
2019-03-24 14:31 ` bug#34831: [PATCH 00/25] Add perl6 Efraim Flashner

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.