From 7197ac2f848c3a963f0c7011bcba49e965f3623f Mon Sep 17 00:00:00 2001 From: retropikzel Date: Mon, 16 Jun 2025 21:24:25 +0300 Subject: [PATCH 1/5] Add Mosh support to snow-chibi --- lib/chibi/snow/commands.scm | 20 ++++++++++++++++++++ lib/chibi/snow/utils.scm | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/lib/chibi/snow/commands.scm b/lib/chibi/snow/commands.scm index 0f4ed4d7..632ff66c 100644 --- a/lib/chibi/snow/commands.scm +++ b/lib/chibi/snow/commands.scm @@ -1390,6 +1390,17 @@ (if (string? path) path "/usr/local/share/guile/")))) + ((mosh) + (with-output-to-file + (string-append (cond-expand (windows (get-environment-variable "TMP")) + (else "/tmp")) + "/snowmosh") + (lambda () + (display "(import (scheme base) (scheme write) (mosh config))") + (newline) + (display "(display (get-config \"library-path\"))"))) + (list (string-append (symbol->string (process->sexp '(mosh /tmp/snowmosh))) + "/lib"))) ((larceny) (list (make-path @@ -1482,6 +1493,10 @@ --r7rs --script ,file) `(kawa ,(string-append "-Dkawa.import.path=" install-dir) --r7rs --script ,file)))) + ((mosh) + (if lib-path + `(mosh --loadpath= ,install-dir --loadpath= ,lib-path ,file) + `(mosh --loadpath= ,install-dir ,file))) ((larceny) (if lib-path `(larceny -r7rs -path ,(string-append install-dir ":" lib-path) @@ -1625,6 +1640,7 @@ 35 37 38 39 41 42 43 45 46 55 60 61 62 64 67 69 71 87 88 98 105 111 171) (kawa 1 2 13 14 34 37 60 69 95) + (mosh) (larceny 0 1 2 4 5 6 7 8 9 11 13 14 16 17 19 22 23 25 26 27 28 29 30 31 37 38 39 41 42 43 45 48 51 54 56 59 60 61 62 63 64 66 67 69 71 74 78 86 87 95 96 98))) @@ -1681,6 +1697,7 @@ ((eq? impl 'chicken) (get-install-library-dir impl cfg)) ((eq? impl 'cyclone) (get-install-library-dir impl cfg)) ((eq? impl 'guile) (get-guile-site-dir)) + ((eq? impl 'mosh) (get-install-library-dir impl cfg)) ((conf-get cfg 'install-source-dir)) ((conf-get cfg 'install-prefix) => (lambda (prefix) (make-path prefix "share/snow" impl))) @@ -1690,6 +1707,7 @@ (cond ((eq? impl 'chicken) (get-install-library-dir impl cfg)) ((eq? impl 'cyclone) (get-install-library-dir impl cfg)) + ((eq? impl 'mosh) (get-install-library-dir impl cfg)) ((conf-get cfg 'install-data-dir)) ((conf-get cfg 'install-prefix) => (lambda (prefix) (make-path prefix "share/snow" impl))) @@ -1709,6 +1727,8 @@ (car (get-install-dirs impl cfg))) ((eq? impl 'guile) (get-guile-site-ccache-dir)) + ((eq? impl 'mosh) + (car (get-install-dirs impl cfg))) ((conf-get cfg 'install-prefix) => (lambda (prefix) (make-path prefix "lib" impl))) (else snow-binary-module-directory))) diff --git a/lib/chibi/snow/utils.scm b/lib/chibi/snow/utils.scm index 9b8324e3..11672504 100644 --- a/lib/chibi/snow/utils.scm +++ b/lib/chibi/snow/utils.scm @@ -37,6 +37,10 @@ ,(delay (process->sexp '(kawa -e "(write (features))")))) + (mosh "mosh" (mosh -v) #f + ,(delay + (process->sexp + '(echo "(import (scheme base) (scheme write) (mosh config)) (display (features))" > /tmp/snowmosh && mosh /tmp/snowmosh)))) (larceny "larceny" (larceny --version) "v0.98" ,(delay '())) (sagittarius "sagittarius" #f #f From 239f7d45c2cc4faea1fc98433292c9a0d996511f Mon Sep 17 00:00:00 2001 From: retropikzel Date: Thu, 26 Jun 2025 20:19:52 +0300 Subject: [PATCH 2/5] Add Mosh support for snow-chibi --- doc/chibi.scrbl | 1 + lib/chibi/snow/commands.scm | 19 +++++++++++++++++++ lib/chibi/snow/utils.scm | 2 ++ 3 files changed, 22 insertions(+) diff --git a/doc/chibi.scrbl b/doc/chibi.scrbl index 96a2d5e6..36fea628 100755 --- a/doc/chibi.scrbl +++ b/doc/chibi.scrbl @@ -1665,6 +1665,7 @@ installed. The following are currently supported: \item{gauche - version >= 0.9.4} \item{kawa - version >= 2.0; you need to add the install dir to the search path, e.g. \scheme{-Dkawa.import.path=/usr/local/share/kawa}} \item{larceny - version 0.98; you need to add "lib/Snow" to the paths in startup.sch} +\item{mosh - version >= 0.29-rc1} \item{sagittarius - version >= 0.98} \item{stklos - version > 2.10} ] diff --git a/lib/chibi/snow/commands.scm b/lib/chibi/snow/commands.scm index 6b08cd63..1a072200 100644 --- a/lib/chibi/snow/commands.scm +++ b/lib/chibi/snow/commands.scm @@ -1398,6 +1398,17 @@ (if (string? path) path "/usr/local/share/guile/")))) + ((mosh) + (with-output-to-file + "/tmp/mosh-helper" + (lambda () + (display "(import (scheme base) (scheme write) (mosh config)) (display (get-config \"library-path\")) (newline)") + (newline))) + (list + (string-append + (string-trim (process->string '(mosh "/tmp/mosh-helper")) + char-whitespace?) + "/lib"))) ((larceny) (list (make-path @@ -1494,6 +1505,10 @@ --r7rs --script ,file) `(kawa ,(string-append "-Dkawa.import.path=" install-dir) --r7rs --script ,file)))) + ((mosh) + (if lib-path + `(mosh --loadpath= ,install-dir --loadpath= ,lib-path ,file) + `(guile --loadpath= ,install-dir ,file))) ((larceny) (if lib-path `(larceny -r7rs -path ,(string-append install-dir ":" lib-path) @@ -1704,6 +1719,7 @@ ((eq? impl 'cyclone) (get-install-library-dir impl cfg)) ((eq? impl 'generic) (get-install-library-dir impl cfg)) ((eq? impl 'guile) (get-guile-site-dir)) + ((eq? impl 'mosh) (get-install-library-dir impl cfg)) ((eq? impl 'stklos) (get-install-library-dir impl cfg)) ((conf-get cfg 'install-source-dir)) ((conf-get cfg 'install-prefix) @@ -1715,6 +1731,7 @@ ((eq? impl 'chicken) (get-install-library-dir impl cfg)) ((eq? impl 'cyclone) (get-install-library-dir impl cfg)) ((eq? impl 'generic) (get-install-library-dir impl cfg)) + ((eq? impl 'mosh) (get-install-library-dir impl cfg)) ((eq? impl 'stklos) (get-install-library-dir impl cfg)) ((conf-get cfg 'install-data-dir)) ((conf-get cfg 'install-prefix) @@ -1737,6 +1754,8 @@ (car (get-install-dirs impl cfg))) ((eq? impl 'guile) (get-guile-site-ccache-dir)) + ((eq? impl 'mosh) + (car (get-install-dirs impl cfg))) ((eq? impl 'stklos) (car (get-install-dirs impl cfg))) ((conf-get cfg 'install-prefix) diff --git a/lib/chibi/snow/utils.scm b/lib/chibi/snow/utils.scm index 0bee1db5..f15456fd 100644 --- a/lib/chibi/snow/utils.scm +++ b/lib/chibi/snow/utils.scm @@ -39,6 +39,8 @@ ,(delay (process->sexp '(kawa -e "(write (features))")))) + (mosh "mosh" #f #f + ,(delay (write-string "mosh\n"))) (larceny "larceny" (larceny --version) "v0.98" ,(delay '())) (sagittarius "sagittarius" #f #f From ca35369186ecb7d78aa712c9733845ca77dc7a2a Mon Sep 17 00:00:00 2001 From: retropikzel Date: Sat, 28 Jun 2025 07:14:59 +0300 Subject: [PATCH 3/5] Switch some string-appends to make-paths --- lib/chibi/snow/commands.scm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/chibi/snow/commands.scm b/lib/chibi/snow/commands.scm index 8189cfd6..a18d91b1 100644 --- a/lib/chibi/snow/commands.scm +++ b/lib/chibi/snow/commands.scm @@ -1400,15 +1400,14 @@ "/usr/local/share/guile/")))) ((mosh) (with-output-to-file - (string-append (cond-expand (windows (get-environment-variable "TMP")) + (make-path (cond-expand (windows (get-environment-variable "TMP")) (else "/tmp")) - "/snowmosh") + "snowmosh") (lambda () (display "(import (scheme base) (scheme write) (mosh config))") (newline) (display "(display (get-config \"library-path\"))"))) - (list (string-append (symbol->string (process->sexp '(mosh /tmp/snowmosh))) - "/lib"))) + (list (make-path (process->sexp '(mosh /tmp/snowmosh)) "lib"))) ((larceny) (list (make-path From 4dfdacf3aca8952d01661c783061a00ea288afd7 Mon Sep 17 00:00:00 2001 From: retropikzel Date: Sat, 28 Jun 2025 07:16:58 +0300 Subject: [PATCH 4/5] Fix indentation --- lib/chibi/snow/commands.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/chibi/snow/commands.scm b/lib/chibi/snow/commands.scm index a18d91b1..30a262e9 100644 --- a/lib/chibi/snow/commands.scm +++ b/lib/chibi/snow/commands.scm @@ -1401,8 +1401,8 @@ ((mosh) (with-output-to-file (make-path (cond-expand (windows (get-environment-variable "TMP")) - (else "/tmp")) - "snowmosh") + (else "/tmp")) + "snowmosh") (lambda () (display "(import (scheme base) (scheme write) (mosh config))") (newline) From 16b771f4d2a931a9a57d91509b59b1336f5082af Mon Sep 17 00:00:00 2001 From: retropikzel Date: Sun, 29 Jun 2025 12:28:20 +0300 Subject: [PATCH 5/5] Use proper utilities for temporary file handling --- lib/chibi/snow/commands.scm | 17 ++++++++--------- lib/chibi/snow/utils.scm | 18 +++++++++--------- lib/chibi/snow/utils.sld | 1 + 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/chibi/snow/commands.scm b/lib/chibi/snow/commands.scm index 30a262e9..f7d10ddc 100644 --- a/lib/chibi/snow/commands.scm +++ b/lib/chibi/snow/commands.scm @@ -1399,15 +1399,14 @@ path "/usr/local/share/guile/")))) ((mosh) - (with-output-to-file - (make-path (cond-expand (windows (get-environment-variable "TMP")) - (else "/tmp")) - "snowmosh") - (lambda () - (display "(import (scheme base) (scheme write) (mosh config))") - (newline) - (display "(display (get-config \"library-path\"))"))) - (list (make-path (process->sexp '(mosh /tmp/snowmosh)) "lib"))) + (call-with-temp-file "snow-mosh.scm" + (lambda (tmp-path out preserve) + (with-output-to-file tmp-path + (lambda () + (display "(import (scheme base) (scheme write) (mosh config))") + (newline) + (display "(display (get-config \"library-path\"))"))) + (list (make-path (process->string `(mosh ,tmp-path)) "lib"))))) ((larceny) (list (make-path diff --git a/lib/chibi/snow/utils.scm b/lib/chibi/snow/utils.scm index 8b848399..db1ac7f8 100644 --- a/lib/chibi/snow/utils.scm +++ b/lib/chibi/snow/utils.scm @@ -41,15 +41,15 @@ '(kawa -e "(write (features))")))) (mosh "mosh" (mosh -v) #f ,(delay - (let ((tmpfile (string-append (cond-expand (windows (get-environment-variable "TMP")) - (else "/tmp")) - "/snowmosh"))) - (with-output-to-file - tmpfile - (lambda () - (display "(import (scheme base) (scheme write) (mosh config)) (display (features))"))) - (process->sexp - `(mosh ,tmpfile))))) + (call-with-temp-file "snow-mosh.scm" + (lambda (tmp-path out preserve) + (with-output-to-file tmp-path + (lambda () + (display "(import (scheme base) (scheme write) (mosh config))") + (newline) + (display "(display (features))"))) + (process->sexp + `(mosh ,tmp-path)))))) (larceny "larceny" (larceny --version) "v0.98" ,(delay '())) (sagittarius "sagittarius" #f #f diff --git a/lib/chibi/snow/utils.sld b/lib/chibi/snow/utils.sld index e62d3cd0..45584967 100644 --- a/lib/chibi/snow/utils.sld +++ b/lib/chibi/snow/utils.sld @@ -20,6 +20,7 @@ (chibi pathname) (chibi process) (chibi string) + (chibi temp-file) (chibi uri)) (cond-expand (chibi (import (chibi io)))