2016-05-19 69 views
0

yoctoを使用しています。 ft5x06ベースのタッチスクリーンはサポートしていないので、パッチを追加することにしました。しかし、パッチファイルを追加すると、次のエラーが表示されます。BitBakeでのdo_patch()タスク中のエラー

ERROR: Command Error: exit status: 1 Output: 
Applying patch 0026-imx6q-smx6-edt-ft5x06.patch 
patching file Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt 
patching file drivers/input/touchscreen/edt-ft5x06.c 
Hunk #22 FAILED at 751. 
Hunk #23 succeeded at 811 (offset -1 lines). 
Hunk #24 FAILED at 922. 
Hunk #25 FAILED at 959. 
Hunk #26 FAILED at 995. 
Hunk #27 FAILED at 1009. 
Hunk #28 succeeded at 1077 (offset 17 lines). 
5 out of 28 hunks FAILED -- rejects in file drivers/input/touchscreen/edt-ft5x06.c 
Patch 0026-imx6q-smx6-edt-ft5x06.patch does not apply (enforce with -f) 
ERROR: Function failed: patch_do_patch 
ERROR: Logfile of failure stored in: /home/safedrive/test/build/tmp/work/smarc_samx6i-poky-linux-gnueabi/linux-smx6/3.10.17-r0/temp/log.do_patch.29885 
ERROR: Task 70 (/home/safedrive/test/sources/meta-fsl-arm-extra/recipes-kernel/linux/linux-smx6_3.10.17.bb, do_patch) failed with exit code '1' 

どうすればこの問題を解決できますか?

答えて

3

問題はdo_patch()によって実行されます。BitBake Yoctoはタスクスケジューラとエグゼキュータです。 続きを読むBitBake User Manual

しかし、あなたが直面しているエラーはYoctoコンポーネントに起因するものではありません。 エラーメッセージは、あなたのパッチが無効であるため、目的のファイルにパッチを適用できなかったことを示しています。

通常、.patchは、diffツールを使用して生成されたhunksという部分で注文されます。ウィキ記事で

Diff Utility article @ wikiから)単一塊の例

@@ -5,16 +11,10 @@ 
be shown if it doesn't 
change. Otherwise, that 
would not be helping to 
-compress the size of the 
-changes. 
-This paragraph contains 
-text that is outdated. 
-It will be deleted in the 
-near future. 
+compress anything. 

あなたは、このような塊を解釈する方法を読んで、それを短くすることができます。-を持つ行は、特定のパッチは、それを削除することを意味し、 +の行はパッチで追加されます。マークのない行は、参照(コンテキスト)のために配置され、同じままです。 - ファイルドライバに拒否/入力/タッチスクリーン/ EDT-ft5x06.c パッチ0026-imx6q-smx6- FAILED 28のハンクのうち

5:それは書かれているあなたのエラーメッセージに今

、 EDT-ft5x06.patchは、それは上記のようあなたのパッチが28兄貴が含まれていることをMEAS、および無効であるため、それらの5を適用することができませんでした(-fで強制)

は適用されません - パッチツールを適用することはできませんこれらの変更は、対応する行が参照として使用したファイルと異なるためです。

また、あなたのパッチには0026という番号が付けられていることが分かります。そのため、あなたのパッチの前に適用されていた他のパッチがファイル構造を変更したということが考えられます。適用される。

または*.bbファイルを使用して、SRC_URI変数を追加してパッチを追加するとします。パッチを適用する順序は、リストされたファイルの順序と同じです。あなたはYoctoリリース> = 1.8を使用している場合devtoolYocto Mega Manual: devtool)と呼ばれる便利なものがあり、それはでの作業簡素化:

SRC_URI += "file://0001-<patch_name>.patch \ 
      file://0002-<patch_name>.patch \ 
      (...) 
      file://0026-imx6q-smx6-edt-ft5x06.patch \ 
      " 

そして最後の発言:あなたのパッチが最新のものであるのであれば、それは次のようになります。一時的な情報源が多い

EDIT:コメントから 質問:

はい、私はそれが収まらないので、あなたのパッチを適用することができますので、理由だけで、このエラーメッセージ

を返すbitbake知りたいですターゲットソース。 特定のレシピについて、一連のタスクが実行されます。BitBake manual: Execution chapterを参照してください。あなたは、bitbake -c listtasks -f <recipe_name>を渡すことによってタスクをリストすることができます。 do_patch()は一般的なタスクの1つであり、間違ったパッチが原因で失敗します。

これを試してみてください:

  1. SRC_URIからあなたのパッチを削除します。

  2. は実行します。bitbake -c cleanall -f <recipe_name>

  3. を実行します。bitbake -c build -f <recipe_name>

  4. は、あなたがパッチに必要なソースのあるディレクトリ検索:bitbake -e <your_recipe_name> | grep ^S=をし、そこに行きます。

  5. パッチを適用する必要があるファイル/ファイルをコピーします。必要な場所に変更を加えてください。 diffツールを使用して新しいパッチを作成します。参考として、元のファイル/ファイルを使用し、変更されたファイル/ファイルを変更します(例:diff --ruN original_src modified_src > 0026-patch-name.patch)。

  6. 適切なディレクトリにパッチを移動し、SRC_URIに追加します。

  7. は、対象レシピリビルド:bitbake -c cleanall -f <recipe_name> && bitbake -c build -f <recipe_name>

を注意してください:<recipe_name>.bb延長せずに渡す必要があります。

+0

こんにちは、私の質問に関する貴重な情報に感謝します。上記のように私はすでにパッチを追加しています。あなたは私がどのように私はそのエラーの修正のための上記のエラーメッセージを理解することができます教えてください。 –

+0

これは今すぐうまくいきます!あなたは正確に何を知りたいですか?あなたの質問からBitBakeがエラーを返した理由、またはパッチが適用されなかった理由 – iksajotien

+0

はい私はbitbakeがこのエラーメッセージを返す理由を知りたいです! –

関連する問題