Next: , Previous: , Up: ASDFがコンパイルされたファイルを保持する場所を設定する   [Contents][Index]


9.1 アウトプットトランスレーションの設定

アウトプットトランスレーション(output translations)は(ソースファイルなどの)入力パスに(faslなどの)出力パスを対応させる仕組みです。アウトプットトランスレーションの設定ファイルは、ソースレジストリと同様に、XDGベースディレクトリの仕様に沿った場所に置かれます。

[訳者補足]

アウトプットトランスレーション(や前章で解説したソースレジストリ)の設定を記述したファイルは、システム設定ファイル(system configuration file)または単に設定ファイル(configuration file)と呼ばれます。ファイル形式は.confです。システム定義ファイル(.asdファイル)と混同しないようにしましょう。さらに、設定ディレクトリ(configuration directory)という概念もあります。設定ディレクトリは設定ファイルを含むディレクトリですが、設定ディレクトリ中の設定ファイルはその文法が微妙に異なるので注意が必要です。詳しくはアウトプットトランスレーションを設定するDSL設定ディレクトリ(アウトプットトランスレーション)を参照してください。

また、以下の記述は、OSや処理系、環境変数によって異なる複雑なロジックを漏れなく解説したものではありませんが、これを補完するのは訳者の手に余ります。正確な挙動を把握する必要がある場合はoutput-translations.lispuiop/configuration.lispを参照してください。

アウトプットトランスレーションは次のように設定されます。おおむね、上から順に処理されていくと考えてかまいません。

[訳者補足終わり]

  1. アウトプットトランスレーションには、ハードコーディングされた設定が加わることがあります。これはソースレジストリの特別なエントリに対応した特別な出力先として機能します。
  2. アプリケーションは、アウトプットトランスレーションのAPIを使って明示的に設定を初期化することが許されており、その場合はその設定が優先されることになります。設定はコマンドラインからも行えますし、スクリプトファイルからも、あるいは独自のシステム設定ファイルからも行うことができます。(→ Output location API
  3. 環境変数ASDF_OUTPUT_TRANSLATIONSが存在する場合は、アウトプットトランスレーションがこの変数によって設定されます。
  4. 環境変数XDG_CONFIG_DIRSとユーザー設定ファイル$XDG_CONFIG_DIRS/common-lisp/asdf-output-translations.confが存在する場合は、アウトプットトランスレーションがこのファイルによって設定されます。XDG_CONFIG_DIRSのデフォルトの値は~/.config/です。
  5. 環境変数XDG_CONFIG_DIRSとユーザー設定ディレクトリ$XDG_CONFIG_DIRS/common-lisp/asdf-output-translations.conf.d/が存在する場合は、アウトプットトランスレーションがこのディレクトリ内の設定ファイルによって設定されます。
  6. 設定ファイル/etc/common-lisp/asdf-output-translations.confが存在する場合、アウトプットトランスレーションがこのファイルによって設定されます。Unixのみの処理です。
  7. 設定ディレクトリ/etc/common-lisp/asdf-output-translations.conf.d/が存在する場合、ソースレジストリがこのディレクトリ内の設定ファイルによって設定されます。Unixのみの処理です。 45

これらの設定は、S式による簡単なDSLで記述します。(→ アウトプットトランスレーションを設定するDSL) 加えて、環境変数で設定する場合は、よりシェルに向いた構文も用意されています。(→ シェル向けの設定の構文(アウトプットトランスレーション)

また、上に挙げた各設定は、必ずしもすべてが「結合」して使われるわけではありません。各設定が、継承する設定を明示的にあるいは暗黙にインクルードしない限り、以降の設定は無視されることになります。

なお、アウトプットトランスレーションのデフォルトの設定では、出力ファイルにはユーザーごとに分離されたキャッシュディレクトリが使われます。46 この仕様によって、インストールされたソフトウェアを複数のユーザー間でシームレスに使うことができますし、開発者がソースコードを閲覧する際に出力ファイルが邪魔にならないようにできます。もっとも、開発者が出力ファイルを掃除したくなった場合にアウトプットトランスレーションについて学習する必要がある、という代償もありますが。47


Footnotes

(45)

[訳注] このリストの3番目以降の処理は、asdf/output-translations::*default-output-translations*中の5つの関数に順に対応しています。ソースレジストリの場合と違ってこのシンボルはエクスポートされていないため、処理系などが独自にこの変数を編集する可能性は考えられていないのでしょう。

(46)

[訳注] 順序としては、このディレクトリの設定は上のリストの1番目の処理で追加されます。無効にする方法についてはアウトプットトランスレーションを設定するDSLを参照してください。

(47)

部分的には、clean-opがこの解決策になるかもしれません。