From a44e4285ac854a2c9bef3528c89cc6a53a893c9f Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Sat, 22 Apr 2017 22:12:20 +0200 Subject: [PATCH 2/2] Move some procedures from chicken.eval to chicken.platform These are: chicken-home, extension-information, repository-path and installation-repository. provide and provided? should probably go to chicken.load, considering those directly interact with require, which has more to do with code loading than platform features. So they stay put in chicken.eval. The entire module is moved down to the end of library.scm, because some of these definitions take strings from C using the FFI, and the FFI will inject calls to ##sys#make-c-string in the code, which is defined pretty late in library.scm. --- chicken.import.scm | 8 +- eval.scm | 75 ++--------- library.scm | 372 ++++++++++++++++++++++++++++++----------------------- rules.make | 2 + scrutinizer.scm | 5 +- support.scm | 3 +- types.db | 9 +- 7 files changed, 236 insertions(+), 238 deletions(-) diff --git a/chicken.import.scm b/chicken.import.scm index 433001f..c2eda1c 100644 --- a/chicken.import.scm +++ b/chicken.import.scm @@ -39,7 +39,7 @@ call/cc case-sensitive char-name - (chicken-home . chicken.eval#chicken-home) + (chicken-home . chicken.platform#chicken-home) (chicken-version . chicken.platform#chicken-version) command-line-arguments condition-predicate @@ -66,7 +66,7 @@ exit exit-handler (expand . chicken.expand#expand) - (extension-information . chicken.eval#extension-information) + (extension-information . chicken.platform#extension-information) (feature? . chicken.platform#feature?) (features . chicken.platform#features) file-exists? @@ -116,7 +116,7 @@ implicit-exit-handler infinite? input-port-open? - (installation-repository . chicken.eval#installation-repository) + (installation-repository . chicken.platform#installation-repository) (ir-macro-transformer . chicken.expand#ir-macro-transformer) keyword-style (load-library . chicken.eval#load-library) @@ -161,7 +161,7 @@ (register-feature! . chicken.platform#register-feature!) remprop! rename-file - (repository-path . chicken.eval#repository-path) + (repository-path . chicken.platform#repository-path) (require . chicken.eval#require) reset reset-handler diff --git a/eval.scm b/eval.scm index 2e410f4..12521f1 100644 --- a/eval.scm +++ b/eval.scm @@ -47,18 +47,16 @@ <# (module chicken.eval - (chicken-home dynamic-load-libraries - eval eval-handler extension-information + (dynamic-load-libraries + eval eval-handler load load-library load-noisily load-relative load-verbose interaction-environment null-environment scheme-report-environment - load-extension provide provided? repository-path - installation-repository + load-extension provide provided? require set-dynamic-load-mode!) ;; Exclude bindings defined within this module. (import (except scheme eval load interaction-environment null-environment scheme-report-environment) - (except chicken chicken-home provide provided? repository-path - installation-repository require)) + (except chicken provide provided? require)) (import chicken.expand chicken.foreign @@ -74,8 +72,6 @@ (provide* eval) ; TODO remove after a snapshot release -(define-foreign-variable install-egg-home c-string "C_INSTALL_EGG_HOME") -(define-foreign-variable installation-home c-string "C_INSTALL_SHARE_HOME") (define-foreign-variable binary-version int "C_BINARY_VERSION") (define-foreign-variable uses-soname? bool "C_USES_SONAME") (define-foreign-variable install-lib-name c-string "C_INSTALL_LIB_NAME") @@ -102,8 +98,6 @@ (define-constant default-load-library-extension ".so") (define-constant environment-table-size 301) (define-constant source-file-extension ".scm") -(define-constant setup-file-extension "egg-info") -(define-constant prefix-environment-variable "CHICKEN_PREFIX") (define-constant windows-object-file-extension ".obj") (define-constant unix-object-file-extension ".o") (define-constant loadable-file-extension ".so") @@ -134,15 +128,6 @@ ((cygwin) cygwin-default-dynamic-load-libraries) (else `(,(string-append "lib" install-lib-name))))) -(define chicken-prefix - (let ((prefix (and-let* ((p (get-environment-variable prefix-environment-variable))) - (##sys#string-append - p - (if (memq (string-ref p (fx- (##sys#size p) 1)) '(#\\ #\/)) "" "/")) ) ) ) - (lambda (#!optional dir) - (and prefix - (if dir (##sys#string-append prefix dir) prefix) ) ) ) ) - ;;; Library registration (used for code loading): @@ -153,12 +138,6 @@ (##core#inline "C_i_providedp" id)) -;;; System settings - -(define (chicken-home) - (or (chicken-prefix "share/chicken") installation-home)) - - ;;; Lo-level hashtable support: (define ##sys#hash-symbol @@ -1193,28 +1172,7 @@ (check (##sys#substring p 0 (fx- n 1))) ] [else p] ) ) ) ) ) ) ) -(define repository-path - (make-parameter - (or (foreign-value "C_private_repository_path()" c-string) - (get-environment-variable "CHICKEN_REPOSITORY_PATH") - (chicken-prefix - (##sys#string-append - "lib/chicken/" - (##sys#number->string binary-version))) - install-egg-home))) - -(define installation-repository - (make-parameter - (or (foreign-value "C_private_repository_path()" c-string) - (get-environment-variable "CHICKEN_INSTALL_REPOSITORY") - (chicken-prefix - (##sys#string-append - "lib/chicken/" - (##sys#number->string binary-version))) - install-egg-home))) - -(define ##sys#repository-path repository-path) -(define ##sys#installation-repository installation-repository) + (define ##sys#setup-mode #f) (define path-list-separator @@ -1248,7 +1206,7 @@ (string-append string-append)) (lambda (path inc?) (let ((p (##sys#canonicalize-extension-path path #f)) - (rp (##sys#repository-path))) + (rp (repository-path))) (define (check path) (let ((p0 (string-append path "/" p))) (or (and rp @@ -1298,27 +1256,10 @@ (for-each (cut ##sys#check-symbol <> 'provided?) ids) (every ##sys#provided? ids)) -(define extension-information/internal - (let ((with-input-from-file with-input-from-file) - (string-append string-append) - (read read) ) - (lambda (id loc) - (and-let* ((rp (##sys#repository-path))) - (let ((p (##sys#canonicalize-extension-path id loc))) - (let loop ((rp (##sys#split-path rp))) - (cond ((null? rp) #f) - ((file-exists? (string-append (car rp) "/" p "." - setup-file-extension)) - => (cut with-input-from-file <> read) ) - (else (loop (cdr rp)))))))))) - -(define (extension-information ext) - (extension-information/internal ext 'extension-information)) - (define static-extension-available? (let ((string-append string-append)) (lambda (id) - (and-let* ((rp (##sys#repository-path))) + (and-let* ((rp (repository-path))) (let loop ((rp (##sys#split-path rp))) (cond ((null? rp) #f) ((file-exists? @@ -1460,7 +1401,7 @@ (let loop ((paths (if repo (##sys#append ##sys#include-pathnames - (let ((rp (##sys#repository-path))) + (let ((rp (repository-path))) (if rp (##sys#split-path rp) '()))) diff --git a/library.scm b/library.scm index 9b62fb6..8a745fe 100644 --- a/library.scm +++ b/library.scm @@ -4383,165 +4383,6 @@ EOF (string-append "#string (##sys#pointer->address x) 16) ">") ) ) ) ) -;;; Platform configuration inquiry: - -(module chicken.platform - (build-platform chicken-version - feature? features software-type - software-version register-feature! unregister-feature! - machine-byte-order machine-type - - ;;; TODO, move these from eval: - ;; chicken-home extension-information - ;; provide provided? repository-path - - ;;; TODO, move these from posix: - ;; get-host-name system-information - ) - -(import scheme chicken.fixnum chicken.foreign chicken.keyword) -(import (only chicken when unless)) - -(define software-type - (let ((sym (string->symbol ((##core#primitive "C_software_type"))))) - (lambda () sym) ) ) - -(define machine-type - (let ((sym (string->symbol ((##core#primitive "C_machine_type"))))) - (lambda () sym) ) ) - -(define machine-byte-order - (let ((sym (string->symbol ((##core#primitive "C_machine_byte_order"))))) - (lambda () sym) ) ) - -(define software-version - (let ((sym (string->symbol ((##core#primitive "C_software_version"))))) - (lambda () sym) ) ) - -(define build-platform - (let ((sym (string->symbol ((##core#primitive "C_build_platform"))))) - (lambda () sym) ) ) - -(define ##sys#windows-platform - (and (eq? 'windows (software-type)) - ;; Still windows even if 'Linux-like' - (not (eq? 'cygwin (build-platform)))) ) - -(define (chicken-version #!optional full) - (define (get-config) - (let ((bp (build-platform)) - (st (software-type)) - (sv (software-version)) - (mt (machine-type)) ) - (define (str x) - (if (eq? 'unknown x) - "" - (string-append (symbol->string x) "-") ) ) - (string-append (str sv) (str st) (str bp) (##sys#symbol->string mt)) ) ) - (if full - (let ((spec (string-append - (if (feature? #:64bit) " 64bit" "") - (if (feature? #:dload) " dload" "") - (if (feature? #:ptables) " ptables" "") - (if (feature? #:gchooks) " gchooks" "") - (if (feature? #:cross-chicken) " cross" "")))) - (string-append - "Version " ##sys#build-version - (if ##sys#build-branch (string-append " (" ##sys#build-branch ")") "") - (if ##sys#build-id (string-append " (rev " ##sys#build-id ")") "") - "\n" - (get-config) - (if (zero? (##sys#size spec)) - "" - (string-append " [" spec " ]") ) - "\n" - (or (##sys#build-tag) ""))) - ##sys#build-version) ) - -;;; Feature identifiers: - -(define ->feature-id ; TODO: export this? It might be useful.. - (let () - (define (err . args) - (apply ##sys#signal-hook #:type-error "bad argument type - not a valid feature identifer" args) ) - (define (prefix s) - (if s - (##sys#string-append s "-") - "") ) - (lambda (x) - (cond ((keyword? x) x) - ((string? x) (string->keyword x)) - ((symbol? x) (string->keyword (##sys#symbol->string x))) - (else (err x)))))) - -(define ##sys#features - '(#:chicken - #:srfi-6 #:srfi-12 #:srfi-17 #:srfi-23 #:srfi-30 #:srfi-39 #:srfi-62 - ;; TODO: consider removing at least irregex-is-core-unit - #:irregex-is-core-unit #:full-numeric-tower #:manyargs)) - -;; Add system features: - -(let ((check (lambda (f) - (unless (eq? 'unknown f) - (set! ##sys#features (cons (->feature-id f) ##sys#features)))))) - (check (software-type)) - (check (software-version)) - (check (build-platform)) - (check (machine-type)) - (check (machine-byte-order)) ) - -(when (foreign-value "HAVE_DLOAD" bool) - (set! ##sys#features (cons #:dload ##sys#features))) -(when (foreign-value "HAVE_PTABLES" bool) - (set! ##sys#features (cons #:ptables ##sys#features))) -(when (foreign-value "HAVE_GCHOOKS" bool) - (set! ##sys#features (cons #:gchooks ##sys#features))) -(when (foreign-value "IS_CROSS_CHICKEN" bool) - (set! ##sys#features (cons #:cross-chicken ##sys#features))) -(when (fx= (foreign-value "C_WORD_SIZE" int) 64) - (set! ##sys#features (cons #:64bit ##sys#features))) - -(set! ##sys#features - (let ((major (##sys#number->string (foreign-value "C_MAJOR_VERSION" int))) - (minor (##sys#number->string (foreign-value "C_MINOR_VERSION" int)))) - (cons (->feature-id (string-append "chicken-" major)) - (cons (->feature-id (string-append "chicken-" major "." minor)) - ##sys#features)))) - -(define (register-feature! . fs) - (for-each - (lambda (f) - (let ((id (->feature-id f))) - (unless (memq id ##sys#features) (set! ##sys#features (cons id ##sys#features))) ) ) - fs) - (##core#undefined) ) - -(define (unregister-feature! . fs) - (let ((fs (map ->feature-id fs))) - (set! ##sys#features - (let loop ((ffs ##sys#features)) - (if (null? ffs) - '() - (let ((f (##sys#slot ffs 0)) - (r (##sys#slot ffs 1)) ) - (if (memq f fs) - (loop r) - (cons f (loop r)) ) ) ) ) ) - (##core#undefined) ) ) - -(define (features) ##sys#features) - -(define (feature? . ids) - (let loop ((ids ids)) - (or (null? ids) - (and (memq (->feature-id (##sys#slot ids 0)) ##sys#features) - (loop (##sys#slot ids 1)) ) ) ) ) - -);chicken.platform - -(import chicken.platform) - ;;; Access backtrace: (define-constant +trace-buffer-entry-slot-count+ 4) @@ -5916,3 +5757,216 @@ EOF (loop (- len 1) (cdr input))) (else input)))) + +;;; Platform configuration inquiry: + +(module chicken.platform + (build-platform chicken-version chicken-home extension-information + feature? features machine-byte-order machine-type + repository-path installation-repository + register-feature! unregister-feature! + software-type software-version + + ;;; TODO, move these from posix: + ;; get-host-name system-information + ) + +(import scheme chicken.fixnum chicken.foreign chicken.keyword) +(import (only chicken cut when unless and-let* define-constant + get-environment-variable file-exists?)) +(import srfi-39) + +(define software-type + (let ((sym (string->symbol ((##core#primitive "C_software_type"))))) + (lambda () sym) ) ) + +(define machine-type + (let ((sym (string->symbol ((##core#primitive "C_machine_type"))))) + (lambda () sym) ) ) + +(define machine-byte-order + (let ((sym (string->symbol ((##core#primitive "C_machine_byte_order"))))) + (lambda () sym) ) ) + +(define software-version + (let ((sym (string->symbol ((##core#primitive "C_software_version"))))) + (lambda () sym) ) ) + +(define build-platform + (let ((sym (string->symbol ((##core#primitive "C_build_platform"))))) + (lambda () sym) ) ) + +(define ##sys#windows-platform + (and (eq? 'windows (software-type)) + ;; Still windows even if 'Linux-like' + (not (eq? 'cygwin (build-platform)))) ) + +(define (chicken-version #!optional full) + (define (get-config) + (let ((bp (build-platform)) + (st (software-type)) + (sv (software-version)) + (mt (machine-type)) ) + (define (str x) + (if (eq? 'unknown x) + "" + (string-append (symbol->string x) "-") ) ) + (string-append (str sv) (str st) (str bp) (##sys#symbol->string mt)) ) ) + (if full + (let ((spec (string-append + (if (feature? #:64bit) " 64bit" "") + (if (feature? #:dload) " dload" "") + (if (feature? #:ptables) " ptables" "") + (if (feature? #:gchooks) " gchooks" "") + (if (feature? #:cross-chicken) " cross" "")))) + (string-append + "Version " ##sys#build-version + (if ##sys#build-branch (string-append " (" ##sys#build-branch ")") "") + (if ##sys#build-id (string-append " (rev " ##sys#build-id ")") "") + "\n" + (get-config) + (if (zero? (##sys#size spec)) + "" + (string-append " [" spec " ]") ) + "\n" + (or (##sys#build-tag) ""))) + ##sys#build-version) ) + +;;; Installation locations + +(define-constant prefix-environment-variable "CHICKEN_PREFIX") +(define-constant setup-file-extension "egg-info") + +(define-foreign-variable installation-home c-string "C_INSTALL_SHARE_HOME") +(define-foreign-variable install-egg-home c-string "C_INSTALL_EGG_HOME") +;; NOTE: Duplicated from eval.scm +(define-foreign-variable binary-version int "C_BINARY_VERSION") + +(define chicken-prefix + (let ((prefix (and-let* ((p (get-environment-variable prefix-environment-variable))) + (##sys#string-append + p + (if (memq (string-ref p (fx- (##sys#size p) 1)) '(#\\ #\/)) "" "/")) ) ) ) + (lambda (#!optional dir) + (and prefix + (if dir (##sys#string-append prefix dir) prefix) ) ) ) ) + +(define repository-path + (make-parameter + (or (foreign-value "C_private_repository_path()" c-string) + (get-environment-variable "CHICKEN_REPOSITORY_PATH") + (chicken-prefix + (##sys#string-append + "lib/chicken/" + (##sys#number->string binary-version))) + install-egg-home))) + +(define installation-repository + (make-parameter + (or (foreign-value "C_private_repository_path()" c-string) + (get-environment-variable "CHICKEN_INSTALL_REPOSITORY") + (chicken-prefix + (##sys#string-append + "lib/chicken/" + (##sys#number->string binary-version))) + install-egg-home))) + +(define (chicken-home) + (or (chicken-prefix "share/chicken") installation-home)) + +(define extension-information + (let ((with-input-from-file with-input-from-file) + (string-append string-append) + (read read) ) + (lambda (id) + (and-let* ((rp (repository-path))) + (let ((p (##sys#canonicalize-extension-path + id 'extension-information))) + (let loop ((rp (##sys#split-path rp))) + (cond ((null? rp) #f) + ((file-exists? (string-append (car rp) "/" p "." + setup-file-extension)) + => (cut with-input-from-file <> read) ) + (else (loop (cdr rp)))))))))) + +;;; Feature identifiers: + +(define ->feature-id ; TODO: export this? It might be useful.. + (let () + (define (err . args) + (apply ##sys#signal-hook #:type-error "bad argument type - not a valid feature identifer" args) ) + (define (prefix s) + (if s + (##sys#string-append s "-") + "") ) + (lambda (x) + (cond ((keyword? x) x) + ((string? x) (string->keyword x)) + ((symbol? x) (string->keyword (##sys#symbol->string x))) + (else (err x)))))) + +(define ##sys#features + '(#:chicken + #:srfi-6 #:srfi-12 #:srfi-17 #:srfi-23 #:srfi-30 #:srfi-39 #:srfi-62 + ;; TODO: consider removing at least irregex-is-core-unit + #:irregex-is-core-unit #:full-numeric-tower #:manyargs)) + +;; Add system features: + +(let ((check (lambda (f) + (unless (eq? 'unknown f) + (set! ##sys#features (cons (->feature-id f) ##sys#features)))))) + (check (software-type)) + (check (software-version)) + (check (build-platform)) + (check (machine-type)) + (check (machine-byte-order)) ) + +(when (foreign-value "HAVE_DLOAD" bool) + (set! ##sys#features (cons #:dload ##sys#features))) +(when (foreign-value "HAVE_PTABLES" bool) + (set! ##sys#features (cons #:ptables ##sys#features))) +(when (foreign-value "HAVE_GCHOOKS" bool) + (set! ##sys#features (cons #:gchooks ##sys#features))) +(when (foreign-value "IS_CROSS_CHICKEN" bool) + (set! ##sys#features (cons #:cross-chicken ##sys#features))) +(when (fx= (foreign-value "C_WORD_SIZE" int) 64) + (set! ##sys#features (cons #:64bit ##sys#features))) + +(set! ##sys#features + (let ((major (##sys#number->string (foreign-value "C_MAJOR_VERSION" int))) + (minor (##sys#number->string (foreign-value "C_MINOR_VERSION" int)))) + (cons (->feature-id (string-append "chicken-" major)) + (cons (->feature-id (string-append "chicken-" major "." minor)) + ##sys#features)))) + +(define (register-feature! . fs) + (for-each + (lambda (f) + (let ((id (->feature-id f))) + (unless (memq id ##sys#features) (set! ##sys#features (cons id ##sys#features))) ) ) + fs) + (##core#undefined) ) + +(define (unregister-feature! . fs) + (let ((fs (map ->feature-id fs))) + (set! ##sys#features + (let loop ((ffs ##sys#features)) + (if (null? ffs) + '() + (let ((f (##sys#slot ffs 0)) + (r (##sys#slot ffs 1)) ) + (if (memq f fs) + (loop r) + (cons f (loop r)) ) ) ) ) ) + (##core#undefined) ) ) + +(define (features) ##sys#features) + +(define (feature? . ids) + (let loop ((ids ids)) + (or (null? ids) + (and (memq (->feature-id (##sys#slot ids 0)) ##sys#features) + (loop (##sys#slot ids 1)) ) ) ) ) + +);chicken.platform diff --git a/rules.make b/rules.make index a3d9757..81fa31a 100644 --- a/rules.make +++ b/rules.make @@ -580,6 +580,7 @@ scrutinizer.c: scrutinizer.scm mini-srfi-1.scm \ chicken.format.import.scm \ chicken.io.import.scm \ chicken.pathname.import.scm \ + chicken.platform.import.scm \ chicken.port.import.scm \ chicken.pretty-print.import.scm lfa2.c: lfa2.scm mini-srfi-1.scm \ @@ -603,6 +604,7 @@ support.c: support.scm mini-srfi-1.scm \ chicken.keyword.import.scm \ chicken.io.import.scm \ chicken.pathname.import.scm \ + chicken.platform.import.scm \ chicken.port.import.scm \ chicken.pretty-print.import.scm \ chicken.random.import.scm \ diff --git a/scrutinizer.scm b/scrutinizer.scm index 7845783..c3b4652 100644 --- a/scrutinizer.scm +++ b/scrutinizer.scm @@ -41,6 +41,7 @@ chicken.format chicken.io chicken.pathname + chicken.platform chicken.port chicken.pretty-print) @@ -1697,8 +1698,8 @@ ;;; type-db processing -(define (load-type-database name specialize #!optional - (path (##sys#repository-path))) +(define (load-type-database name specialize #!optional + (path (repository-path))) (define (clean! name) (when specialize (mark-variable name '##compiler#clean #t))) (define (pure! name) diff --git a/support.scm b/support.scm index c6c1c1a..b543ddc 100644 --- a/support.scm +++ b/support.scm @@ -85,6 +85,7 @@ chicken.keyword chicken.io chicken.pathname + chicken.platform chicken.port chicken.pretty-print chicken.random @@ -1628,7 +1629,7 @@ (define (load-identifier-database name) ; Used only in batch-driver.scm (define (locate) - (let loop ((dirs (##sys#split-path (##sys#repository-path)))) + (let loop ((dirs (##sys#split-path (repository-path)))) (cond ((null? dirs) #f) ((file-exists? (make-pathname (car dirs) name))) (else (loop (cdr dirs)))))) diff --git a/types.db b/types.db index 69bdfe8..a7d3c60 100644 --- a/types.db +++ b/types.db @@ -851,9 +851,7 @@ ;; eval -(chicken.eval#chicken-home (#(procedure #:clean) chicken.eval#chicken-home () string)) (chicken.eval#eval (procedure chicken.eval#eval (* #!optional (struct environment)) . *)) -(chicken.eval#extension-information (#(procedure #:clean) chicken.eval#extension-information (symbol) *)) (chicken.eval#load (procedure chicken.eval#load (string #!optional (procedure (*) . *)) undefined)) (chicken.eval#load-extension (#(procedure #:enforce) chicken.eval#load-extension (symbol) undefined)) (chicken.eval#load-library (#(procedure #:enforce) chicken.eval#load-library (symbol #!optional string) undefined)) @@ -861,8 +859,6 @@ (chicken.eval#load-verbose (#(procedure #:clean) chicken.eval#load-verbose (#!optional *) *)) (chicken.eval#provide (#(procedure #:clean #:enforce) chicken.eval#provide (#!rest symbol) undefined)) (chicken.eval#provided? (#(procedure #:clean #:enforce) chicken.eval#provided? (#!rest symbol) boolean)) -(chicken.eval#repository-path (#(procedure #:clean) chicken.eval#repository-path (#!optional *) *)) -(chicken.eval#installation-repository (#(procedure #:clean) chicken.eval#installation-repository (#!optional *) *)) (chicken.eval#require (#(procedure #:clean) chicken.eval#require (#!rest symbol) undefined)) (chicken.eval#scheme-report-environment @@ -1220,6 +1216,8 @@ (chicken.platform#build-platform (#(procedure #:pure) chicken.platform#build-platform () symbol)) (chicken.platform#chicken-version (#(procedure #:pure) chicken.platform#chicken-version (#!optional *) string)) +(chicken.platform#chicken-home (#(procedure #:clean) chicken.platform#chicken-home () string)) +(chicken.platform#extension-information (#(procedure #:clean) chicken.platform#extension-information (symbol) *)) (chicken.platform#feature? (#(procedure #:clean) chicken.platform#feature? (#!rest symbol) boolean)) (chicken.platform#features (#(procedure #:clean) chicken.platform#features () (list-of symbol))) (chicken.platform#software-type (#(procedure #:pure) chicken.platform#software-type () symbol)) @@ -1228,7 +1226,8 @@ (chicken.platform#unregister-feature! (#(procedure #:clean #:enforce) chicken.platform#unregister-feature! (#!rest symbol) undefined)) (chicken.platform#machine-byte-order (#(procedure #:pure) chicken.platform#machine-byte-order () symbol)) (chicken.platform#machine-type (#(procedure #:pure) chicken.platform#machine-type () symbol)) - +(chicken.platform#repository-path (#(procedure #:clean) chicken.platform#repository-path (#!optional *) *)) +(chicken.platform#installation-repository (#(procedure #:clean) chicken.platform#installation-repository (#!optional *) *)) -- 2.1.4