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

From: Ludovic Courtès <[email-masked]>
Date: Thu, 14 Sep 2023 16:12:11 +0200

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