Next: , Previous: CVS, Up: FAQ


26.2 missingAM_MAINTAINER_MODE

26.2.1 missing

missingスクリプトは,いくつかの管理用ツールのラッパーで,要 求される管理用ツールを持っていないユーザのために設計されています.通常, 管理用ツールとは,autoconfautomakebison等です.これらのツールで生成されるファイルは,パッケー ジのその他のファイルとともに配布されるので,ユーザがビルドしたり,それ らがconfigureで調査されている間は,これらのツールは要求されません.

しかし,理由があってリビルドのルールが開始され,足りないツールが呼び出 される場合,missingはユーザに警告します.ツールが無いとき, 警告はされますが,ビルドの継続を可能にする方向で,missingは タイムスタンプを修正を試みます.例えば,autoconfがインストー ルされていない場合,missingconfiguretouchします.配布されるすべてのファイルがCVSに保持されている 場合,missingのこの機能で,ユーザは管理用ツールが無く ても,cvs updateで暗黙に指定されたタイムスタンプを回避して, CVSからのパッケージをビルドすることが可能になります.

要求されるツールがインストールされている場合,missingはそれ を実行し,異常終了した後は継続しようとしません.これは開発時には正しい もので,開発者は異常終了を修正したいものです.しかし,管理用ツールの違 うバージョンを持っているユーザは,リビルドルールが間違って開始されると き,ビルドが終了しエラーになるかもしれません.ビルドの継続による異常終 了は,AM_MAINTAINER_MODEで主張している論点の一つです.

26.2.2 AM_MAINTAINER_MODE

AM_MAINTAINER_MODEは,"リビルドのルール"の呼び出しをデフォルト で利用不可能にします.configure.acAM_MAINTAINER_MODEが あって,./configure && makeを実行する場合,makeconfigureMakefile.in,LexやYaccの出力などのリビルドを* 決して*試みません.すなわち,一般的に配布されるが,通常ユーザが更新す る必要が無いファイルに対するビルドルールを利用不可能にします.

./configure --enable-maintainer-modeを実行する場合,これらのリ ビルドルールが利用されるようになります.

ユーザ(や自分自身が)が失われたタイムスタンプ(see CVS)でうんざりし たくないからとか,単純に,リビルドルールを使わないようにして管理用ツー ルを明示的に実行したいから,といった理由でAM_MAINTAINER_MODEを 使用します.

AM_MAINTAINER_MODEでは,条件的なカスタムビルドのルールも利用不 可能にすることが可能になります.ユーザが利用不可能なおそれのある外部ツー ルのルールを利用不可能にするため,この機能を使用する管理者もいます.

数年前,François PinardはAM_MAINTAINER_MODEにいくつかの引数 を付けるよう指示しました.それらのほとんどは不安定になり得ます.依存性 を削除することで,非依存のビルドにすることができます.ソースファイルを 変更することで,生成されるファイルに影響がなくなり,このことで,注意さ れないときでも非常に混乱するはずです.彼は,安定は管理者に限定すべきで はなく(--enable-maintainer-modeで提案されたもの),反対だと付け 加えました.ユーザがMakefile.amを編集すると,Makefile.in を更新する,または警告を出力すべきですが(これがAutomakeで missingを使用する理由です),最終的に望むことは,何も起こらず, ユーザは注意もされないことです(これは,AM_MAINTAINER_MODEでリビ ルドのルールを利用不可能にすることです).

AM_MAINTAINER_MODEマクロを開発したJim Meyeringは,François との議論に動揺し,パッケージからAM_MAINTAINER_MODEを取り除きま した.

すべてのファイルをCVSに保持しているプロジェクトで作業する手助けとなり, 違うバージョンのツールを所有している場合はmissingが十分では ないので,今でも,AM_MAINTAINER_MODEを使用し続けている人はたく さんいます.