次: , 前: Genesis, 上: History


18.2 Exodus

ユーザからのフィードバックを得るにつれ,私は,検索と置換,カットアンドペー スト,それぞれのスクリプトの良く似た変更でEmacsを使用し,多くの改良点を 組み入れました.私が,GNUユーティリティパッケージに, configureスクリプトを使用するため改造するにつれ,手作業での更 新は,現実的なものではなくなりました.GNUグラフィックユーティ リティの管理者Rich Murpheyは,configureスクリプトは素晴らしい というメールを送ってくれ,それらを生成するツールを持っているなら送って欲 しいという依頼がありました.持ってはいませんでしたが,そうするべきだと思 いました!それで,私はそれらを生成する仕事を始めました.手書きの configureスクリプトの奴隷から,Autoconfで簡単に始める裕福で簡 単な旅が始まりました.

Cygnus configureは,そのころには開発されていて,表を基に動作し ていました.それは,主に推測しにくい(オブジェクトファイルのフォーマット の詳細のような)特徴を,小さな数字を使用して,システムタイプを不連続な数 字で,扱う手法を主に用いていました.Brian Foxが,Bashのために開発してい た自動的なコンフィグレーションシステムは,類似のアプローチをとっています. 一般的に使用するため,それぞれのオペレーティングシステムが持つそれぞれ異 なる特徴の最新のデータベースを管理しようとすることは,望みがないように思 われました.その場その場でほとんどの機能を調査するため,より容易でより信 頼性が高いものが必要です — 特に,人々がローカルでハックしたり,ベンダー がインストールしたパッチがある,ハイブリッドなシステムではそうなります.

私は Cygnus configureに類似のアーキテクチャを使おうと考え,そ れは実行時にconfigure.inの一部を読み込む一つの configureスクリプトです.しかし,全てのパッケージで全ての特徴 を配布する必要は望まなかったので,プロセッサーによってそれぞれの configure.inから異なるconfigureを作成する処理にしました. そのアプローチは,多くの制御と柔軟性をもたらしました.

私は,Larry Wall,Harlan Stennと,Raphael Manfrediによる,Metaconfigを使 用してみようとしましたが,いくつかの理由でやめました.それが生成する configureスクリプトは対話的で,それが非常に不都合だと分かりま した.私は,それが行う(ライブラリ関数のような)特徴の調査方法が,好きであ りませんでした.さらに,いまだ管理されているかどうか分かりませんでした. configureスクリプトは,(System V R4とNeXTのような)近代的なシス テムでは動作しないように思えました.特徴の有無の反応で,できることがあま り柔軟ではありませんでした.学ぶことが難しいと思いました.そして,必要以 上にあまりに大きく複雑でした(私は,そのとき,Autoconfが結局どれくらい成 長するのか,理解していませんでした).

私は,configureスクリプトの私のスタイルを生成するため,Perl を 使用することを考えましたが,簡単なテキスト代入の仕事により適しているM4に 決めました.出力が暗黙で決まっているので,より小さい手法になると思いまし た.さらに,みんなは既にそれを所有しています.(最初は,私はGNU が拡張したM4に依存しませんでした.)また,Maryland大学の私の友達は最近, M4をtvtwmを含むいくつかのプログラムのフロントエンドとして位置付け ていて,私は新しい言語への挑戦に興味が湧きました.