FreeBSD port 作成者のためのハンドブック
Prev | Chapter 3 本格的な port | Next

# 3.4 パッチの適用

port の準備段階で追加されたり変更されたりしたファイルは、 再帰的 diff によりパッチファイル化することができます。 パッチは適当にまとめて `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` の再帰 (`-r`) フラグを使って再帰的なパッチを作るのは大変結構なのですが、 でき上がったパッチは必ず目でチェックして余計なゴミが入っていないことを確認してください。 よくあるのはバックアップファイル同士の変更点、あるいは `Imake` や GNU `configure` を使うソフトウェアの `Makefile` の変更点が入っている場合などです。 また `configure.in` を編集して `autoconf` を使って `configure` を作り直すときには、 `configure` の diff は含めずに (それらは良く数千行におよぶことがあります)、 `USE_AUTOCONF=yes` を定義して `configure.in` の diff をとってください。

ファイルをまるごと消す場合には、 パッチを使わずに `post-extract` ターゲットで消す方が簡単です。 できあがった差分に満足したら、 それらをソースのファイルごとに別々のパッチファイルに分割してください。

Prev | Home | Next
port の修正 | Up | コンフィグレーション

FreeBSD ports システムに関する質問は、(英語で) <ports@FreeBSD.org> へ、
この文書の原文に関するお問い合わせは、(英語で) <doc@FreeBSD.org> までお願いします。