Next: , Previous: , Up: ASDFがシステムを探す場所を設定する   [Contents][Index]


8.8 探索アルゴリズム

念のため説明しておくと、与えられたシステム名を持つシステムを探すとき、ディレクティブは順番に処理されていきます。

ディレクトリ(:directory)を探索する場合、システムが見つかれば探索は成功であり、見つからなければ次の探索に進みます。

ツリー(:tree)を探索する場合、システムがただ1つ見つかれば探索は成功です。複数のシステムが見つかった時の動作はバージョンによって異なりますが、ASDF 3.2.1以降では、パス名の(ノーマライズされた)ディレクトリコンポーネント40の長さを比較し、短いほうが探索結果として採用されるようになりました。長さが同じ場合は、パス名のunix-namestringstring<で比較して小さいほうが採用されます。それ以前のASDFでは最初に見つかったシステムを返していましたが、どのシステムが返るかは処理系によって異なり、上の仕様のようにstring<に関して小さいパス名が返るかどうかも不確定でした。また、XCVB41ではエラーが通知されていました。システムが見つからなかった場合は次の探索に進みます。

:exclude:also-excludeディレクティブには、ツリーを探索するときに除外するサブディレクトリ名を指定します。一般的には、バージョン管理システムのデータベースディレクトリ(.git_darcsなど)は除外されるでしょう。なお、除外の指定は継承された設定には伝搬しません。すべての設定は、デフォルトではasdf::*default-source-registry-exclusions*に登録されている除外パターンを採用します。

:includeディレクティブでインクルードされた設定については、探索は再帰的に適用されます。 また、:inherit-configurationディレクティブで継承された設定についても、探索は再帰的に適用されます。


Footnotes

(40)

[訳注] 具体的には(uiop:normalize-pathname-directory-component (pathname-directory パス名))です。uiop:normalize-pathname-directory-componentは、処理系によって異なるディレクトリコンポーネントのフォーマットをCLHS標準のリストに直す関数です。

(41)

[訳注] ASDFの競合だったビルドシステムです。今は使われていません。