|
From: Bruno H. <br...@cl...> - 2024-11-20 14:02:17
|
Alexandru Popa wrote:
> So QuickLisp is the guilty party. I will debug it further. It is not fail
> of CLISP.
In the quicklisp-client, searching for side-effects to *features* leads me to:
$ grep -rni 'set.* [*]features[*]' .
./asdf.lisp:1908: :do (setf o feature) (pushnew feature *features*)
./asdf.lisp:1909: :else :do (setf *features* (remove feature *features*))
asdf.lisp contains this code:
(defun detect-os ()
"Detects the current operating system. Only needs be run at compile-time,
except on ABCL where it might change between FASL compilation and runtime."
(loop* :with o
:for (feature . detect) :in '((:os-unix . os-unix-p) (:os-macosx . os-macosx-p)
(:os-windows . os-windows-p)
(:genera . os-genera-p) (:os-oldmac . os-oldmac-p)
(:haiku . os-haiku-p))
:when (and (or (not o) (eq feature :os-macosx)) (funcall detect))
:do (setf o feature) (pushnew feature *features*)
:else :do (setf *features* (remove feature *features*))
:finally
(return (or o (error "Congratulations for trying ASDF on an operating system~%~
that is neither Unix, nor Windows, nor Genera, nor even old MacOS.~%Now you port it.")))))
What is this code meant to do??
|