Создаем порт для FreeBSD своими руками. Часть II :: Ачилов Рашид
Страница: 3 из 7 | |||
| ||||||||||||||
| ||||||||||||||
КАТЕГОРИИ КНИГПОСЛЕДНИЕ ОТЗЫВЫ О КНИГАХМихаил (19.04.2017 - 06:11:11) Антихрист666 (18.04.2017 - 21:05:58) Ладно, теперь поспешили вы... (18.04.2017 - 20:50:34) Роман (18.04.2017 - 18:12:26) АНДРЕЙ (18.04.2017 - 16:42:55) СЛУЧАЙНОЕ ПРОИЗВЕДЕНИЕЕсли бы у вас спросили: что бы вы хотели больше всего? Что бы вы ответили? Дом? Машину? Много денег? Или чего-то другого? Но в одном небольшом городке Рени, жила одна девушка. Ее звали Настя. Она была невысокого роста, с длинными черными волнистыми волосами и карими глазами. Она-то и ответила,что хочет любви.... >> 26.08.10 - 14:23 Хотите чтобы ваше произведение или ваш любимый стишок появились здесь? добавьте его! |
Следует учесть то, что если патч не создан с использованием стандартной процедуры 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 Первый параметр задает имя опции, которое потом будет использовано в переменной WITH_*. Например, для первого параметра имя переменной будет WITH_LDAP. Второй параметр задает текст комментария, который будет выведен справа от соответствующей опции, и третий – значение по умолчанию. При указании «on» опция по умолчанию включена, при указании «off» – выключена. Хорошо, опции заданы. Как их обработать? Прежде всего необходимо отметить, что при использовании OPTIONS включение файла bsd.port.mk следует заменить на: .include # processing WITH_SOMEWHERE here .include иначе ни одна переменная WITH_SOMEWHERE распознана не будет. Обработка же переменных выполняется стандартным образом – с помощью условия if задаются дополнительные параметры для configure, зависимости, подстановки для pkg-plist и т. д. .if defined(WITH_SAM_XML) LIB_DEPENDS+= xml2.5:$/textproc/libxml2 CONFIGURE_ARGS+= --with-xml-prefix=$ WANT_EXPSAM_MODULES+= xml PLIST_SUB+= SAMXML="" .else PLIST_SUB+= SAMXML="@comment " .endif Комбинация проверяемых условий может быть довольно сложной. В качестве примера того, как могут использоваться значения опции, лучше всего рассматривать порт net/samba3 – в нем очень много опций, есть на что посмотреть. Ну и наконец самый интересный раздел – замена/дополнение стандартных обработчиков Makefile при сборке порта. Как уже было сказано в [1], сборка порта состоит из последовательности выполнения ряда мишеней, которые в свою очередь делятся на подмишени pre-something, do-something и post-something (есть еще специальные мишени, описание их см .в bsd.port.mk). Для чего это было сделано? Для того чтобы иметь возможность воздействия на процесс создания порта – что-нибудь изменить, вывести сообщение, создать файл или каталог и т. д. Как следует из названия, подмишени pre-somethnig и post-something выполняются соответственно до и после мишени something. Например, последовательность распаковки будет такова: pre-extract, do-extract, post-extract. |
ИНТЕРЕСНОЕ О ЛИТЕРАТУРЕ
ТОП 20 КНИГ
ТОП 20 АВТОРОВ
| ||||||||||||
|