Previous: , Up: Configuration Directories   [Contents][Index]

8.6.1 The :here directive

The :here directive is an absolute pathname designator that refers to the directory containing the configuration file currently being processed.

The :here directive is intended to simplify the delivery of complex CL systems, and for easy configuration of projects shared through revision control systems, in accordance with our design principle that each participant should be able to provide all and only the information available to him or her.

Consider a person X who has set up the source code repository for a complex project with a master directory dir/. Ordinarily, one might simply have the user add a directive that would look something like this:

   (:tree "path/to/dir")

But what if X knows that there are very large subtrees under dir that are filled with, e.g., Java source code, image files for icons, etc.? All of the asdf system definitions are contained in the subdirectories dir/src/lisp/ and dir/extlib/lisp/, and these are the only directories that should be searched.

In this case, X can put into dir/ a file asdf.conf that contains the following:

   (:tree (:here "src/lisp/"))
   (:tree (:here "extlib/lisp"))
   (:directory (:here "outlier/")))

Then when someone else (call her Y) checks out a copy of this repository, she need only add

(:include "/path/to/my/checkout/directory/asdf.conf")

to one of her previously-existing asdf source location configuration files, or invoke initialize-source-registry with a configuration form containing that s-expression. ASDF will find the .conf file that X has provided, and then set up source locations within the working directory according to X’s (relative) instructions.