: Juanjo
I have been reading the list of things that can, have and cannot be done and it is way more complex than I had expected. Wouldn't it make sense to split asdf.lisp into two files? asdf-boot.lisp to set up everything _only_ if we need to redefine ASDF functions, classes and other stuff, and asdf.lisp which works as it used to do. In asdf.lisp we may even add a finall call to an optional function (asdf-finish) that polishes the last corners _after_ everything new has been defined.
The advantage is that the logic of redefinition and of the ASDF system itself are well separated. It also helps that implementations for which redefinition is not happening (for instance ECL does not load ASDF in the core, it is an optional module), can forget about the complexity of the asdf-boot.lisp part.
I've thought about it. Back before I started work on ASDF 2, but when I needed a known version of ASDF for use with ASDF-DEPENDENCY-GROVEL, I distributed a file no-asdf.lisp with XCVB that deleted the ASDF package and any package that depended on it (recursively), made sure any asdf-module-provider for require was de-registered, and improper *features* removed. It was hard and heavy handed, but it worked.
Problem is, this approach works when the loading of files is driven externally by XCVB when compiling from "scratch" (or minimally modified image with, e.g. clc installed), but is wholly unsuitable for ASDF-driven self-upgrade of ASDF. It notably loses the state of currently loaded systems which can cause hours of fun, especially since renaming or deleting packages leads to "interesting" errors when the re-loaded systems will try to redefine their packages.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] My wife and I have clearly defined who's boss. I always take all the important decisions. I decide what is the family's take on the recognition of Communist China, how many B-52's are necessary to the armed forces and what to do about the federal debt. I leave her the petty daily decisions, like determining where we'll live, which school the kids will attend and who we'll have for dinner. — Unknown author, USA, 1950's