(import (chicken format) (chicken string)) ; 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))))))) (define (egg-name+version egg) (if (pair? egg) (string->symbol (sprintf "~A:~A" (car egg) (cadr egg))) egg)) (define (egg-name egg) (string->symbol (car (string-split (symbol->string egg) ":")))) (define (egg-version egg) (let ((version (cdr (string-split (symbol->string egg) ":")))) (if (null? version) "" (string->symbol (car version))))) (define (egg-to-skip? egg) (define eggs-to-skip '(chicken srfi-4)) (memq egg eggs-to-skip))