diff --git a/libs/data.sld b/libs/data.sld index 5d1eb42..89828ad 100644 --- a/libs/data.sld +++ b/libs/data.sld @@ -238,60 +238,30 @@ append-directories)))))) (kawa (type . interpreter) - (library-command . ,(lambda (library-file prepend-directories append-directories r6rs?) - (let* ((load-paths (apply string-append - (append (list "-Dkawa.import.path=") - (map (lambda (item) - (string-append item "/*.sld:")) - (append prepend-directories - append-directories))))) - (library-file-path (search-library-file (append prepend-directories - append-directories) - library-file)) - (output-dir - (let ((output-dir ".")) - (for-each - (lambda (dir) - (when (string-starts-with? library-file-path - dir) - (set! output-dir dir))) - (append prepend-directories - append-directories)) - output-dir)) - (classpath - (apply - string-append - (map (lambda (dir) - (string-append dir ":")) - (append prepend-directories append-directories))))) - `(,(string-append - "CLASSPATH=" classpath - " kawa -J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -J--enable-preview " - (util-getenv "COMPILE_R7RS_KAWA") - " " - load-paths - " -d " output-dir - " " - load-paths - " -C " - library-file-path))))) (command . ,(lambda (input-file output-file prepend-directories append-directories library-files r6rs?) - (let ((dirs (append prepend-directories - append-directories - (list "/usr/local/share/kawa/lib")))) - (string-append "CLASSPATH=" - (apply string-append - (map (lambda (item) - (string-append item ":")) - dirs)) - " kawa --r7rs --full-tailcalls " - (util-getenv "COMPILE_R7RS_KAWA") - " -Dkawa.import.path=" - (apply string-append - (map (lambda (item) - (string-append item "/*.sld:")) - dirs)) - " "))))) + (apply string-append + `(,"sh" + ,(string #\newline) + "filename=\"$(basename ${0})\"" + ,(string #\newline) + "tmpfile=\"/tmp/kawa.${filename}\"" + ,(string #\newline) + "tail -n+8 \"${0}\" > \"${tmpfile}\"" + ,(string #\newline) + "kawa -J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -J--enable-preview -Dkawa.import.path=" + ,(apply string-append + (map + (lambda (item) + (string-append item "/*.sld:")) + (append prepend-directories + append-directories))) + " --r7rs --full-tailcalls " + " -f \"${tmpfile}\" \"$@\"" + ,(string #\newline) + "rm -rf \"${tmpfile}\"" + ,(string #\newline) + "exit" + ,(string #\newline)))))) (larceny (type . interpreter) (command . ,(lambda (input-file output-file prepend-directories append-directories library-files r6rs?) diff --git a/libs/library-util.sld b/libs/library-util.sld index 5465ba5..74c4fcd 100644 --- a/libs/library-util.sld +++ b/libs/library-util.sld @@ -48,23 +48,24 @@ (define get-imports (lambda (result implementation rest) - (cond ((null? rest) result) - ((equal? (car rest) 'import) (cdr rest)) - ((member 'cond-expand (car rest)) - (if (assoc implementation (cdr (car rest))) - (get-imports result - implementation - (cdr (assoc implementation - (cdr (car rest))))) - (get-imports result - implementation - (cdr (assoc 'else - (cdr (car rest))))))) - ((member 'import (car rest)) - (get-imports (append result (list) (cdr (car rest))) - implementation - (cdr rest))) - (else (get-imports result implementation (cdr rest)))))) + (cond + ((null? rest) result) + ((equal? (car rest) 'import) (cdr rest)) + ((member 'cond-expand (car rest)) + (if (assoc implementation (cdr (car rest))) + (get-imports result + implementation + (cdr (assoc implementation + (cdr (car rest))))) + (get-imports result + implementation + (cdr (assoc 'else + (cdr (car rest))))))) + ((member 'import (car rest)) + (get-imports (append result (list) (cdr (car rest))) + implementation + (cdr rest))) + (else (get-imports result implementation (cdr rest)))))) (define remove-nonexistent (lambda (directories paths) @@ -83,14 +84,15 @@ (lambda (path) (letrec ((looper (lambda (c) - (cond ((char=? c #\() - (read)) - ((char=? c #\;) - (read-line) - (looper (peek-char))) - (else - (read-char) - (looper (peek-char))))))) + (cond + ((char=? c #\() + (read)) + ((char=? c #\;) + (read-line) + (looper (peek-char))) + (else + (read-char) + (looper (peek-char))))))) (with-input-from-file path (lambda ()