AIXシステムの誤ったパッチ・エラー

AIXシステムの誤ったパッチ・エラー

LinuxサーバーからAIXサーバーに移植するためのSVNパッチを作成しました。

SVNで生成されたパッチは次のとおりです。

Index: cas/cm/cmsee.c
===================================================================
--- cas/cm/cmsee.c      (revision 19)
+++ cas/cm/cmsee.c      (working copy)
@@ -769,14 +769,23 @@

 CE_CEXPFCT CE_VOID cm_seet(CE_VOID)
 {
+#ifndef TRACE
+   TT_OWNTYPE  *phh;
+   TT_OWNTYPE  *phhe;
+#elif FINAL_CHECKS
    TT_OWNTYPE  *phh;
    TT_OWNTYPE  *phhe;
+#endif

    TRACE(I,"cm_seet");

+#ifndef TRACE
    phh  = cm_fp->fp_hh_ptr;
    phhe = phh + cm_fp->cp_hh_cnt;
-
+#elif FINAL_CHECKS
+   phh  = bm_fp->fp_hh_ptr;
+   phhe = pht + bm_fp->fp_hh_cnt; 
+#endif
    TRACE(I, fstr("init: phh %x phhe %x\n", phh, phhe););

 #ifdef FINAL_CHECKS

私がコマンドを実行すると

patch -p0 -i Modified.patch 

次のエラーが発生します。

Hmm...  Looks like a unified context diff to me...
The text leading up to this was:
--------------------------
|Index: cas/cm/cmsee.c
|===================================================================
|--- cas/cm/cmsee.c     (revision 19)
|+++ cas/cm/cmsee.c     (working copy)
--------------------------
Patching file cas/cm/cmsee.c using Plan A...
Malformed patch at line 7:  CE_CEXPFCT CE_VOID cm_seet(CE_VOID)

Googleを試してStackExchangeを確認しましたが、問題を解決するソリューションはありません。誰でも私を助けることができますか?

答え1

現在経験している問題はAIX実装のバグですpatch。特に、AIX実装の少なくとも一部のバージョンでは、patch統合コンテキストdiffファイルがAIXユーティリティー(少なくとも一部のバージョン)によって生成された誤った形式であると予想されますdiff。指定されたエラー形式はPOSIXと互換性がなく、コンテキスト内のすべての行と追加または削除されたすべての行の2番目の列にスペースが含まれています。

影響を受けるAIXユーティリティーのバージョンに対して一様なコンテキスト差(POSIX記述形式)を使用するには、patchコンテキスト、追加、または削除を示す各行の2番目の列にスペースを挿入します。

Modified.patch説明するファイルに対して、次のコマンドを使用して調整されたパッチファイルを生成できます。

( head -n 4 Modified.patch; tail -n +5 Modified.patch |
  sed 's/^$/ /; s/^\([ +-]\)/\1 /;' ) > Adjusted.patch

関連情報