./configure を呼び出すと、特に依存関係が欠落し、後続の呼び出しが発生した場合、多くの時間が無駄になります。
再利用のために構成スクリプトの結果をキャッシュすることを参照しているこのトピックに関する多くのスレッドを読みました。その他構成スクリプトは、結果が古く、同期されず、エラーが発生しやすく、結果を共有する一般的な実装を作成することは「難しい」[1]。
私は設定スクリプトがすでにキャッシュをサポートしていることを知っていますが、これはデフォルトでは無効になっています。[2]。
ディストリビューションが既に相互依存関係を理解するパッケージマネージャを提供し、すべての共通(または最も一般的な)ソース依存関係が何であるかを既に知っている場合、ディストリビューションがキャッシュ構成のための標準の一種を提供しないのはなぜですか。特定の条件が与えられると、パッケージマネージャは、これらのテストの多くを全く実行する必要がないと評価できると仮定することができる。または、少なくとも構成中に問題が発生しない限り、そうではありません。
他の多くの競合ビルドシステムがありますが、私はConfigがまだ最も人気があることに気づきました。これらのスクリプトはシェルベースのシングルスレッドであり、エラーが発生しやすく、診断情報を暗号化または提供しないことが多く、非常に遅いことがよくあります。構成の一部ではない依存関係がないため、構成スクリプトが失敗したりコンパイルが失敗したりすることは珍しくありません。
この問題を解決したディストリビューションはありますか?たとえば、Gentooは多くのネイティブコンパイルを実行します。彼らはこれを最適化しますか?
私はビルドシステムのアドバイスを探しているのではなく、現代のプロジェクトが依然としてautoconfと構成に大きく依存している理由についての歴史的または文化的な視点を探しています。これはおそらく意見の領域に属する可能性が高いですが、建築慣行、会社政策、白髪の慣習に基づいて公正な事実を持つことができる非常に興味深いテーマだと思います。
メーリングリストについても同様の主張が可能です。メーリングリストは、Web上の最新のコラボレーション形式に比べて時代遅れですが、単純で単純さを考慮してほとんど変更がないため、常にやってきたのと同じ機能を実行します。たぶんautoconfも同様の運命を持っていますか? (免責事項:私は実際にメーリングリストが大好きです。どんな苦情でもメールクライアント側の過酷なサポートが原因です。)
答え1
私の考えでは、「革新」を構成する要素が人によって異なり(そしてそれが良いのか!)、autoconf
ほとんどの言語とアーキテクチャにこだわらないように設計されているので、すべての答えは少なくとも少し推測です。変更したいという欲求を低く保つ慣性:一部の構成スクリプトは数十年が経過している可能性があり、人々は作業を書き直したくないことを考慮する必要があります。
直面する制限のいくつかはautoconf
構造的です。たとえば、マルチスレッドを確認する段階でマルチスレッドを使用する方法は?libfoo
バージョン1.8が必要であると主張するプログラムでバージョン2.5を使用できますか?あなたが言及した他の問題は、依存関係仕様の欠如によって引き起こされることがよくあります。直接依存関係のすべてを一覧表示することを忘れた構成スクリプトがたくさんあります。最後に、autoconf
管理者数がかなり制限されており、大きな変化を与えるのが難しいようです。
ある意味、パッケージマネージャは革新が起こる場所です。同じライブラリの異なるバージョンを必要とする他のパッケージと同じ概念を処理し、使用できなくなった依存関係の回避策を特定し(Gentooなどのソースコンパイルディストリビューションの場合)、構成スクリプトとソースコードをクリーンアップして正常に動作します。パッチを提供できます。 。
答え2
もちろん、Autoconfは結果をキャッシュするので、正しく使用するとほとんど実行されませんconfigure
。
私のschilytoolsプロジェクト(> 4000のソースファイル、〜770000行のコード)は現在約800の自動設定テストです。すべてのテストを実行するのに2.7GHz Intelノートブックでは28秒かかり、1995 HP-9000ピザボックスでは2〜3時間、1996 Sun3 / 60では4〜6時間、1996 Sun3 On / 60 itでは4〜6時間かかりました。です。 4~6時間ほどかかります。 Vax 11/780の日。
構成スクリプトが大まかに変更されたので、心配する必要はありません。 1年に5回configure
Intelノートブックで再実行するには他のすべてのテストがキャッシュされるため、4秒しかかかりません。もちろん、構成結果が期限切れになった場合にのみ再実行されるmake
ルールがあります。configure
下流の人々は異なる見解を持っています。彼らはこのプロジェクトをconfigure
年間30回、年間15分かかる1回限りのパッケージとして扱います。
反対側で1年に25秒待つだけです。
これにより、問題はダウンストリームの人々がソフトウェアをどのように使用するかになります。