HPCメモ

HPC(High Performance Computing)に関連したりしなかったりすることのメモ書き

patch: **** malformed patch at line と言われたら見るとこ

10年ぶりくらい(もっとかも)で、パッチファイルを編集して適用するなんていう作業をしてたら、こんなエラーが出てきました。

patch: **** malformed patch at line 123: @@ -456,78 +901,23 @@

これを見て、「ははーん、旧ファイルの456行目からと新ファイルの901行目からのパッチが何かおかしいんだな。」

「malformedってってことはおおかた、hunkの行数(旧ファイルが78行、新ファイルが23行)を正しい値にしてやれば良いんだろ?」

「patch完全に理解したわw」

と思ったんですが、何回直しても同じエラーになります。

小一時間ほどぐぐりながら悩んでたんですが、この場合修正するべきなのはこれのひとつ前のhunkでしたorz



どういうことかと言うと、ひとつ前のhunkで差分の一部を削除していたのに行数を直していなかったため、 そちらを処理していたpatchコマンド君は

「指定された行数まで読んどらんのに次のhunkのヘッダ行(?)が出てきたがな。エラーメッセージ出しとこか」

この行なんか変やで> @@ -456,78 +901,23 @@

という挙動をしてくれているようです*1


紛らわしいわwww

llvmが(というかclangがというべきか?)出てきて、ようやくgccの意味不明なエラーメッセージが罪であるということが世間に広く認識されたわけですが*2GNUのこの辺のソフトも誰か1から書き直してくれないかなぁ?

*1:といっても別にpatchコマンドのソースを追い掛けたりしたわけじゃなくて、ネット上にあった他のmalformedエラーの例からの推測です

*2:異論は認める