; From setup-api.scm (define (version>=? v1 v2) (define (version->list v) (map (lambda (x) (or (string->number x) x)) (string-split (->string v) "."))) (let loop ((p1 (version->list v1)) (p2 (version->list v2))) (cond ((null? p1) (null? p2)) ((null? p2)) ((number? (car p1)) (and (number? (car p2)) (or (> (car p1) (car p2)) (and (= (car p1) (car p2)) (loop (cdr p1) (cdr p2)))))) ((number? (car p2))) ((string>? (car p1) (car p2))) (else (and (string=? (car p1) (car p2)) (loop (cdr p1) (cdr p2))))))) ; From egg-environment.scm (define chicken-install-program (foreign-value "C_CHICKEN_INSTALL_PROGRAM" c-string)) (define chicken-install-cache-directory (or (get-environment-variable "CHICKEN_EGG_CACHE") (make-pathname (or (system-cache-directory) (current-directory)) chicken-install-program))) (define chicken-install-cache-metadata-directory ;; Directory where the VERSION, TIMESTAMP and STATUS files are ;; stored (under their corresponding egg directory). (make-pathname chicken-install-cache-directory ".cache-metadata")) (define (normalize-egg egg) (if (pair? egg) (string->symbol (sprintf "~A:~A" (car egg) (cadr egg))) egg))