diff mbox series

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

Message ID 20221228040545.30885-1-jgart@dismail.de
State New
Headers show
Series [bug#60372,v2] gnu: lisp: Add lfe. | expand

Commit Message

jgart Dec. 28, 2022, 4:05 a.m. UTC
* 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(+)

Comments

Maxim Cournoyer March 21, 2023, 2:25 p.m. UTC | #1
Hi,

jgart <jgart@dismail.de> writes:

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

I think that should go in (gnu packages erlang).  Also, the convention
is to use just 'gnu: ' as prefix, not 'gnu: module:'.

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

You could try setting HOME to /tmp.  Search for existing set-HOME
phases in the code base.

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

You can set 'cc' as a Make flag; that'd be more elegant.
jgart March 21, 2023, 2:32 p.m. UTC | #2
Hi Maxim,

Thanks for the review.

I think this will need to be written in terms of the rebar-build-system:

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

Otherwise, it might be painful to run the tests. Even upstream is unsure of how to run the tests if building with a Makefile.

Just leaving this additional note here for when I get back to this.

all best,

jgart
diff mbox series

Patch

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")