Subject: [bug#60372] [PATCH v2] gnu: lisp: Add lfe.

From: jgart <[email-masked]>
Date: Tue, 27 Dec 2022 22:05:46 -0600

* gnu/packages/lisp.scm (lfe): New variable.

Here's a v2 but this a WIP as the tests are disabled. Unless we can
merge this and enable the tests later after we figure out whether we
want to do that with rebar-build-system or via a custom phase?

I have an issue open here asking about running the tests:

https://github.com/lfe/lfe/issues/450

I tried running the tests by manually calling rebar but I get a homeless-shelter write error.

For test commands that I tried see the following section in the lfe project's CI:

https://github.com/lfe/lfe/blob/develop/.github/workflows/cicd.yml#L36

If anyone would like to collaborate on this patch feel free to make
changes and just list me as co-author with you.

all best,

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

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 753952152e..67105a5c93 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -66,6 +66,7 @@ (define-module (gnu packages lisp)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages dbm)
   #:use-module (gnu packages ed)
+  #:use-module (gnu packages erlang)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
@@ -1228,6 +1229,40 @@ (define-public picolisp
        (inherit picolisp32)
        (name "picolisp")))))
 
+(define-public lfe
+  (package
+    (name "lfe")
+    (version "2.0.1")
+    (source 
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/lfe/lfe")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0a5cfnk3021idvv4bv2lvnksjy9d0yyd13bnj793ks86j5f3hdv5"))))
+    (build-system gnu-build-system)
+    (inputs (list erlang))
+    (arguments 
+      (list #:tests? #f
+            #:make-flags
+            #~(list (string-append "PREFIX=" #$output))
+            #:phases
+            #~(modify-phases %standard-phases
+                (delete 'configure)
+                ;; https://github.com/lfe/lfe/pull/449
+                (add-after 'unpack 'patch-gcc
+                  (lambda* (#:key inputs #:allow-other-keys)
+                    (substitute* "Makefile"
+                      (("cc") #$(cc-for-target))))))))
+    (synopsis "Lisp Flavoured Erlang")
+    (description "LFE, Lisp Flavoured Erlang, is a lisp syntax front-end
+to the Erlang compiler.  Code produced with LFE is compatible with normal
+Erlang code.  An @code{lfe} evaluator and shell is also included.")
+    (home-page "https://lfe.io/")
+    (license license:asl2.0)))
+
 (define-public janet
   (package
     (name "janet")
-- 
2.38.1