X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/2cf62811d5d0efab02a6a54896a094cae1e2010a..5fe4b66c0862337fab0c61a29a81c28bd4370e39:/tools/config.lisp diff --git a/tools/config.lisp b/tools/config.lisp index 04276fe..472d02a 100644 --- a/tools/config.lisp +++ b/tools/config.lisp @@ -122,9 +122,9 @@ (defun |#?-reader| (stream subchar arg) (declare (ignore subchar arg)) - (let ((not-p (when (char= (peek-char nil stream) #\-) - (read-char stream))) - (conditional (read stream t nil t))) + (let* ((not-p (when (char= (peek-char nil stream) #\-) + (read-char stream))) + (conditional (read stream t nil t))) (cond (*read-suppress* (read stream t nil t)) ((not *read-eval*) @@ -147,7 +147,10 @@ (values-list (loop repeat 4 - for part in (split-string (lisp-implementation-version) :delimiter #\.) + ;; We use . and - as delimiters because some Linux + ;; distributions tend to patch SBCL and add a distro-specific + ;; version tag (like 1.0.19-gentoo). + for part in (split-string (lisp-implementation-version) :delimiter '(#\. #\-)) while (every #'digit-char-p part) collect (parse-integer part)))) (defun sbcl>= (major minor micro &optional patch) @@ -155,8 +158,7 @@ (or (> %major major) (and (= %major major) (> %minor minor)) - (and (= %major major) (= %minor minor) (>= %micro micro)) - (and (= %major major) (= %minor minor) (>= %micro micro)) + (and (= %major major) (= %minor minor) (> %micro micro)) (and (= %major major) (= %minor minor) (= %micro micro) (>= (or %patch 0) (or patch 0))))))