diff mbox series

[bug#57348] gnu: Add eisl

Message ID 87k06pbjyj.fsf@bolo-santosi.mail-host-address-is-not-set
State Accepted
Headers show
Series [bug#57348] gnu: Add eisl | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git-branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Joeke de Graaf Aug. 30, 2022, 7:38 p.m. UTC
Hi,

Guillaume Le Vaillant <glv@posteo.net> 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

Comments

Guillaume Le Vaillant Aug. 31, 2022, 11:58 a.m. UTC | #1
Joeke <joeke@posteo.net> skribis:

>> 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.

Apparently upstream has recently added fixes to the makefile concerning
the "library" directory, but there are still a few things to fix
(see <https://github.com/sasagawa888/eisl/issues/215>).
Guillaume Le Vaillant Sept. 3, 2022, 2:03 p.m. UTC | #2
I updated your patch for version 2.62 which has the fixes for the
libraries. I also added a 'wrap' phase, so calling "(compile-file ...)"
should work without having to propagate gcc-toolchain etc.
Patch pushed as 5cf9b98d1cdd25ee44224f8256ea6f719b9aa0bd.
Thanks.
diff mbox series

Patch

From 0162b638d42d02b4ed11db77b2ad46179f673f03 Mon Sep 17 00:00:00 2001
From: Joeke de Graaf <joeke@posteo.net>
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 <paul@apatience.com>
 ;;; Copyright © 2021 Charles Jackson <charles.b.jackson@protonmail.com>
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
+;;; Copyright © 2022 Joeke de Graaf <joeke@posteo.net>
 ;;;
 ;;; 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