From 13d4bbf1d1cbce8d3a4ed009cb9ce484d6fdf77a Mon Sep 17 00:00:00 2001 From: Robert Fisher Date: Thu, 29 Aug 2019 09:16:36 -0500 Subject: [PATCH 1/2] Change snow-chibi to work with Chicken 5 The method snow-chibi used to get the version of Chicken installed doesn't work with Chicken 5. Adding "-R chicken.platform" would make it work with Chicken 5, but then it wouldn't work with Chicken 4. In both Chicken 4 & 5, however, csi has a -release option that will just give the version number. So, I've changed the Chicken version detection in snow-chibi to use this option. Testing with... ./chibi-scheme tools/snow-chibi.scm implementations ...then seemed to work with both Chicken 4 & 5. --- lib/chibi/snow/commands.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/chibi/snow/commands.scm b/lib/chibi/snow/commands.scm index c2fe54ef..f4ef2aa3 100644 --- a/lib/chibi/snow/commands.scm +++ b/lib/chibi/snow/commands.scm @@ -5,7 +5,7 @@ (define known-implementations '((chibi "chibi-scheme" (chibi-scheme -V) "0.7.3") - (chicken "chicken" (csi -p "(chicken-version)") "4.9.0") + (chicken "chicken" (csi -release) "4.9.0") (cyclone "cyclone" (icyc -vn) "0.5.3") (foment "foment") (gauche "gosh" (gosh -E "print (gauche-version)" -E exit) "0.9.4") From 7f3d322407da3f21a05adf199dff5027c6842885 Mon Sep 17 00:00:00 2001 From: Robert Fisher Date: Thu, 29 Aug 2019 11:42:21 -0500 Subject: [PATCH 2/2] Fix installation for Chicken 5 To get the repository path in Chicken 5, we not only have to require the chicken.platform module, we also need to take the car of the result since it now returns a list. --- lib/chibi/snow/commands.scm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/chibi/snow/commands.scm b/lib/chibi/snow/commands.scm index f4ef2aa3..7369c203 100644 --- a/lib/chibi/snow/commands.scm +++ b/lib/chibi/snow/commands.scm @@ -1287,6 +1287,16 @@ (string->number (process->string '(csi -p "(##sys#fudge 42)"))) 8)) +(define (get-chicken-repo-path) + (let ((release (string-trim (process->string '(csi -release)) + char-whitespace?))) + (string-trim + (if (string-prefix? "4." release) + (process->string '(csi -p "(repository-path)")) + (process->string + '(csi -R chicken.platform -p "(car (repository-path))"))) + char-whitespace?))) + (define (get-install-dirs impl cfg) (define (guile-eval expr) (guard (exn (else #f)) @@ -1304,9 +1314,7 @@ (cons share-dir (delete share-dir dirs)) dirs))) ((chicken) - (let ((dir (string-trim - (process->string '(csi -p "(repository-path)")) - char-whitespace?))) + (let ((dir (get-chicken-repo-path))) (list (if (file-exists? dir) ; repository-path should always exist dir