Subject: [bug#57348] [PATCH] gnu: Add eisl

From: Joeke <[email-masked]>
Date: Tue, 30 Aug 2022 19:38:28 +0000

Hi,

Guillaume Le Vaillant <[email-masked]> writes:

>> +    (build-system gnu-build-system)
>> +    (native-inputs
>> +     (list gcc ncurses cppcheck))
>
> Adding gcc to 'native-inputs' is not necessary, and ncurses should
> probably be in 'inputs' instead of 'native-inputs'.

Right, fixed.

>> +    (arguments
>> +     `(#:modules
>> +       ((guix build utils)
>> +        (guix build gnu-build-system))
>
> Specifying 'modules' here is not necessary.

I removed this as well.

>> +    (home-page "https://github.com/sasagawa888/eisl")
>> +    (synopsis "Implementation of ISLisp")
>> +    (description "Easy ISLISP (eisl) is an implementation of ISLisp which
>> +includes a compiler as well as an interpreter.")
>> +    (license license:bsd-2)))
>
> It looks like some code in "cii/" is under the expat license, and some
> code in "nana/" is under bsd-3, so they should be added to the 'license'
> field.

You're right. I also found some gpl2+ code under nana/.

> Also, it looks like the files in "library/" are not compiled/installed.
> Is it on purpose?

This certainly was not intentional. In my new patch I somewhat hackily
copy the "library" and "bench" directories over to the output
directory. If there is a better way to do this, please let me know.

Dankon por la revizio,

Joeke de Graaf

>From 0162b638d42d02b4ed11db77b2ad46179f673f03 Mon Sep 17 00:00:00 2001
From: Joeke de Graaf <[email-masked]>
Date: Tue, 30 Aug 2022 21:27:24 +0200
Subject: [PATCH] gnu: Add eisl

---
 gnu/packages/lisp.scm | 59 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 2f37b82..ad57d45 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2021 Paul A. Patience <[email-masked]>
 ;;; Copyright © 2021 Charles Jackson <[email-masked]>
 ;;; Copyright © 2021 jgart <[email-masked]>
+;;; Copyright © 2022 Joeke de Graaf <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -59,6 +60,7 @@ (define-module (gnu packages lisp)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bdw-gc)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages ed)
   #:use-module (gnu packages fontutils)
@@ -1351,3 +1353,60 @@ (define-public buildapp
      "Buildapp is an application for SBCL or CCL that configures and saves an
 executable Common Lisp image.  It is similar to cl-launch and hu.dwim.build.")
     (license license:bsd-2)))
+
+
+(define-public eisl
+  (package
+    (name "eisl")
+    (version "2.60")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/sasagawa888/eisl")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "0qrmy6myyac38q3kf26axmxpmq9srhc6qy0ykfcsng50jzcdg1mn"))))
+    (build-system gnu-build-system)
+    (inputs
+     (list ncurses))
+    (native-inputs
+     (list cppcheck))
+    (arguments
+     `(#:make-flags
+       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+             (string-append "CC=" ,(cc-for-target)))
+
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'create-store-directory
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref %outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (lib (string-append out "/library"))
+                    (ben (string-append out "/bench")))
+               (map mkdir-p (list out bin lib ben)))))
+         (add-after 'install 'install-lib-and-bench
+           (lambda* (#:key build-inputs outputs #:allow-other-keys)
+             (let* ((source (assoc-ref %build-inputs "source"))
+                    (out (assoc-ref %outputs "out"))
+                    (libstring "/library/")
+                    (benchstring "/bench/"))
+               (map (lambda (subdir-name)
+                      (let ((sourcedir (opendir (string-append source subdir-name))))
+                        (do ((file (readdir sourcedir) (readdir sourcedir)))
+                            ((eof-object? file))
+                          (when (not (member file '("." "..")))
+                            (copy-file (string-append source subdir-name file)
+				        (string-append out subdir-name file))))))
+                    (list libstring benchstring)))))
+         (delete 'configure))))
+    (home-page "https://github.com/sasagawa888/eisl")
+    (synopsis "Implementation of ISLisp")
+    (description "Easy ISLISP (eisl) is an implementation of ISLisp which
+includes a compiler as well as an interpreter.")
+    (license (list license:bsd-2 ;; documents/license.txt
+                   license:expat ;; cii/LICENSE
+                   license:gpl2+ ;; nana/gdb/test.c and others under nana/
+                   license:bsd-3 ;; bench/*
+))))
-- 
2.37.2