ASDF should be configurable in user- and system- preference files
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ASDF |
Fix Released
|
Medium
|
Faré |
Bug Description
So that ASDF may seamlessly install the stuff that the user installed, there ought to be some standard location for configuration files:
~/.config/
/etc/common-
For simplicity, the configuration file can be a sexp, or even a Lisp file you load - though restricting the language is always a good idea when you can get away with it.
Or something. But anyway, there should be a well-defined way to configure things such that responsibilities are well-established as to who configures what how, and who doesn't have to. Implementers shouldn't have to worry how things are distributed, or distributors how they are implemented.
The API should probably that configuration is read the first time ASDF is used. Or maybe everytime. It should include a way to override the configuration file, so that a managed project may have its own controlled set of libraries independently from what the user specifies by default.
Cf the comment originally in bug https:/
See also my rant http://
Credits to Stelian Ionescu who clearly explained the necessity of such configuration to me. Blame to me if I didn't get it right.
Changed in asdf: | |
status: | New → In Progress |
assignee: | nobody → Faré (fahree) |
Changed in asdf: | |
status: | Fix Committed → Fix Released |
Suggestions:
* use a simple SEXP language readable with READ, using keywords as keywords. This means ASDF can remain lean and not have to include a funky character-level parser.
* So that the file may be shared with other build systems (i.e. XCVB), call it source- registry. conf
* If the user file is found, don't load the system file, except that the user file can explicitly specify system- configuration) or (:include "/etc/common- lisp/source- registry. conf")
(:include-
* To add a single directory to the registry, specify USER/cl/ cl-blah/ ")
(:directory "/home/
* To add a whole tree to the registry, specify
(:tree "/home/USER/cl/")
ASDF will then recurse into that tree, excluding known traps such as .svn and _darcs.
Or do we instead want a :recurse t keyword to :directory?
* Conflict resolution: when a tree is specified, detect conflicts and mark them as such instead of picking a winner at random. (XCVB does that and it's very helpful).
* Entries are processed in order. Those that come first in the registry.conf come first in the search order.
* Either ASDF re-loads the registry every time a find-system is performed, or there is an exported way to tell it to re-load its configuration and/or use an alternate one. Maybe an exported special variable to hold the processed configuration. Maybe by default, flush the list of current systems when the configuration is loaded.
* Current *central-registry* does an EVAL of the contents. Possibly we may want to NOT eval by default, only when a :eval t keyword is passed. Or maybe we should evaluate always.
* Do we want to automatically add a trailing / to specified string entries? I say we do.
PS: it is my plan to do just the above for XCVB.