Subject: [bug#76149] [PATCH v1] gnu: Add escm.

From: Adam Faiz <[email-masked]>
Date: Sun, 9 Feb 2025 12:11:42 +0800

>From 0840e1be3892c6721518fc0d2daafee701878ea5 Mon Sep 17 00:00:00 2001
Message-ID: <0[email-masked]>
From: AwesomeAdam54321 <[email-masked]>
Date: Sun, 9 Feb 2025 09:39:04 +0800
Subject: [PATCH v1] gnu: Add escm.

* gnu/packages/scheme.scm (escm): New variable.
---
 gnu/packages/scheme.scm | 50 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index d8cb3b1de1..f21e60f4fb 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -67,11 +67,13 @@ (define-module (gnu packages scheme)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gawk)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages guile)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libevent)
@@ -1275,6 +1277,54 @@ (define-public emacs-gerbil-mode
      "Gerbil mode provides font-lock, indentation, navigation, and REPL for
 Gerbil code within Emacs.")))
 
+(define-public escm
+  (package
+    (name "escm")
+    (version "0.32")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/escm/"
+                           "aescm/" version "/aescm-" version ".tar.gz"))
+              (sha256
+               (base32
+                "12i5ny493pi6vszkrjz3wqi1p4psw8fhdlhbpyw0c5lrlbsyvw0h"))
+              (modules '((guix build utils)))
+              (snippet
+               #~(begin
+                   (for-each delete-file (find-files "." "Makefile.in"))
+                   (for-each delete-file '("configure"
+                                           "aclocal.m4"
+                                           "install-sh"
+                                           "depcomp"))
+                   (substitute* "lang/Makefile.am"
+                     ;; avoid installing the same directory twice
+                     (("awk scm") "scm"))))))
+    (build-system gnu-build-system)
+    (native-inputs (list autoconf automake gawk))
+    (inputs (list guile-3.0))
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'bootstrap 'fix-configure
+            (lambda _
+              (substitute* "configure.ac"
+                (("INTERP=\"guile")
+                 (string-append "INTERP=\"" (which "guile"))))))
+          (replace 'check
+            ;; The test infrastructure reuses the same input and output filename
+            ;; for each test, which would clobber them if done in parallel.
+            (lambda* (#:key tests? make-flags #:allow-other-keys)
+              (when tests?
+                (invoke "make" "check" "-j" "1")))))))
+    (synopsis "Embedded Scheme processor")
+    (description
+     "@code{escm} is a filter program which takes a text with embedded Scheme expressions,
+copies it to the output with evaluating the Scheme expressions.
+You can use the power of Scheme to preprocess various text files, including CGI scripts.")
+    (home-page "https://practical-scheme.net/vault/escm.html")
+    (license expat)))
+
 (define-public stklos
   (package
     (name "stklos")

base-commit: ba0340eec2e50439cfd94e85b40bf41c2d488a74
-- 
2.46.0