[PATCH 0/4] Update Raku (Perl 6)

  • Open
  • quality assurance status badge
Details
3 participants
  • Alexandru-Sergiu Marton
  • Ludovic Courtès
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Alexandru-Sergiu Marton
Severity
normal
A
A
Alexandru-Sergiu Marton wrote on 6 Feb 2021 22:33
(address . guix-patches@gnu.org)(name . Alexandru-Sergiu Marton)(address . brown121407@posteo.ro)
20210206213332.11417-1-brown121407@posteo.ro
Hi,

These patches update Rakudo, the Raku language compiler (formerly known as
Perl 6), to a newer version. I don't consider the work complete, because of a
few reasons:

* I didn't check if the perl6-* are compatible with this change;
* I didn't change the description/synopsis of what I updated;

yet the packages build and seem to work just fine.

I wanted to start a discussion before I go all-in on this.

Since the official name of the language is now Raku [1], should we rename the
module file to raku.scm? Also, in synopsis/description like the one for
Rakudo, where it says "Perl 6 Compiler", should we make it "Raku compiler"
instead? The website for Rakudo says it is "The most mature, production-ready
implementation of the Raku language." [2].


Note that the rakudo package seems to be non-deterministic. The last version
was, and this new one is too.

Also note that I don't have any experience with Perl/Raku or Perl/Raku
tooling, so if I messed something up that should have been an obvious
Perl/Raku-related idiosyncrasy, please tell me.

Alexandru-Sergiu Marton (4):
gnu: Add dyncall.
gnu: moarvm: Update to 2020.12.
gnu: nqp: Update to 2020.12.
gnu: rakudo: Update to 2020.12.

gnu/packages/c.scm | 39 +++++++++++
gnu/packages/perl6.scm | 144 ++++++++++++++++++++---------------------
2 files changed, 109 insertions(+), 74 deletions(-)

--
2.30.0
A
A
Alexandru-Sergiu Marton wrote on 6 Feb 2021 22:35
[PATCH 1/4] gnu: Add dyncall.
(address . 46352@debbugs.gnu.org)(name . Alexandru-Sergiu Marton)(address . brown121407@posteo.ro)
20210206213511.11551-1-brown121407@posteo.ro
* gnu/packages/c.scm (dyncall): New variable.
---
gnu/packages/c.scm | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)

Toggle diff (56 lines)
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index d9e5e4d7de..db9938003f 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Greg Hogan <code@greghogan.com>
+;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -614,3 +615,41 @@ event stream encoding, a binary format for bidirectional client-server
communication.")
(home-page "https://github.com/awslabs/aws-c-event-stream")
(license license:asl2.0)))
+
+(define-public dyncall
+ (package
+ (name "dyncall")
+ (version "1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://www.dyncall.org/r" version
+ "/dyncall-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1mq832l2w17mvxd1sq50my8ykjfyzd52kizm0h3mc89l4k0590g8"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ (list (string-append "CC=" ,(cc-for-target)))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((bash (string-append (assoc-ref inputs "bash")
+ "/bin/bash"))
+ (out (assoc-ref outputs "out")))
+ (invoke bash "./configure"
+ (string-append "--prefix=" out)))))
+ (replace 'check
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((make (string-append (assoc-ref inputs "make")
+ "/bin/make")))
+ (invoke make "tests"
+ (string-append "CC=" ,(cc-for-target)))))))))
+ (synopsis "Library for calling C functions dynamically")
+ (description "The dyncall library encapsulates architecture-, OS- and
+compiler-specific function call semantics in a virtual bind argument
+parameters from left to right and then call interface allowing programmers to
+call C functions in a completely dynamic manner.")
+ (home-page "https://www.dyncall.org/")
+ (license license:isc)))
--
2.30.0
A
A
Alexandru-Sergiu Marton wrote on 6 Feb 2021 22:35
[PATCH 2/4] gnu: moarvm: Update to 2020.12.
(address . 46352@debbugs.gnu.org)(name . Alexandru-Sergiu Marton)(address . brown121407@posteo.ro)
20210206213511.11551-2-brown121407@posteo.ro
* gnu/packages/perl6.scm (moarvm): Update to 2020.12.
---
gnu/packages/perl6.scm | 57 ++++++++++++++++++++++++------------------
1 file changed, 32 insertions(+), 25 deletions(-)

