~ruther/guix-local

6a80ac450c835c146a2b5102d36e9af17a1d1d2d — Paul A. Patience 4 years ago f3f3998
gnu: rakudo: Update to 2022.04.

* gnu/packages/perl6.scm (rakudo): Update to 2022.04.
[source]: Add snippet to delete bundled 3rdparty directory.
[arguments]: Add 'remove-calls-to-git', 'fix-paths' and
'disable-failing-tests' phases. Remove 'patch-source-date' phase. Adjust
files in 'patch-more-shebangs' phase and sort them. Remove redundant
'./' from 'configure' phase. Replace Perl extensions and paths with Raku
equivalents in 'install-dist-tool' phase.
[native-inputs]: Add nqp-configure.
[synopsis, description]: Replace mentions of Perl with Raku.

* guix/build/rakudo-build-system.scm (install): Replace Perl extension
with Raku extension.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2 files changed, 50 insertions(+), 23 deletions(-)

M gnu/packages/perl6.scm
M guix/build/rakudo-build-system.scm
M gnu/packages/perl6.scm => gnu/packages/perl6.scm +49 -22
@@ 1,6 1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 28,6 29,7 @@
  #:use-module (gnu packages libevent)
  #:use-module (gnu packages libffi)
  #:use-module (gnu packages multiprecision)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages tls))



@@ 220,48 222,73 @@ regular expression engine for the virtual machine.")
(define-public rakudo
  (package
    (name "rakudo")
    (version "2019.03.1")
    (version "2022.04")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://rakudo.perl6.org/downloads/rakudo/rakudo-"
                           version ".tar.gz"))
       (uri (string-append "https://github.com/rakudo/rakudo/releases/download/"
                           version "/rakudo-" version ".tar.gz"))
       (sha256
        (base32
         "1nllf69v8xr6v3kkj7pmryg11n5m3ajfkr7j72pvhrgnjy8lv3r1"))))
        (base32 "0x0w5b8g5kna1mlvsli9dqmnwvqalrar3cgpixmyiyvyjb6ah4vy"))
       (modules '((guix build utils)))
       (snippet
        '(delete-file-recursively "3rdparty"))))
    (build-system perl-build-system)
    (arguments
     '(#:phases
     `(#:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'patch-source-date
         (add-after 'unpack 'remove-calls-to-git
           (lambda _
             (substitute* "tools/build/gen-version.pl"
               (("gmtime") "gmtime(0)"))))
             (invoke "perl" "-ni" "-e" "print if not /^BEGIN {/ .. /^}/"
                     "Configure.pl")))
         (add-after 'remove-calls-to-git 'fix-paths
           (lambda _
             (substitute* "tools/templates/Makefile-common-macros.in"
               (("NQP_CONFIG_DIR = .*")
                (string-append "NQP_CONFIG_DIR = "
                               (assoc-ref %build-inputs "nqp-configure")
                               "/lib/perl5/site_perl/"
                               ,(package-version perl)
                               "\n")))))
         ;; These tests pass when run manually.
         (add-after 'fix-paths 'disable-failing-tests
           (lambda _
             (substitute* "t/02-rakudo/repl.t"
               (("^plan 47;\n") "plan 46;\n"))
             (invoke "perl" "-ni" "-e"
                     "printf if not /^    \\(temp %\\*ENV\\)/ .. /^    }/"
                     "t/02-rakudo/repl.t")
             (substitute* "t/09-moar/01-profilers.t"
               (("^plan 12;\n") "plan 10;\n")
               (("^ok \\$htmlpath\\.IO\\.f, .*") "")
               (("^ok \\(try \\$htmlpath\\.IO\\.s .*") ""))))
         (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")
             (substitute* '("src/core.c/Proc.pm6"
                            "t/spec/S29-os/system.t"
                            "tools/build/create-js-runner.pl"
                            "tools/build/create-jvm-runner.pl")
               (("/bin/sh") (which "sh")))))
         (replace 'configure
           (lambda* (#:key inputs outputs #:allow-other-keys)
             (let ((out (assoc-ref outputs "out"))
                   (nqp (assoc-ref inputs "nqp")))
               (invoke "perl" "./Configure.pl"
               (invoke "perl" "Configure.pl"
                       "--backend=moar"
                       "--with-nqp" (string-append nqp "/bin/nqp")
                       "--prefix" out))))
         ;; This is the recommended tool for distro maintainers to install perl6
         ;; This is the recommended tool for distro maintainers to install Raku
         ;; modules systemwide.  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")))))))))
               (install-file "tools/install-dist.raku" dest)
               (substitute* (string-append dest "/install-dist.raku")
                 (("/usr/bin/env raku")
                  (string-append out "/bin/raku")))))))))
    (native-inputs
     (list nqp-configure))
    (inputs
     (list moarvm nqp openssl))
    (home-page "https://rakudo.org/")


@@ 272,9 299,9 @@ regular expression engine for the virtual machine.")
            (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.")
    (synopsis "Raku Compiler")
    (description "Rakudo is a compiler that implements the Raku specification
and runs on top of several virtual machines.")
    (license license:artistic2.0)))

(define-public perl6-grammar-debugger

M guix/build/rakudo-build-system.scm => guix/build/rakudo-build-system.scm +1 -1
@@ 59,7 59,7 @@
          #t)
        (begin
          (let ((inst (string-append (assoc-ref inputs "rakudo")
                                     "/share/perl6/tools/install-dist.p6")))
                                     "/share/perl6/tools/install-dist.raku")))
            (setenv "RAKUDO_RERESOLVE_DEPENDENCIES" "0")
            (setenv "RAKUDO_MODULE_DEBUG" "1") ; be verbose while building
            (invoke inst (string-append "--to=" perl6) "--for=site"))))))