2009/7/9 Faré fahree@gmail.com:
Apparently, it is incorrect to try to update ASDF from a system where an older version of ASDF has already been loaded from which some DEFUNs (e.g. SYSTEM-SOURCE-FILE) have since converted to DEFGENERICs. This means that if you have an old clisp from debian and try to use the newer ASDF, you're out of luck.
As a remedy, could we prepend the defpackage in asdf.lisp with the following?
(eval-when (:compile-toplevel :load-toplevel) (let ((package (find-package '#:asdf))) (when package (delete-package package))))
I don't think this a good idea in general: when users are bit by this they can deal with the error and delete the package by hand.
If we do this automatically, however, reloading the same version twice will cause all methods that were added later to be forgotten, as well as additions to *CENTRAL-REGISTRY*, etc.
If something along the lines is put it, I would suggest that TRT is to signal an error and offer restarts to either delete the package or continue blindly.
Cheers,
-- Nikodemus