Toggle diff (107 lines)
diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index e02dd757e5..96d76dd417 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -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 © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -25,6 +26,7 @@
#:use-module (guix build-system perl)
#:use-module (guix build-system rakudo)
#:use-module (gnu packages bdw-gc)
+ #:use-module (gnu packages c)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libffi)
#:use-module (gnu packages multiprecision)
@@ -34,26 +36,26 @@
(define-public moarvm
(package
(name "moarvm")
- (version "2019.03")
+ (version "2020.12")
(source
- (origin
- (method url-fetch)
- (uri (string-append "https://moarvm.org/releases/MoarVM-"
- version ".tar.gz"))
- (sha256
- (base32
- "017w1zvr6yl0cgjfc1b3ddlc6vjw9q8p7alw1vvsckw95190xc14"))
- (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")
- (delete-file-recursively "3rdparty/msinttypes")
- #t))))
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://moarvm.org/releases/MoarVM-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "18iys1bdb92asggrsz7sg1hh76j7kq63c3fgg33fnla18qf4z488"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Delete libraries which we can provide through Guix.
+ (delete-file-recursively "3rdparty/dyncall")
+ (delete-file-recursively "3rdparty/libatomicops")
+ (delete-file-recursively "3rdparty/libuv")
+ (delete-file-recursively "3rdparty/libtommath")
+ ;; Useful only for Microsoft Visual Studio.
+ (delete-file-recursively "3rdparty/msinttypes")
+ #t))))
(build-system perl-build-system)
(arguments
'(#:phases
@@ -64,19 +66,22 @@
(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")
+ (string-append "--prefix=" out)
+ (string-append "--pkgconfig=" pkg-config
+ "/bin/pkg-config")
"--has-libtommath"
"--has-libatomic_ops"
"--has-libffi"
- "--has-libuv")))))))
+ "--has-libuv"
+ "--has-dyncall")))))))
(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)
("libffi" ,libffi)
- ("libtommath" ,libtommath-1.0)
- ("libuv" ,libuv)))
+ ("libtommath" ,libtommath)
+ ("libuv" ,libuv)
+ ("dyncall" ,dyncall)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(synopsis "VM for NQP And Rakudo Perl 6")
@@ -96,7 +101,9 @@ asynchronous sockets, timers, processes, and more
exceptions, continuations, runtime loading of code, big integers and interfacing
with native libraries.
@end itemize")
- (license license:artistic2.0)))
+ (license (list license:artistic2.0 ; For MoarVM itself
+ license:expat ; 3rdparty/freebsd,tinymt,cmp
+ license:public-domain)))) ; 3rdparty/sha1
(define-public nqp
(package
--
2.30.0
A
A
Alexandru-Sergiu Marton wrote on 6 Feb 2021 22:35
[PATCH 4/4] gnu: rakudo: Update to 2020.12.
(address . 46352@debbugs.gnu.org)(name . Alexandru-Sergiu Marton)(address . brown121407@posteo.ro)
20210206213511.11551-4-brown121407@posteo.ro
* gnu/packages/perl6.scm (rakudo): Update to 2020.12.
---
gnu/packages/perl6.scm | 42 ++++++++++++++++++++----------------------
1 file changed, 20 insertions(+), 22 deletions(-)

Toggle diff (79 lines)
diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 3395d3a2ec..181b41a95b 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -164,39 +164,37 @@ regular expression engine for the virtual machine.")
(define-public rakudo
(package
(name "rakudo")
- (version "2019.03.1")
+ (version "2020.12")
(source
- (origin
- (method url-fetch)
- (uri (string-append "https://rakudo.perl6.org/downloads/rakudo/rakudo-"
- version ".tar.gz"))
- (sha256
- (base32
- "1nllf69v8xr6v3kkj7pmryg11n5m3ajfkr7j72pvhrgnjy8lv3r1"))))
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://rakudo.org/dl/rakudo/rakudo-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1g3ciwhlac85d6l2kqslw8pm4bjjd1z79m1c5ll0fxmr6awgpk67"))))
(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")
+ "src/core.c/Proc.pm6")
(("/bin/sh") (which "sh")))
#t))
+ (add-after 'unpack 'remove-failing-test
+ ;; One subtest fails for unknown reasons
+ (lambda _
+ (delete-file "t/09-moar/01-profilers.t")
+ #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")
+ (string-append "--with-nqp=" nqp "/bin/nqp")
"--prefix" out))))
;; This is the recommended tool for distro maintainers to install perl6
;; modules systemwide. See: https://github.com/ugexe/zef/issues/117
@@ -215,12 +213,12 @@ regular expression engine for the virtual machine.")
("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")))))
+ (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.")
--
2.30.0
A
A
Alexandru-Sergiu Marton wrote on 6 Feb 2021 22:35
[PATCH 3/4] gnu: nqp: Update to 2020.12.
(address . 46352@debbugs.gnu.org)(name . Alexandru-Sergiu Marton)(address . brown121407@posteo.ro)
20210206213511.11551-3-brown121407@posteo.ro
* gnu/packages/perl6.scm (nqp): Update to 2020.12.
---
gnu/packages/perl6.scm | 45 +++++++++++++++++-------------------------
1 file changed, 18 insertions(+), 27 deletions(-)

Toggle diff (78 lines)
diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 96d76dd417..3395d3a2ec 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -108,19 +108,22 @@ with native libraries.
(define-public nqp
(package
(name "nqp")
- (version "2019.03")
+ (version "2020.12")
(source
- (origin
- (method url-fetch)
- (uri (string-append "https://rakudo.perl6.org/downloads/nqp/nqp-"
- version ".tar.gz"))
- (sha256
- (base32
- "183zhll13fx416s3hkg4bkvib77kyr857h0nydgrl643fpacxp83"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- (delete-file-recursively "3rdparty") #t))))
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/Raku/nqp/releases/download/" version
+ "/nqp-" version ".tar.gz"))
+ (sha256
+ (base32
+ "13h64d41fwggc3lg4bpllg4jrp64clm7nmnw4g2jyjl47cy5ni7x"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (delete-file-recursively "3rdparty/asm")
+ (delete-file-recursively "3rdparty/jline")
+ (delete-file-recursively "3rdparty/jna")
+ #t))))
(build-system perl-build-system)
(arguments
'(#:phases
@@ -131,33 +134,21 @@ with native libraries.
"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)))))))
+ (string-append "--with-moar=" moar "/bin/moar")
+ (string-append "--prefix=" out))))))))
(inputs
`(("moarvm" ,moarvm)))
- (home-page "https://github.com/perl6/nqp")
+ (home-page "https://github.com/Raku/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
--
2.30.0
L
L
Ludovic Courtès wrote on 20 Mar 2021 22:03
Re: bug#46352: [PATCH 0/4] Update Raku (Perl 6)
(name . Alexandru-Sergiu Marton)(address . brown121407@posteo.ro)(address . 46352@debbugs.gnu.org)
87tup54jwz.fsf_-_@gnu.org
Hi,

Alexandru-Sergiu Marton <brown121407@posteo.ro> skribis:

Toggle quote (2 lines)
> * gnu/packages/c.scm (dyncall): New variable.

LGTM, except that it only builds static libraries.

Could we arrange to instead only build shared libraries, as we usually do?

Thanks,
Ludo’.
L
L
Ludovic Courtès wrote on 20 Mar 2021 22:07
(name . Alexandru-Sergiu Marton)(address . brown121407@posteo.ro)(address . 46352@debbugs.gnu.org)
87k0q14jqe.fsf_-_@gnu.org
Hi,

Alexandru-Sergiu Marton <brown121407@posteo.ro> skribis:

Toggle quote (2 lines)
> * gnu/packages/perl6.scm (moarvm): Update to 2020.12.

[...]

Toggle quote (4 lines)
> - ;(delete-file-recursively "3rdparty/dynasm") ; JIT
> - (delete-file-recursively "3rdparty/dyncall")
> - (delete-file-recursively "3rdparty/freebsd")

Apparently the 1st and 3rd line here are removed.

Is 3rdparty/freebsd being used now? If there an opportunity for
unbundling? If not, that’s OK.

Regarding dynasm, I think it’s best to keep the line commented out as a
reminder of what’s left to unbundle, if that’s still applicable.

Nitpick: could you mention in the commit log the modified fields:
‘inputs’, ‘arguments’, and ‘source’. That often helps fellow reviewers
read the diff. :-)

BTW, said reviewers have been so slow that there’s apparently a newer
version available now. Apologies!

Thanks in advance,
Ludo’.
L
L
Ludovic Courtès wrote on 20 Mar 2021 22:08
(name . Alexandru-Sergiu Marton)(address . brown121407@posteo.ro)(address . 46352@debbugs.gnu.org)
87ft0p4jor.fsf_-_@gnu.org
Alexandru-Sergiu Marton <brown121407@posteo.ro> skribis:

Toggle quote (2 lines)
> * gnu/packages/perl6.scm (rakudo): Update to 2020.12.

LGTM! (I’ll wait for updates to the previous patches before applying
it.)

As mentioned before, please mention the new/remove phases in the commit
log.

Ludo’.
L
L
Ludovic Courtès wrote on 20 Mar 2021 22:10
(name . Alexandru-Sergiu Marton)(address . brown121407@posteo.ro)(address . 46352@debbugs.gnu.org)
87blbd4jm4.fsf_-_@gnu.org
Alexandru-Sergiu Marton <brown121407@posteo.ro> skribis:

Toggle quote (2 lines)
> * gnu/packages/perl6.scm (nqp): Update to 2020.12.

[...]

Toggle quote (3 lines)
> - '(begin
> - (delete-file-recursively "3rdparty") #t))))

[...]

Toggle quote (5 lines)
> + '(begin
> + (delete-file-recursively "3rdparty/asm")
> + (delete-file-recursively "3rdparty/jline")
> + (delete-file-recursively "3rdparty/jna")

This suggests we’re now using some of the bundled libraries. Could you
explain and at least add a comment mentioning what’s still bundled?

Please also mention the phase changes in the commit log.

Thanks in advance!

Ludo’.
A
A
Alexandru-Sergiu Marton wrote on 22 Mar 2021 10:04
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 46352@debbugs.gnu.org)
87y2efh84e.fsf@posteo.ro
Ludovic Courtès writes:

Toggle quote (3 lines)
> Is 3rdparty/freebsd being used now? If there an opportunity for
> unbundling? If not, that’s OK.

Don't really remember what was the deal with that, I'll investigate.

Toggle quote (3 lines)
> Regarding dynasm, I think it’s best to keep the line commented out as a
> reminder of what’s left to unbundle, if that’s still applicable.

Will do.

Toggle quote (4 lines)
> Nitpick: could you mention in the commit log the modified fields:
> ‘inputs’, ‘arguments’, and ‘source’. That often helps fellow reviewers
> read the diff. :-)

Sure.

Toggle quote (3 lines)
> BTW, said reviewers have been so slow that there’s apparently a newer
> version available now. Apologies!

No problem. I have some test recipes for the latest version on my
them into Guix proper and check the dependent packages when I have the
time the following weeks.

Cheers.

--
Alexandru-Sergiu Marton
L
L
Ludovic Courtès wrote on 23 Mar 2021 11:32
(name . Alexandru-Sergiu Marton)(address . brown121407@posteo.ro)(address . 46352@debbugs.gnu.org)
87blbanoss.fsf@gnu.org
Hi,

Alexandru-Sergiu Marton <brown121407@posteo.ro> skribis:

Toggle quote (5 lines)
> No problem. I have some test recipes for the latest version on my
> channel, https://git.sr.ht/~brown121407/guix-channel , I'll try to put
> them into Guix proper and check the dependent packages when I have the
> time the following weeks.

Excellent. Thanks and again apologies for the delay!

Ludo’.
M
M
Maxim Cournoyer wrote on 20 Oct 2023 04:18
control message for bug #46352
(address . control@debbugs.gnu.org)
87ttqmm3z9.fsf@gmail.com
tags 46352 + moreinfo
quit
?