X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/a4263d6d79a33293ea5ec264af1b076a098fc89a..953030a3519ecb9d66d9f55d46f8c8b6906094ed:/tools/config.lisp diff --git a/tools/config.lisp b/tools/config.lisp index 4d30a4c..432c906 100644 --- a/tools/config.lisp +++ b/tools/config.lisp @@ -25,7 +25,7 @@ (let* ((asdf::*verbose-out* nil) (exit-code (asdf:run-shell-command - "~A ~A ~:[~;--print-errors ~]~{~A ~} &>~A" + "~A ~A ~:[~;--print-errors ~]~{~A ~} >~A 2>&1" *pkg-config* package error-p options outname))) (cond ((= exit-code 127) (error "Unable to run ~A" *pkg-config*)) @@ -144,30 +144,31 @@ #+sbcl (progn (defun sbcl-version () - (let* ((dot1 (position #\. (lisp-implementation-version))) - (dot2 (position #\. (lisp-implementation-version) :start (1+ dot1)))) - (values - (parse-integer (lisp-implementation-version) :end dot1) - (parse-integer (lisp-implementation-version) :start (1+ dot1) :end dot2) - (if dot2 - (parse-integer (lisp-implementation-version) :start (1+ dot2) :junk-allowed t) - 0)))) - (defun sbcl>= (req-major req-minor req-micro) - (multiple-value-bind (major minor micro) (sbcl-version) + (values-list + (loop + repeat 4 + 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) + (multiple-value-bind (%major %minor %micro %patch) (sbcl-version) (or - (> major req-major) - (and (= major req-major) (> minor req-minor)) - (and (= major req-major) (= minor req-minor) (>= micro req-micro))))) - (defun sbcl< (req-major req-minor req-micro) - (not (sbcl>= req-major req-minor req-micro)))) + (> %major major) + (and (= %major major) (> %minor minor)) + (and (= %major major) (= %minor minor) (> %micro micro)) + (and + (= %major major) (= %minor minor) (= %micro micro) + (>= (or %patch 0) (or patch 0)))))) + (defun sbcl< (major minor micro &optional patch) + (not (sbcl>= major minor micro patch)))) #-sbcl (progn - (defun sbcl>= (req-major req-minor req-micro) - (declare (ignore req-major req-minor req-micro)) + (defun sbcl>= (major minor micro &optional patch) + (declare (ignore major minor micro patch)) nil) - (defun sbcl< (req-major req-minor req-micro) - (declare (ignore req-major req-minor req-micro)) + (defun sbcl< (major minor micro &optional patch) + (declare (ignore major minor micro patch)) nil)) #+clisp