[bug#35082] gnu: Add kawa.

Message ID 878swqip7i.fsf@zancanaro.id.au
State Accepted
Headers show
Series [bug#35082] gnu: Add kawa. | expand

Checks

Context Check Description
cbaines/applying patch fail Apply failed

Commit Message

Carlo Zancanaro April 4, 2019, 12:33 a.m. UTC
Hey Ludo’,

On Thu, Apr 04 2019, Ludovic Courtès wrote:
> Carlo Zancanaro <carlo@zancanaro.id.au> skribis:
>
>> The suggested synopsis is "Java framework and implementation of 
>> Scheme, Elisp, and more", and the suggested description is "GNU 
>> Kawa is an implementation of the Scheme programming language 
>> that is built on top of the Java platform.  It is thus 
>> conveniently integrated with Java and benefits from this by 
>> having a compiler, optional static typing, and so on.  Kawa 
>> also serves as a framework for implementing other programming 
>> languages on the Java platform.  Included in Kawa is qexo, a 
>> partial implementation of XQuery in Java."
>
> I actually have a slight preference for these :-), I find it 
> more factual than what you propose, but I’m happy either way.

The main difference is the emphasis. The suggested text emphasises 
the "framework" aspect of Kawa, whereas my text emphasise the 
"Scheme" aspect (with a short mention of the framework at the 
end). I don't know which emphasis the project desires, so I've 
Cced Per Bothner in case he has a preference. The text that I have 
used in the description is loosely taken from the Kawa home 
page[1].

The placement in scheme.scm makes the Scheme emphasis a natural 
choice. Compare with the description of Racket, which is also a 
framework for building programming languages, but our synopsis and 
description emphasise that it is an implementation of Scheme.

I've attached a patch with the updated URL.

Carlo

[1]: https://www.gnu.org/software/kawa/index.html

Comments

Ludovic Courtès April 4, 2019, 8:01 a.m. UTC | #1
Hello,

Carlo Zancanaro <carlo@zancanaro.id.au> skribis:

> On Thu, Apr 04 2019, Ludovic Courtès wrote:
>> Carlo Zancanaro <carlo@zancanaro.id.au> skribis:
>>
>>> The suggested synopsis is "Java framework and implementation of
>>> Scheme, Elisp, and more", and the suggested description is "GNU
>>> Kawa is an implementation of the Scheme programming language that
>>> is built on top of the Java platform.  It is thus conveniently
>>> integrated with Java and benefits from this by having a compiler,
>>> optional static typing, and so on.  Kawa also serves as a framework
>>> for implementing other programming languages on the Java platform.
>>> Included in Kawa is qexo, a partial implementation of XQuery in
>>> Java."
>>
>> I actually have a slight preference for these :-), I find it more
>> factual than what you propose, but I’m happy either way.
>
> The main difference is the emphasis. The suggested text emphasises the
> "framework" aspect of Kawa, whereas my text emphasise the "Scheme"
> aspect (with a short mention of the framework at the end). I don't
> know which emphasis the project desires, so I've Cced Per Bothner in
> case he has a preference. The text that I have used in the description
> is loosely taken from the Kawa home page[1].

Per, note that the “suggested description” that Carlo refers to above
is the canonical description that GNU has for Kawa:

  http://cvs.savannah.gnu.org/viewvc/*checkout*/womb/gnumaint/rec/pkgblurbs.rec

We should change it if it doesn’t match the way you would present Kawa.

Let us know what you think!

Thanks,
Ludo’.
Ludovic Courtès April 4, 2019, 8:03 a.m. UTC | #2
Hi again,

Carlo Zancanaro <carlo@zancanaro.id.au> skribis:

> --- a/gnu/packages/scheme.scm
> +++ b/gnu/packages/scheme.scm
> @@ -31,7 +31,7 @@
>    #:use-module (gnu packages)
>    #:use-module ((guix licenses)
>                  #:select (gpl2+ lgpl2.0+ lgpl2.1+ lgpl3+ asl2.0 bsd-3
> -                          cc-by-sa4.0 non-copyleft))
> +                          cc-by-sa4.0 non-copyleft expat))
>    #:use-module (guix packages)
>    #:use-module (guix download)
>    #:use-module (guix git-download)
> @@ -69,6 +69,7 @@
>    #:use-module (gnu packages tls)
>    #:use-module (gnu packages gl)
>    #:use-module (gnu packages libedit)
> +  #:use-module (gnu packages java)

