[asdf-devel] ASDF:OOS LOAD-OP :FORCE T and SBCL contribs
nikodemus at random-state.net
Tue May 12 07:16:45 UTC 2009
2009/5/12 Robert Goldman <rpgoldman at sift.info>:
>> I agree. There are probably two items here:
>> 1. Allowing a system definer to say "don't descend into this sub-system"
>> even when :force is t.
Instead of (or in addition to) #1 I think there is call for a way to
user (or sysadmin, etc) say "don't recompile these systems".
Consider a shared installation of lisp libraries under /usr/local/asdf/:
(defvar *ro-systems* (directory "/usr/local/lib/asdf/*.asd"))
(defmethod traverse :before ((o compile-op) (s system))
(when (and (operation-forced o)
(member (system-definition-pathname s) *ro-systems* :test #'equal))
(warn "Ignoring :FORCE T for COMPILE-OP of system installed in ~
(setf (operation-forced o) nil)))
>> For #1, I'd suggest adding a slot to system that controls how force
>> behaves. Ideas include
>> * read-only (to mean that the system cannot be edited or recompiled.)
>> * ignore-force (to mean, well, ignore force).
I think both of these are fairly limited in scope: libraries installed
along with lisp implementations and libraries which break horribly
upon recompilation seem like the only ones which should use these, and
in in case of implementations installing 3rd-party libraries they
should not really be editing the system -- so a protocol extensions
seems necessary even in the presence of these options / slots.
>> For #2, I'd suggest using
>> * recompile everything
>> * :force t
>> * :force :descend
>> * recompile only the current system
>> * :force :system-only
Should there be a way for user to say "reload everything despite the
timestamps, but don't recompile anything"?
More information about the asdf-devel