Because the package was delete-package'd in an unwind-protect form after loading the .asd file, and its symbols are thereafter uninterned.
Then keep it, store it somewhere and perhaps delete it only when no longer referenced.
I have no way to know when the package is not referenced. ASDF currently assumes nothing useful will be done with it after the asd is done loading. That's just wrong. I say stop trying to shield users from the responsibility of namespace management by making things more complex. They already need to create private packages for private uses, anyway, and they already can create all the clashes they want, anyway.
I respect the *central-registry* feature and will keep supporting it. It's great for advanced developers like you. Don't want no caching? Keep using the *central-registry*, it's not going away any time soon.
However, the caching is a big win for those of us who use :tree, especially on implementations on which scanning is slow. And that means most end-users and newbies, who want things to just work with minimal configuration (i.e. none at all if possible).
That's fine, but I'd like to be able to disable caching. And I'm not using *central-registry* but this configuration:
(:source-registry (:directory (:home "lisp/systems")) :inherit-configuration)
Maybe what you want is this:
(defmethod asdf:operate :before (o c &key &allow-other-keys) (declare (ignorable o c)) (unless asdf::*system-being-operated* (asdf:initialize-source-registry)))
I'm not convinced anyone but you wants this behavior, or I'd add a flag for it.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org A pretty face is not a passport; it's a visa and it runs out fast.