port の準備段階で追加されたり変更されたりしたファイルは、 再帰的 diff(1) により後で patch(1) に与えられる形にすることができます。 パッチは適当にまとめて patch-* という名前のファイルに入れてください。 * はパッチが適用される順番を示します — これらは アルファベット順、 つまり aa が最初、 ab が その次といった順番で処理されます。 お望みなら、patch-Imakefile とか patch-src-config.h のように、 パッチ対象のファイルのパス名を示す名前を使うこともできます。 これらのファイルは PATCHDIR に置いてください。 そうすれば自動的に適用されるようになっています。 すべてのパッチは WRKSRC からの相対パスにするべきです (通常、WRKSRC は port の tar ファイルが展開されるディレクトリで、 make が実行されるところと同じです)。 修正やアップグレードを容易にするため、 複数のパッチで同じファイルを修正するのは避けてください (たとえば、patch-aa と patch-ab が共に WRKSRC/foobar.c を修正するなど)。
RCS にとって特別な意味を持つ文字列をパッチ内に入れないようにしてください。 ファイルを私たちのソースツリーに入れる時、 これらの文字列は CVS によって書き換えられてしまい、 後でまたパッチを使おうとした時にうまくいかないことがあります。 RCS 文字列はドル記号 ($) で囲まれており、 $FreeBSD や $RCS などで始まります。
diff(1) の再帰 (-r
) フラグを使って再帰的なパッチを作るのは大変結構なのですが、
でき上がったパッチは必ず目でチェックして余計なゴミが入っていないことを確認してください。
よくあるのはバックアップファイル同士の変更点、あるいは Imake や GNU configure
を使うソフトウェアの Makefile
の変更点が入っている場合などです。 また configure.in
を編集して autoconf を使って configure を作り直すときには、 configure の diff は含めずに
(それらは良く数千行におよぶことがあります)、 USE_AUTOCONF=yes を定義して configure.in の diff をとってください。
ファイルをまるごと消す場合には、 パッチを使わずに post-extract ターゲットで消す方が簡単です。 できあがった差分に満足したら、 それらをソースのファイルごとに別々のパッチファイルに分割してください。