SVN からの Boost Wave の更新
-
19-09-2019 - |
質問
使用しているブースト コンポーネントの 1 つにいくつかのバグが発生しました。この問題を少し分析したところ、私だけが問題ではなく、作成者が既に修正を発行しており、その修正は Boost SVN トランクで入手できることがわかりました。
このコンポーネントのみを更新し、すでに構築されているライブラリを再利用したい場合、最良のアプローチは何でしょうか?コンポーネントはヘッダーだけではありません。
- コンパイラ:MSVC 9 (SP1、TR1 付き)
- OS:ビスタ
- ブースト:BoostPro コンピューティングからの 1.39
- バグのあるコンポーネント: ブーストウェーブ
- バグ:競合状態。このバグは今年 5 月に修正されましたが、私の知る限りどのリリースにもこのバグは含まれていません。
これまでに私がやったこと:
- wave サブディレクトリの svn チェックアウト
- ローカルサブディレクトリを置き換えました
- 今、ビルドしたいことを指定する方法を探しています ただ 波
ブースト ライブラリ全体を再構築するのには少しうんざりしています。現在、Trunk が本番環境に対応しているかどうかはわかりません。
解決
私が最終的にやったことは次のとおりです。
まず、問題が修正された wave lib のバージョン (53230) をチェックアウトしました。ローカル コピーとの差分を確認したところ、次の変更が見つかりました。
- wave は独自の boost.iterator 実装を提供する代わりに再利用していました
- flex_string 実装が更新されました
- 参照カウンターがアトミックになりました。これはバグ修正のはずです
次に、boost/wave ディレクトリを SVN のディレクトリに置き換えるだけです。bootstrap.bat を実行し (BoostPro を使用する場合は、これをブースト ソースの zip から取得する必要があります)、次に bjam を実行しました。
bjam --build-directory=build toolset=msvcvariant=debug|release link=static threading=multi runtime-link=shared --with-wave
--with-wave を追加すると、wave とその依存関係のみが構築されます。
この時点でコンパイルエラーが発生しました。Spiritもアップデートされたようです。SVN から Spirit (53252) をダウンロードし、bjam コマンドを再発行しました。
ライブラリは正常にビルドされ、2 つのライブラリを boost lib フォルダーにコピーしました。
これらの手順を実行した後、プロジェクトを再構築すると、クラッシュ エラーがなくなりました。
他のヒント
ベストアプローチ:。その後、diff
(Unixのツール)を使用して、ブーストのインストールでファイルにパッチを適用し、(リポジトリの一部をチェックアウトし、svn diff
を使用することによって)リポジトリの変更をpatch
ingことでパッチを構築します
これは、Windows上でUNIXライクなコンソール(例えば、Cygwinを)必要な場合があります。また、あなたはおそらく、TortoiseSVNのようなWindowsのSVNクライアントを利用することができますが、私は、これはバージョン管理外のファイルにパッチを適用できることはよく分からない。
あなたは、ヘッダ、ライブラリについて話していますか?そうでない場合、また、あなたのBoostライブラリの一部を再構築する必要があり、残念ながら私は、これはBoostProからブーストのインストーラとかなり互換性がないと思います。
さて、あなたはログをチェックし、問題が修正された正確な改正、差分のみ引数yhatリビジョンを参照して、手動でパッチを適用することができます。
ブーストが重く自体を再利用し、そのインタフェースが変更された場合、あなたは奇妙な行動のすべての種類を取得を開始したいとあなたが一成分のみを更新することをお勧めしません。おそらく、あなたは、私たちはさらにあなたを助けることができるコンポーネントとバグを指定した場合。