2017-09-17 8 views
2

私のプロジェクトに外部ツリーを持つbuildrootを使用しています。 Buildrootは、svnに格納されているいくつかのカスタムパッケージを使用してプロジェクトを構築し、開発者が開発しています。これらのパッケージを各ビルドのリポジトリからどのように更新できますか? Build-inのダウンロードヘルパーは一度パッケージをダウンロードしてアーカイブに保存しますが、毎回ソースから更新する必要があります。私はこのために私自身のダウンロードヘルパーを書く必要がありますか? 私が思いついたのは、svnリポジトリ(パッケージの* .mkファイルを含む)にbuildroot設定全体を保存し、svn-extrenalプロパティを追加して 'ローカル'ダウンロードルールを使用することでした。buildrootでプロジェクト固有のパッケージを更新する

答えて

2

Buildrootはあなたのソースはsvn updateです。その理由とニーズに最も適した解決方法は、Buildroot user manualの「開発中のBuildrootの使用」のセクションに説明されています。

理由: Buildrootのダウンロード数が一定であることを意味している:再ダウンロード同じ<PKG>_VERSIONで同じパッケージを正確同じソースコードをダウンロードすることになっています。これは、ビルドシステムとして使用するときには正常であり、開発中には使用しない(これはあなたが求めるものです)。

解決策1:は、<PKG>_OVERRIDE_SRCDIR機能を使用します。それを使って、あなたが開発しているすべてのパッケージを別のディレクトリにチェックアウトし、svn、gitなどで管理することができます。 Buildrootはあなたのコードに決して触れません。ビルドディレクトリにコピーしてビルドするだけです。パッケージを更新して再構築または再構成するための簡単なスクリプトを書くことができます。例えば:

for D in $(ls my-repos/); do 
    pushd $D 
    svn update 
    popd 
done 
make mypkg1-rebuild mypkg2-reconfigure all 

各開発者は、この方法を異なるパッケージセットで使用することができます。彼らが開発しているものだけです。

解決方法2:ユニークなSubversionのレポでBuildrootコードとあなたのパッケージのソースコードのすべてを入れて、あなたのパッケージの<PKG>_SITE_METHOD=localを使用しています。 svn updateこの大きなレポは、すべてが更新されます。上記のようにmake mypkg1-rebuild mypkg2-reconfigure allで再構築してください。

このソリューションの欠点は、パッケージが多数ある場合、ユニークなレポが非常に大きくなることです。また、Subversionをすべてのものに使用する必要があります。また、最初のソリューションと同様に、「ローカル」パッケージのセットを選択することはできません。

関連する問題