Руководство FreeBSD по созданию портов
Пред. | Глава 4. Медленное портирование | След.

# 4.4. Создание патчей

Файлы, которые добавлялись или изменялись в процессе создания порта, могут быть выявлены вызовом программы diff(1) с рекурсией, а результат работы этой программы может быть в дальнейшем передан программе patch(1). Каждый набор патчей, который вы собираетесь применить, должен быть собран в файл с именем `patch-`*``, где `*` означает порядок, в которой будут применяться патчи -- это делается в алфавитном порядке, то есть сначала `aa`, затем `ab` и так далее. Если хотите, вы можете использовать имена файлов, указывающие на имена файлов, к которым применяются патчи, такие, как `patch-Imakefile` или `patch-src-config.h`. Эти файлы должны находиться в каталоге `PATCHDIR`, откуда они будут взяты автоматически. Все патчи должны быть сделаны относительно каталога `WRKSRC` (как правило, это каталог, в который распаковывается исходный архив и где будет выполняться построение). Для упрощения внесения изменений и обновлений вы должны избегать наличия более чем одного патча для одного и того же файла (например, патчей `patch-aa` и `patch-ab`, оба меняющих файл ``WRKSRC`/foobar.c`).

Не помещайте строки RCS в патчи. CVS будет изменять их при помещении файлов в дерево портов, и когда мы будем их оттуда извлекать, они будут уже другие, поэтому применение патчей окончится неудачей. Строчки RCS предваряются знаком доллара (`$`), и обычно начинаются с `$Id` или `$RCS`.

Использование параметра рекурсии (`-r`) с командой diff(1) для генерации патчей - это хорошо, но всё же, пожалуйста, смотрите на получающиеся патчи, чтобы убедиться в отсутствии ненужного мусора. В частности, diff-разниц между двумя резервными копиями файлов, файлы `Makefile`, когда как порт использует `Imake` или GNU-версию программы `configure`, и так далее, не нужны, и должны быть удалены. Если вы отредактировали файл `configure.in` и запустили `autoconf` для перегенерации `configure`, не нужно включать файлы diff для `configure` (они частенько вырастают до нескольких тысяч строк!); задайте `USE_AUTOCONF_VER=213` и включите diff-файл для `configure.in`.

Кроме того, если вы удаляете файл, то это можно сделать и в цели `post-extract`, а не внутри патча. Как только вы будете удовлетворены получающимся diff-файлом, разбейте его на несколько по одному патчу на отдельный файл.

Пред. | Начало | След.
Модификация порта | Уровень выше | Конфигурирование

По вопросам связанным с системой портов для FreeBSD, пишите по адресу <ports@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите по адресу <doc@FreeBSD.org>.