Subject: bug#65494: closed (Re: bug#65494: [PATCH] gnu: Add stklos.)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 14 Sep 2023 14:13:02 +0000

Your bug report

#65494: [PATCH] gnu: Add stklos.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
65494: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65494
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#65494: [PATCH] gnu: Add stklos.
From: Ludovic Courtès <[email-masked]>
To: Ramin Honary <[email-masked]>
Cc: [email-masked]
Date: Thu, 14 Sep 2023 16:12:11 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi Romain,

Ramin Honary <[email-masked]> skribis:

> From 465538f4b2824f49d99e4eef799f25f644a37bbc Mon Sep 17 00:00:00 2001
> Message-Id: <4655[email-masked]>
> From: Ramin Honary <[email-masked]>
> Date: Thu, 24 Aug 2023 17:57:51 +0900
> Subject: [PATCH] gnu: Add stklos.
>
> * gnu/packages/scheme.scm (stklos): New variable.

I went ahead and committed with the changes below.  I used ‘which’
instead of ‘(search-input-file inputs …)’ because we really want the
native bash and rm here.  The license is GPLv2+ because files under lib/
explicitly say “or any later version”.

Last, I noticed that the tarball comes with copies of libgc, libffi, and
PCRE.  Could you send patches to “unbundle” them—i.e., add these
packages to the ‘inputs’ field and ensure the build system picks them
up?

Thanks!

Ludo’.

diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 0165875b93..ad06d7db06 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -1242,6 +1242,7 @@ (define-public stklos
     (version "1.70")
     (source (origin
               (method url-fetch)
+              ;; TODO: Unbundle pcre, libgc, and libffi.
               (uri (string-append "https://stklos.net/download/stklos-"
                                   version ".tar.gz"))
               (sha256
@@ -1254,22 +1255,18 @@ (define-public stklos
                   ,@%gnu-build-system-modules)
       #:phases
       #~(modify-phases %standard-phases
-          (add-before 'configure 'patch-sh-paths
+          (add-before 'configure 'patch-sh-references
             (lambda* (#:key inputs #:allow-other-keys)
-              (let ((bash-bin (search-input-file inputs "/bin/bash")))
+              (let ((bash (which "bash")))
                 (substitute* "configure"
-                  (("/bin/sh") bash-bin)))))
-          (add-after 'configure 'patch-rm-paths
-            (lambda* (#:key inputs #:allow-other-keys)
-              (let ((rm-bin (search-input-file inputs "/bin/rm")))
-                (ftw "."
-                     (lambda (filename stat-info f)
-                       (when (and
-                              (equal? f 'regular)
-                              (string=? (basename filename) "Makefile"))
-                         (substitute* filename
-                           (("/bin/rm") rm-bin)))
-                       #t))))))))
+                  (("/bin/sh") bash)))))
+          (add-after 'configure 'patch-rm-references
+            (lambda _
+              (let ((rm (which "rm")))
+                (substitute* (find-files "." "^Makefile$")
+                  (("/bin/rm") rm))))))))
+    (properties
+     '((release-monitoring-url . "https://stklos.net/download.html")))
     (home-page "https://stklos.net")
     (synopsis "R7RS Scheme with CLOS-like object system")
     (description
@@ -1278,4 +1275,4 @@ (define-public stklos
 as well as light.  The implementation is based on an ad-hoc Virtual
 Machine.  STklos can also be compiled as a library and embedded in an
 application.")
-    (license gpl2)))
+    (license gpl2+)))

Subject: [PATCH] gnu: Add stklos.
From: Ramin Honary <[email-masked]>
To: [email-masked]
Date: Thu, 24 Aug 2023 18:05:26 +0900
List-Id: <debbugs-submit.debbugs.gnu.org>

Dear Guix Package maintainers:

I have created a Guix package for the STklos Scheme compiler. (Thanks
to Andrew Tropin for teaching me how!)

I would appreciate a code review, thank for your time!

Best regards,
-- Ramin Honary
From 465538f4b2824f49d99e4eef799f25f644a37bbc Mon Sep 17 00:00:00 2001
Message-Id: <4655[email-masked]>
From: Ramin Honary <[email-masked]>
Date: Thu, 24 Aug 2023 17:57:51 +0900
Subject: [PATCH] gnu: Add stklos.

* gnu/packages/scheme.scm (stklos): New variable.
---
 gnu/packages/scheme.scm | 48 +++++++++++++++++++++++++++++++++++++++--
 1 file changed, 46 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index c0e2e3ab48..611e0344e0 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -42,8 +42,8 @@
 (define-module (gnu packages scheme)
   #:use-module (gnu packages)
   #:use-module ((guix licenses)
-                #:select (gpl2+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ asl2.0 bsd-3
-                          cc-by-sa4.0 non-copyleft expat public-domain))
+                #:select (gpl2 gpl2+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ asl2.0
+                          bsd-3 cc-by-sa4.0 non-copyleft expat public-domain))
   #:use-module (guix gexp)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -1236,3 +1236,47 @@ (define-public emacs-gerbil-mode
     (description
      "Gerbil mode provides font-lock, indentation, navigation, and REPL for
 Gerbil code within Emacs.")))
+
+(define-public stklos
+  (package
+    (name "stklos")
+    (version "1.70")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://stklos.net/download/stklos-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1iw3pgycjz3kz3jd1855v2ngf8ib2almpf8v058n1mkj1qd2b88m"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:modules `((ice-9 ftw)
+                  ,@%gnu-build-system-modules)
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'patch-sh-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((bash-bin (search-input-file inputs "/bin/bash")))
+                (substitute* "configure"
+                  (("/bin/sh") bash-bin)))))
+          (add-after 'configure 'patch-rm-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((rm-bin (search-input-file inputs "/bin/rm")))
+                (ftw "."
+                     (lambda (filename stat-info f)
+                       (when (and
+                              (equal? f 'regular)
+                              (string=? (basename filename) "Makefile"))
+                         (substitute* filename
+                           (("/bin/rm") rm-bin)))
+                       #t))))))))
+    (home-page "https://stklos.net")
+    (synopsis "R7RS Scheme with CLOS-like object system")
+    (description
+     "STklos is a free Scheme system mostly compliant with the languages
+features defined in R7RS small.  The aim of this implementation is to be fast
+as well as light.  The implementation is based on an ad-hoc Virtual
+Machine.  STklos can also be compiled as a library and embedded in an
+application.")
+    (license gpl2)))

base-commit: 160f78a4d92205df986ed9efcce7d3aac188cb24
-- 
2.34.1