This service is available only in Japanese-language.
perlスクリプトを/usr/binに格納するだけの自作レシピ(aaa.bb)があり,これはgit等ではなくローカルにファイルが存在します。
当該スクリプトの一部値をレイヤーごと切り替えたいため,
別途自作レイヤーを用意しました。
試しにdevtoolでパッチ作成を試みたところ,問題なさそうなaaa.bbappendとパッチが用意できたため,
ビルドを試行しました。
しかし,以下のようなエラーが発生します。
Applying patch aaa.patch
can't find file to patch at input line 14
Perhaps you used the wrong -p or --strip option?
patch内記載のpathが悪いのかと,見直したり変更したりしましたが,効果がなく,
おそらくpathの記載以外の原因でこのようになっていると思われます。
なにか本件解決するための情報がございましたら,ご教示いただけますと幸いです。
なお,エラーが発生するのはdevtool finishした後だけであり,devtool modify+編集だけではエラーが発生しません,
yakuhito
2022/11/11 (金) 12:56
パッチの作成はどのような手順で実施されましたか?
一般的に、devtool modify レシピ名 を実行すると
workspace/source/レシピ名/
以下にソースが展開されます。
workspace/append/レシピ名.bbappend の中を確認すると、workspace/source/レシピ名/
以下がlocalのgit の管理下に置かれていることが判明します。
このソースに対して変更を行った後、
git status を実行して、変更されたファイルを確認し
git add でファイルを登録し
git commit -m "変更理由" でコミットを行います。
その後、devtool finish を実行することで、bbappend 及びパッチファイルが生成される流れとなります。
mackey
2022/11/11 (金) 13:12
以下の手順となります
以下の手順で作成しました。
devtool modify レシピ名 出力先ディレクトリ
(実際にはエディタのgit機能から行っていますが)
編集しコミットまで実行
devtool finish レシピ名 出力先レイヤーのディレクトリ
devtool を使用したパッチの作成自体は以前も行っており,本手順の誤りの可能性は低いかと考えています。
yakuhito
2022/11/11 (金) 13:26
do_patch タスクは $Sで指定されたディレクトリ内を対象に実行します
当該レシピにおいて $S はどのディレクトリが指定されていますか?
mackey
2022/11/18 (金) 09:34
Sの指定について
$Sの指定は以下のようになっています。
大本のレシピ: S = "${WORKDIR}/${PN}"
bbapend: 特に記載なし
念の為bitbake -eで確認しましたが,大本のレシピのPNのパス(レシピ名と同じ名称のフォルダ)が指定されているようです。
bbapend側も,bbapendと同階層に${PN}(レシピ名)のフォルダを作成し,その中にパッチを入れています。
各種ファイルの内容を送ります。
SECTION = "xxx"
LICENSE = "CLOSED"
FILES_${PN} += "${bindir}/aaa.pl "
SRC_URI = "file://.."
S = "${WORKDIR}/${PN}"
do_install() {
install -d ${D}${bindir}
install -m 0755 ${S}/aaa.pl ${D}${bindir}
}
bbapendの内容を送ります。
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://bbb.patch"
patchはaaa.plに対するpatchであり,diff --git a/aaa.pl b/aaa.pl といった内容を含むものです。
yakuhito
2022/12/7 (水) 14:21
do_unpack まで実行した際にファイルは意図した場所に配置されていますか?
$(S) で指定されたディレクトリ内にaaa.pl 、$(WORKDIR)にbbb.patch がそれぞれ存在する状態でしょうか?
この状態でpatchが当たらないのであれば、do_patch 実行時に、-DDD とデバッグレベルを上げてより詳細なログが出るように指定することで何らかの情報が得られるかと。
mackey
2022/12/26 (月) 14:31
-DDDをつけてデバッグしました。
ファイル配置には問題がないかと思います。
-DDDをつけましたが,patch自体は明らかにみつかっており,適用でエラーが発生している,(エラー情報は先述のものから追加情報なし)という状況でした。
yakuhito
2022/12/26 (月) 17:22
patch -p1 で当てることが前提のパッチファイルとなっていますか
エラー情報として表示されるものは、パッチとして当てるべきファイルが見つからない場合に表示されるものとなりますので、
patchを当てる対象ファイルが、patchファイルで想定されている場所に存在していないのではないかと。