Subject: Re: [PATCH 03/25] gnu: Add rakudo.

From: Efraim Flashner <[email-masked]>
Date: Tue, 19 Mar 2019 12:04:13 +0200

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   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted