weird chicken-install error pasted by siiky on Sat Jul 1 19:21:53 2023

$ chicken-install -v -test sql-null

Error: (make-pathname) bad argument type - not a string: 2.0

egg files with non-string "version" field pasted by siiky on Sat Jul 1 19:26:29 2023

$ for egg in */*/*.egg; do echo "${egg}: $(csi -R srfi-197 -p '(chain (read) (alist-ref '"'"'version _ eq? '"'"'(#f)) (car _) ((lambda (v) (cond ((string? v) "string") ((number? v) "number") (else v))) _))' < "${egg}")"; done | less | rg -vw '(string|#f)$'
crypt/1.0/crypt.egg: number

Error: unterminated list

	Call history:

	<syntax>	  (##core#begin (##core#if (string? v) (##core#begin "string") (##core#if (number? v) (##core#begin "n...
	<syntax>	  (##core#if (string? v) (##core#begin "string") (##core#if (number? v) (##core#begin "number") (##cor...
	<stdin>:1	  (string? v)
	<syntax>	  (##core#begin "string")
	<syntax>	  (##core#if (number? v) (##core#begin "number") (##core#begin v))
	<stdin>:1	  (number? v)
	<syntax>	  (##core#begin "number")
	<syntax>	  (##core#begin v)
	<syntax>	  (car chain-var60488)
	<syntax>	  (alist-ref (quote version) chain-var60477 eq? (quote (#f)))
	<stdin>:1	  (quote version)
	<stdin>:1	  (##core#quote version)
	<stdin>:1	  (quote (#f))
	<stdin>:1	  (##core#quote (#f))
	<stdin>:1	  (read)	<--
math/0.2.2/math.egg:

Error: unterminated list

	Call history:

	<syntax>	  (##core#begin (##core#if (string? v) (##core#begin "string") (##core#if (number? v) (##core#begin "n...
	<syntax>	  (##core#if (string? v) (##core#begin "string") (##core#if (number? v) (##core#begin "number") (##cor...
	<stdin>:1	  (string? v)
	<syntax>	  (##core#begin "string")
	<syntax>	  (##core#if (number? v) (##core#begin "number") (##core#begin v))
	<stdin>:1	  (number? v)
	<syntax>	  (##core#begin "number")
	<syntax>	  (##core#begin v)
	<syntax>	  (car chain-var60488)
	<syntax>	  (alist-ref (quote version) chain-var60477 eq? (quote (#f)))
	<stdin>:1	  (quote version)
	<stdin>:1	  (##core#quote version)
	<stdin>:1	  (quote (#f))
	<stdin>:1	  (##core#quote (#f))
	<stdin>:1	  (read)	<--
message-digest-utils/4.2.2/message-digest-utils.egg:
monad/5.0/monad.egg: number
postgresql/4.0.0/postgresql.egg: 4.0.0
postgresql/4.1.0/postgresql.egg: 4.1.0
postgresql/4.1.1/postgresql.egg: 4.1.0
postgresql/4.1.2/postgresql.egg: 4.1.2
postgresql/4.1.3/postgresql.egg: 4.1.3
postgresql/4.1.4/postgresql.egg: 4.1.3
scm2wiki/0.3.1/scm2wiki.egg: 0.3.1
scm2wiki/0.3.2/scm2wiki.egg: 0.3.2
sql-null/2.0/sql-null.egg: number
ws-client/0.2.0/ws-client.egg: number
ws-client/0.2.1/ws-client.egg: 0.2.1
ws-client/1.0.0/ws-client.egg: 0.2.1

0001-Avoid-crashing-on-egg-files-with-non-string-version-.patch pasted by siiky on Sat Jul 1 20:23:53 2023

From 4b5cab0680420f9f86366c6c587f988c7c2e957d Mon Sep 17 00:00:00 2001
From: siiky <github-siiky@net-c.cat>
Date: Sat, 1 Jul 2023 19:17:30 +0100
Subject: [PATCH] Avoid crashing on egg files with non-string `version` field

`chicken-install` would crash when building a path if the `version`
field of an egg file was not a string, such as `2.0`.
---
 chicken-install.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/chicken-install.scm b/chicken-install.scm
index 4a6eb9b1..3af7686c 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -486,12 +486,12 @@
      (else
       ;; <location>/<egg-name>/<version>/<egg-name>.egg
       (if version
-          (values (probe-dir (make-pathname egg-dir version)) version)
+          (values (probe-dir (make-pathname egg-dir (->string version))) version)
           (let ((versions (directory egg-dir)))
             (if (null? versions)
                 (values #f #f)
                 (let ((latest (car (sort versions version>=?))))
-                  (values (make-pathname egg-dir latest) latest)))))))))
+                  (values (make-pathname egg-dir (->string latest)) latest)))))))))

 (define (write-cache-metadata egg-cache-dir egg-version)
   (when egg-version
@@ -576,7 +576,7 @@
                         (loop (cdr srvs)))))))
           ;; The order of probe-dir's here is important.  First try
           ;; the path with version, then the path without version.
-          ((or (probe-dir (make-pathname (list (car locs) name) lversion))
+          ((or (probe-dir (make-pathname (list (car locs) name) (->string lversion)))
                (probe-dir (make-pathname (car locs) name)))
            => (lambda (dir)
                 ;; for locally available eggs, check set of files and
--
2.40.1

0001-Avoid-crashing-on-egg-files-with-non-string-version-.patch added by siiky on Sat Jul 1 20:52:29 2023

From 612d1394bf2ba9c97e993148ac44cf44d28d1aa8 Mon Sep 17 00:00:00 2001
From: siiky <github-siiky@net-c.cat>
Date: Sat, 1 Jul 2023 19:50:12 +0100
Subject: [PATCH] Avoid crashing on egg files with non-string `version` field

`chicken-install` would crash when building a path if the `version`
field of an egg file was not a string, such as `2.0`.
---
 chicken-install.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/chicken-install.scm b/chicken-install.scm
index 4a6eb9b1..628d64f1 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -576,7 +576,7 @@
                         (loop (cdr srvs)))))))
           ;; The order of probe-dir's here is important.  First try
           ;; the path with version, then the path without version.
-          ((or (probe-dir (make-pathname (list (car locs) name) lversion))
+          ((or (probe-dir (make-pathname (list (car locs) name) (->string lversion)))
                (probe-dir (make-pathname (car locs) name)))
            => (lambda (dir)
                 ;; for locally available eggs, check set of files and
-- 
2.40.1