4.4. パッチの適用
戻る | 第4章 本格的な port | 次へ

## 4.4. パッチの適用

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` ターゲットで消す方が簡単です。 できあがった差分に満足したら、 それらをソースのファイルごとに別々のパッチファイルに分割してください。

戻る | 上に戻る | 次へ
4.3. port の修正 | ホーム | 4.5. コンフィグレーション

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。