Subject: [bug#35082] [PATCH] gnu: Add kawa.

From: Carlo Zancanaro <[email-masked]>
Date: Thu, 04 Apr 2019 11:33:37 +1100

Hey Ludo’,

On Thu, Apr 04 2019, Ludovic Courtès wrote:
> Carlo Zancanaro <[email-masked]> 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

>From bc7cd37b4bf8acf34a1f429a965f9bf28900b3d1 Mon Sep 17 00:00:00 2001
From: Carlo Zancanaro <[email-masked]>
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