Getting there!
More nits: * Up until now, clear-defined-system had no declared return value; I propose you instead return T if successful, NIL if unsuccessful, and just use an unless rather than if. * It's unclear to me what clear-system does or should do that differs from clear-defined-system. I see that clear-system is documented in asdf.texinfo, but clear-defined-system isn't; furthermore, clear-defined-system doesn't appear anywhere in quicklisp, as I can tell grepping through ~/quicklisp/dists/quicklisp/software after I install all of quicklisp (see my repo git://common-lisp.net/users/frideau/ql-test.git for the helpers I use). I believe it's the fruit of some previous fumbling with a bug, and should be deleted, its contents moved to clear-system. * I would have used a nested if rather than repeat (eql version t), but that's me. * you shouldn't use find-system in register-immutable-system, since it might mess things up; instead, consult the cdr of registered? * don't call system-registered-p system-name twice. * The targeted style is to usually skip one line between function, unless tightly related (0 line) or conceptually separate (two lines). If conceptually unrelated, a new with-upgradability clause.
A year ago, I would have fixed it all myself — today I'm just telling you how to do it, and hoping that it helps create new ASDF developers to replace me.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Most economic fallacies derive... from the tendency to assume that there is a fixed pie, that one party can gain only at the expense of another. — Milton Friedman
On Mon, Aug 11, 2014 at 12:32 PM, Dave Cooper david.cooper@genworks.com wrote:
Ok here is an updated patch which does a register-system as well as register-preloaded-system as part of register-immutable-system. It tries to preserve version information according to what Faré recommended.
It also patches clear-system and clear-defined-system so as to prevent clearing any systems which occur in the *immutable-systems* table. In the case when a system is immutable, this also now affects the return-value of these clearing functions.
On Mon, Aug 11, 2014 at 10:19 AM, Robert P. Goldman rpgoldman@sift.info wrote:
Thanks to both of you for your work on this patch.
I'm going to hold off on applying any patches, though, until there's a test case.
Dave, I understand that it might be hard to wrap your head around the test script code, so let's start by brainstorming what the test should do, rather than digging in and getting confused with the details of implementation.
I believe what is wanted is a test where we make an image with some system preloaded, try to mark it as immutable, and then check to see if it's reloaded. Is that correct?
Cheers, r
-- My Best,
Dave Cooper, Genworks Support david.cooper@genworks.com, dave.genworks.com(skype) USA: 248-327-3253(o), 1-248-330-2979(mobile) UK: 0191 645 1699