"Создаем порт для FreeBSD своими руками" - читать интересную книгу автора (Ачилов Рашид)

разработчики Squid - вместо выпуска нового релиза они выкладывают патчи
значительного обьема), авторы портов, не являющиеся разработчиками
программы, - чтобы внести в исходный текст изменения, с которыми автор может
быть не согласен, если они достаточно обьемные и их нельзя поместить
непосредственно в дерево портов, для расширения функциональности и т. д.
Следует учесть то, что если патч не создан с использованием стандартной
процедуры diff, то его нельзя применять описанным методом и необходимо
предусмотреть для него специальную обработку (см. пример в описании порта
для OpenOffice).

Опции

Если программа сложная, то, как правило она предлагает множество
различных вариантов построения - с использованием такой-то возможности, без
использования такой-то возможности... Некоторые порты сначала проводят
"автоматическое обнаружение" некоторых задействуемых компонент, а уже потом
устанавливают переменные, включающие или отключающие различные возможности,
а некоторые оставляют это на усмотрение пользователя. Если пользователь об
этом не подозревает, то он может так никогда ими и не воспользоваться. Одним
из примеров того, как делать ни в коем случае не надо, я считаю порт
graphics/ImageMagick. Мало того, что там 26 переменных, так еще пользователь
даже не оповещается, что они вообще есть!

Рисунок 1. Появилась возможность задавать опции в полноэкранном
текстовом режиме
В результате строка запуска сборки порта может выглядеть,
например,таким образом:

# make WITHOUT_IMAGEMAGICK_JPEG=yes WITH_WINDOWS_FONT_DIR=/tmp/blabla
WITHOUT_IMAGEMAGICK_PNG=yes WITHOUT_IMAGEMAGICK_BZIP2=yes ...

Кроме того, что это просто очень долго набирать, попробуйте-ка
вспомнить, какие там опции задавались при предыдущей сборке полгода назад?
Разумеется, это крайне неудобно, и некоторое время назад в системе появилась
возможность задавать опции в полноэкранном текстовом режиме (см. рис. 1).
Все опции, перечисленные на экране, задаются и отменяются простым
нажатием пробела, результат выбора будет сохранен и использован при
последующих сборках порта. В любое время его можно изменить, выполнив
команду:

# make config

Формируется экран опций следующей командой в Makefile:

OPTIONS= LDAP "With LDAP support" on \
ADS "With Active Directory support" off \
CUPS "With CUPS printing support" on \
WINBIND "With WinBIND support" on \
ACL_SUPPORT "With ACL support" off \
SAM_XML "SAM with XML support" off