Subject: [PATCH 1/2] gnu: Add maxima-ecl.

From: Andreas Enge <[email-masked]>
Date: Thu, 13 Feb 2025 16:31:32 +0100

* gnu/packages/maths.scm (maxima-ecl): New variable.

Change-Id: I71a14d064e67aa34fdd7f6eb8499dfbd1dea11b9
---
 gnu/packages/maths.scm | 36 +++++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 4a1637b952..4dcf986ccc 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2019, 2020, 2023, 2024 Andreas Enge <[email-masked]>
+;;; Copyright © 2013, 2014, 2015, 2016, 2019, 2020, 2023, 2024, 2025 Andreas Enge <[email-masked]>
 ;;; Copyright © 2013 Nikita Karetnikov <[email-masked]>
 ;;; Copyright © 2014, 2016, 2017 John Darrington <[email-masked]>
 ;;; Copyright © 2014-2022 Eric Bavier <[email-masked]>
@@ -5511,6 +5511,40 @@ (define-public maxima
     ;; GPLv2 only is therefore the smallest subset.
     (license license:gpl2)))
 
+(define-public maxima-ecl
+  (package/inherit maxima
+    (name "maxima-ecl")
+    (inputs
+      (modify-inputs (package-inputs maxima)
+        (delete "sbcl")
+        (prepend ecl)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments maxima)
+       ((#:configure-flags flags)
+         #~(list "--enable-ecl"))
+        ((#:phases phases)
+          #~(modify-phases #$phases
+            (add-after 'install 'install-lib
+             (lambda _
+               (let ((lib (string-append
+                            #$output "/lib/maxima/"
+                            #$(package-version this-package)
+                            "/binary-ecl")))
+                    (install-file "src/binary-ecl/maxima.fas" lib))))
+            (replace 'check
+              (lambda _
+                (invoke "sh" "-c"
+                        (string-append
+                          "./maxima-local "
+                          "--lisp=ecl "
+                          "--batch-string=\"run_testsuite();\" "
+                          "| grep -q \"No unexpected errors found\""))))))))
+    (description
+      (string-append
+        (package-description maxima)
+        "  This package variant uses ECL as the underlying Lisp
+implementation."))))
+
 (define-public wxmaxima
   (package
     (name "wxmaxima")
-- 
2.48.1