It just occurred to me that this new dependency on java.scm is probably
not desirable since it pulls in a lot of additional stuff.  I think we
should instead move Kawa to java.scm.  WDYT?

Anyway let’s also wait for Per’s reply.

Thanks,
Ludo’.
Ricardo Wurmus April 4, 2019, 8:10 a.m. UTC | #3
Ludovic Courtès <ludo@gnu.org> writes:

> Hi again,
>
> Carlo Zancanaro <carlo@zancanaro.id.au> skribis:
>
>> --- a/gnu/packages/scheme.scm
>> +++ b/gnu/packages/scheme.scm
>> @@ -31,7 +31,7 @@
>>    #:use-module (gnu packages)
>>    #:use-module ((guix licenses)
>>                  #:select (gpl2+ lgpl2.0+ lgpl2.1+ lgpl3+ asl2.0 bsd-3
>> -                          cc-by-sa4.0 non-copyleft))
>> +                          cc-by-sa4.0 non-copyleft expat))
>>    #:use-module (guix packages)
>>    #:use-module (guix download)
>>    #:use-module (guix git-download)
>> @@ -69,6 +69,7 @@
>>    #:use-module (gnu packages tls)
>>    #:use-module (gnu packages gl)
>>    #:use-module (gnu packages libedit)
>> +  #:use-module (gnu packages java)
>
> It just occurred to me that this new dependency on java.scm is probably
> not desirable since it pulls in a lot of additional stuff.  I think we
> should instead move Kawa to java.scm.  WDYT?

…or even to kawa.scm, just as we have clojure.scm.  I’ve been meaning to
move everything but the JDK bootstrap out of java.scm.

--
Ricardo
Ludovic Courtès June 13, 2019, 11:02 a.m. UTC | #4
Hello Carlo,

I realized we had been blocking this patch for too long for no good
reason, so I pushed a variant thereof as
47f2168b6fabb105565526b2a1243eeeb13008fe.

Thanks,
Ludo’.

Patch

From bc7cd37b4bf8acf34a1f429a965f9bf28900b3d1 Mon Sep 17 00:00:00 2001
From: Carlo Zancanaro <carlo@zancanaro.id.au>
Date: Mon, 25 Feb 2019 16:41:22 +1100
Subject: [PATCH] gnu: Add kawa.

* gnu/packages/scheme.scm (kawa): New variable.
---
 gnu/packages/scheme.scm | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 9dbb3713ee..6d1051abfb 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -31,7 +31,7 @@ 
   #:use-module (gnu packages)
   #:use-module ((guix licenses)
                 #:select (gpl2+ lgpl2.0+ lgpl2.1+ lgpl3+ asl2.0 bsd-3
-                          cc-by-sa4.0 non-copyleft))
+                          cc-by-sa4.0 non-copyleft expat))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -69,6 +69,7 @@ 
   #:use-module (gnu packages tls)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages libedit)
+  #:use-module (gnu packages java)
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 match))
 
@@ -1245,4 +1246,30 @@  multilingual support are some of the goals.  Gauche comes with a package
 manager/installer @code{gauche-package} which can download, compile, install
 and list gauche extension packages.")
     (license bsd-3)))
+
+(define-public kawa
+  (package
+    (name "kawa")
+    (version "3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnu/kawa/kawa-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1k9qpydc64ar4aqyg3q7jmmxy503ayj85227qfhc5n6ngchqavhy"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:parallel-build? #f
+       #:parallel-tests? #f))
+    (inputs
+     `(("icedtea" ,icedtea-8 "jdk")))
+    (home-page "https://www.gnu.org/software/kawa/")
+    (synopsis "Scheme on the Java Virtual machine")
+    (description "Kawa is an implementation of Scheme for the Java Virtual
+Machine.  It combines the benefits of dynamic scripting languages (minimal
+boiler-plate, fast to start up, REPL) with the benefits of traditional
+compiled languages (fast execution, static error detection, modularity,
+zero-overhead Java integration).  Kawa also provides a framework for
+implementing other programming languages on the Java platform.")
+    (license expat)))
-- 
2.21.0