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

Файлы, которые добавлялись или изменялись в процессе создания порта, могут быть выявлены вызовом программы diff с рекурсией, а результат работы этой программы может быть в дальнейшем передан программе patch. Каждый набор патчей, который вы собираетесь применить, должен быть собран в файл с именем 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 для генерации патчей - это хорошо, но все же, пожалуйста, смотрите на получающиеся патчи, чтобы убедиться в отсутствии ненужного мусора. В частности, diff между двумя резервными копиями файлов, файлы Makefile, когда как порт использует Imake или GNU-версию программы configure, и так далее, не нужны, и должны быть удалены. Если вы отредактировали файл configure.in и запустили autoconf для перегенерации configure, не нужно включать файлы diff для configure (они частенько вырастают до нескольких тысяч строк!); задайте USE_AUTOCONF=yes и включите дифф-файл для configure.in.

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

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