2009/12/18 Nikodemus Siivola nikodemus@random-state.net:
Some questions and notes:
How do I instrospect *SOURCE-REGISTRY*? The outlined API only puts stuff there, but doesn't tell me how to read it.
For the moment, I don't have a good story for a public API on how to do that. But considering that only ASDF and XCVB currently will use that registry, and that I can commit in both, I don't think this is a big issue for now: whatever good API I find should do, and won't be exported until it's good and/or someone asks.
I would like to be able to mutate *SOURCE-REGISTRY* (even if by cloning without actual destructive operations) at runtime to isolate things.
What about a (defmacro with-source-registry ((registry) &body body) ...) ?
Under which circumstances one is expected to use which of the configuration methods: are libraries that are composed of multiple systems allowed/expected to ship with configuration files? In particular, the purpose of the environment variable seems unclear to me.
Configuration files would probably not be shipped with libraries or programs but possibly generated by scripts that build and/or install the libraries or programs. Indeed, these configuration files contain paths that change from machine to machine (relative paths don't make sense).
Being able to specify individual files seems important to me.
Do you have a use case? It would mean that the source registry would contain things that are very specific to the build system being used. Then again, so will it be if you use the "symlink a bunch of .asd files" pattern.
COMMON-LISP-CONFIGURATION: Who will maintain this? What other things belong in there?
I'd say community consensus, starting on the ASDF mailing-list. Other things that belong there would be anything that portably configures the general installation of Lisp software.
Having -SOURCE-REGISTRY-CONFIGURATION as a suffix in all the names seems excessive. Maybe just -SOURCE-REGISTRY?
Possibly.
I'm not sure I see the point of having both INITIALIZE- and ENSURE-, especially given CLEAR-.
Initialize is expensive. Ensure is cheap in amortized costs. For backwards compatibility, ASDF will call ensure a lot.
PROCESS-SOURCE-REGISTRY-CONFIGURATION seems like a bad name, since it doesn't do that. PROCESS-FOR-SOURCE-REGISTRY maybe?
INITIALIZE-SOURCE-REGISTRY-FROM ?
Caching: you mean caching by ASDF, not by the config system?
Yes.
I think I might have a better overall idea of what you intend if you described this configuration system separately from the ways ASDF would use it -- in particular since it seems to me several things might want to use this to manage their own external resources.
Well, apart from the package, I don't see exactly how other programs would use it.
Maybe the package should be COMMON-LISP-SOURCE-REGISTRY instead.
--#f If you could ask a unique question to a computer during a Turing test, what would you ask? — Douglas Hofstadter, Metamagical Themas