Previous: , Up: 設定ディレクトリ(ソースレジストリ)   [Contents][Index]


8.6.1 :hereディレクティブ

:hereディレクティブは、いま処理されている設定ファイルのあるディレクトリを、絶対パスで指します。

:hereディレクティブは、複雑なシステムの配布を簡単にするために、また、リビジョン管理システムの下にあるプロジェクトを簡単に設定できるようにするために用意されています。我々のデザイン原則――プロジェクトの各参加者は各々だけがアクセスできる情報をすべて提供できるべきである――に従ってのことです。

例えば、Xさんという人が、複雑なプロジェクトのソースコードリポジトリを設定し、マスターディレクトリをdir/にしたとしましょう。普通なら、ユーザーには次のディレクティブを加えてもらうことになるかもしれません。

   (:tree "path/to/dir")

しかし、dir/以下には巨大なサブツリーがあって、Javaのソースコードやアイコンの画像など、多様なファイルが存在するとしたらどうでしょうか。ASDFのシステム定義ファイルがあるのはdir/src/lisp/dir/extlib/lisp/以下のツリーだけで、探すべきなのもそこだけだとしましょう。

この場合、Xさんはdir/に次のようなasdf.confファイルを置くでしょう。

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

こうすれば、Yさんがこのリポジトリのコピーをチェックアウトした時、自分の設定ファイルに

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

の1行を加えるだけで済みます。あるいは、

(asdf:initialize-source-registry
  '(:source-registry
     (:include "/path/to/my/checkout/directory/asdf.conf")
     :inherit-configuration))

をREPLで実行してもかまいません。ASDFはXさんが提供したasdf.confファイルを見つけて、その内容通りにソースの場所を(dir/を基点にした相対パスを解釈して)設定するでしょう。