GNU_CONFIGURE= yes
CONFIGURE_ARGS += --with-qt-dir=${QT_PREFIX} \
--with-extra-includes=${LOCALBASE}/include \
--with-extra-libs=${LOCALBASE}/lib
Эти строки должны присутствовать (если они есть) после всех переменных USE_*. Они определяют, что для создания Makefile, управляющего сборкой программы, будет использоваться configure, и задают дополнительные аргументы, передаваемые при вызове configure. При сборке программы configure получает неявные параметры, задаваемые, например, с помощью PREFIX, но может получать и явные параметры, перечисляемые выше.
Ну и последней строкой нашего Makefile обязательно должна быть:
.include <bsd.port.mk>
которая, собственно, и загрузит основной файл. Вот и все, файл, управляющий сборкой программы создан.
Файл pkg-plist
Файл составляется как раз на основе протокола инсталляции install.log, который был сохранен во время установки программы. Следует также учесть, что программы для KDE часто используют локальные скрипты libtool, которые устанавливают динамические библиотеки, используя свои собственные конфигурационные файлы с расширением .la. Поэтому, если в протоколе установки упоминается, например, kickermenu_contactsmenu.la, нужно открыть его (это текстовый файл) и посмотреть, какая же библиотека там используется. Как правило, ее имя совпадает с именем .la файла (в нашем случае kickermenu_contactsmenu.so), но могут быть отличия, в частности, файлов может быть несколько. В файл pkg-plist компоненты программы вписываются по одному в строке, с указанием пути относительно корня установки (по умолчанию /usr/local).
То есть в нашем случае:
Iib/kde3/kickermenu_contactsmenu.so
Iib/kde3/kickermenu_contactsmenu.la
share/apps/kicker/menuext/contactsmenu.desktop
share/locale/bg/LC_MESSAGES/libkickermenu_contactsmenu.mo
share/locale/br/LC_MESSAGES/libkickermenu_contactsmenu.mo
share/locale/da/LC_MESSAGES/libkickermenu_contactsmenu.mo
share/locale/de/LC MESSAGES/libkiekemenu contactsmenu.mo
share/locale/ga/LC_MESSAGES/libkickermenu_contactsmenu.mo
share/locale/fr/LC_MESSAGES/libkickermenu_contactsmenu.mo
share/locale/pt/LC_MESSAGES/libkickermenu_contactsmenu.mo
share/locale/sv/LC MESSAGES/libkiekemenu contactsmenu.mo
то есть одна динамическая библиотека, один файл .desktop и восемь файлов локализации. Тут надо заметить, что, как правило, с файлами локализации в KDE сплошная морока - их бывает по 20-30 шт. Но пропустить, случайно или намеренно, какой-либо файл нельзя - порт будет впоследствии отослан на тестирование во FreeBSD Team, где проверят все этапы его установки и удаления, и если после удаления в каталоге будут обнаружены оставшиеся файлы, то майнтайнер порта получит сообщение об ошибке, не устранив которую, он никогда не увидит своего порта принятым.
Во второй части файла pkg-plist перечисляются команды, которые необходимо выполнить системе при деинсталляции программы. Как правило, это команды удаления каталогов, которые могли быть созданы в процессе инсталляции. Если в команде упоминается каталог, который к моменту выполнения деинсталляции непустой - он не будет удален.
@dirrm share/locale/bg/LC_MESSAGES
@dirrm share/locale/bg
@dirrm share/locale/br/LC_MESSAGES
@dirrm share/locale/br
@dirrm share/locale/da/LC_MESSAGES
@dirrm share/locale/da
@dirrm share/locale/de/LC_MESSAGES
@dirrm share/locale/de
@dirrm share/locale/ga/LC_MESSAGES
@dirrm share/locale/ga
@dirrm share/locale/fr/LC_MESSAGES
@dirrm share/locale/fr
@dirrm share/locale/pt/LC_MESSAGES
@dirrm share/locale/pt
@dirrm share/locale/sv/LC_MESSAGES
@dirrm share/locale/sv
Опять упоминаются в основном каталоги для сообщений, потому что их могло и не быть. Здесь опять же нельзя пропустить ни одного каталога, который создается исключительно данной программой и больше никем не используется.