0

「diff」コマンドを使用してフリースケール「LTIB」のパッチファイルを生成する方法があるかどうか疑問に思っていました(コンパイル中に生成されたバイナリファイル、オブジェクトファイル、およびその他の一時ファイルを除外することにより(「./ltib clean」を使用せずに) /"distclean")) "patch" コマンドでそれらを再適用します。

デフォルトですべての一時ファイルを含むパッチ ファイルを生成できます。

事前にあなたの助けに感謝します..

4

1 に答える 1

1

作成しようとしているパッチによって異なります。LTIB 環境では、さまざまな戦略で変更したいことがいくつかあります。

  • $LTIB_DIR/merge 内のファイル: これらは通常のバージョン管理手法で処理できます
  • $LTIB_DIR/config (および $LTIB_DIR/.config および $LTIB_DIR/.ltibrc) 内の構成など: これらは、通常のバージョン管理手法でも処理できます。
  • パッケージの変更 ($LTIB_DIR/rpm/BUILD の下): LTIB 自体がパッチ ファイルを準備し、アクティブな .spec ファイル ($LTIB_DIR/dist または $LTIB_DIR/config/platform の下にある) を編集できます。これを行うには、ltib を使用してパッチを作成できます。

    cd $LTIB_DIR
    ./ltib -p packagename -m patchmerge
    

ltib スクリプト自体の patchmerge のコードを見ると、おおよそ次のようになっていることがわかります。

mv $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified
cd $LTIB_DIR/rpm/BUILD/packagename.modified
make distclean
cd -
rpmbuild -bp ... # go through the original prep stage
diff --exclude CVS --exclude .git -uNr $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified > patchfile

次に、パッチファイルを仕様に追加し、それについて通知します。

どのdistcleanを回避しようとしているのか(グローバルまたはパッケージ)はわかりませんが、パッケージディレクトリで「make distclean」を実行しても問題ない場合(./ltib -m distcleanrootfsを削除するのとは対照的に)、これあなたにとっては大丈夫かもしれません。

それ以外の場合は、diff (またはgit diff) を使用して独自のパッチ ファイルを作成できます。

diffsimilar toの除外ファイルを作成し、.gitignoreそれを diff に渡して、パッチの最終的な結果をより選択的にすることができます (diffマンページを読んでください)。

cd $LTIB_DIR
vi diffignore # add file patterns to this file
mv $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified
./ltib -p packagename -m prep
diff --exclude CVS --exclude .git -X diffignore -uNr $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified > patchfile
于 2013-04-12T16:54:14.840 に答える