Читать «Создаем порт для FreeBSD своими руками. Часть II» онлайн - страница 6
Рашид Ачилов
@${RM} — f ${PKGMESSAGE}
@${MV} ${PKGMESSAGE}.old ${PKGMESSAGE}
include <bsd.port.post.mk>
В RUN_DEPENDS перечисляются все порты, от которых зависит данный скрипт, а именно GNU AWK, sudo и Samba, из которой на самом деле нужна только программа findsmb. «USE_BZIP2=yes» указывает на то, что дистрибутив упакован программой bzip2. «NO_BUILD=yes» указывает на то, что программа не требует сборки. Если этого не указать, то система будет пытаться выполнить команду make в каталоге порта, не найдет Makefile и аварийно завершится.
Инсталляцией порт управляет самостоятельно — в Makefile присутствует заменяющая подмишень do-install. Здесь хорошо видно, как можно организовать цикл, который установит несколько файлов, перечисленных в списке, в указанное место. После первого цикла, который устанавливает собственно скрипты идет команда создания каталога для документации — система сама не будет делать ничего, все необходимые каталоги должны быть созданы портом.
Такая странная форма записи команды означает что:
• если команда завершается неудачно, например, такой каталог уже существует, то make не прекращает работу (минус перед командой);
• команда не отображается на терминале (знак @ перед командой).
Потом идет второй цикл, который устанавливает файлы примеров в каталог, который для этого предварительно создается, создается каталог документации и в него копируется файл README.FreeBSD.
Команда sed подготавливает файл pkg-message к отображению. В файле, который распространяется вместе с портом присутствует макроподстановка %%EXAMPLESDIR%%, которая, перед тем как это сообщение будет показано пользователю, заменяется на значение переменной ${EXAMPLESDIR}. Чтобы не изменять оригинальный файл pkg-message (возможно, в следующий раз установка будет проходить с другим значением ${EXAMPLESDIR}), старый файл сохраняется, измененный файл удаляется, старый файл переименовывается в оригинальное имя. Порт несложный, но он демонстрирует, как можно использовать заменяющие подмишени. При создании таких портов следует быть предельно внимательными — помните, что любой каталог, не входящий в стандартное дерево каталогов, описанное в bsd.local.mk, имеет право не существовать и должен быть предварительно создан.
Модификация порта OpenOffice 1.1.4
С моей точки зрения, порт для сборки OpenOffice editors/openoffice имел множество недостатков, но эти изменения я никогда не пробовал отправить во FreeBSD Team для помещения их в дерево портов. Какие изменения были внесены мной:
• возможность отказаться от сборки Mozilla Suite, нужной только для работы с адресной книгой формата Mozilla;
• возможность загрузить и применить последний (на тот момент) файл локализации интерфейса;
• возможность загрузить и применить внешние патчи, созданные в «Инфра-Ресурс» для версии для Linux.
Порт на самом деле состоит из двух файлов — editors/openoffice-1.1 и russian/openoffice. Makefile порта russian/openoffice-1.1 достаточно прост:
CATEGORIES= russian
if!defined (LANG) &&!defined(USE_LANG)