LibKing » Книги » comp-programming » Рашид Ачилов - Создаем порт для FreeBSD своими руками. Часть II

Рашид Ачилов - Создаем порт для FreeBSD своими руками. Часть II

Тут можно читать онлайн Рашид Ачилов - Создаем порт для FreeBSD своими руками. Часть II - бесплатно полную версию книги (целиком). Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте LibKing.Ru (ЛибКинг) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
libking
  • Название:
    Создаем порт для FreeBSD своими руками. Часть II
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3.55/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Ваша оценка:

Рашид Ачилов - Создаем порт для FreeBSD своими руками. Часть II краткое содержание

Создаем порт для FreeBSD своими руками. Часть II - описание и краткое содержание, автор Рашид Ачилов, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Система сборки программ, используемая во FreeBSD, имеет значительно большие возможности, чем те, которые мы задействовали. Какие это возможности и как их использовать в своих портах?

Создаем порт для FreeBSD своими руками. Часть II - читать онлайн бесплатно полную версию (весь текст целиком)

Создаем порт для FreeBSD своими руками. Часть II - читать книгу онлайн бесплатно, автор Рашид Ачилов
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

PATCH_SITES= ftp://ftp.cis.upenn.edu/pub/xv/

PATCHFILES= ${DISTNAME}.JPEG-patch ${DISTNAME}.TIFF-patch \

croppad.patch grabpatch vispatch \

deepcolor.patch gifpatch exceed_grab.patch \

tiff1200.patch gssafer.patch

Имейте в виду, что патчи, заданные в PATCHFILES, применяются до применения патчей из подкаталога files! То есть последовательность действий будет выглядеть так:

===> Patching for xv-3.10a_5

===> xv-3.10a_5 depends on file: /usr/local/bin/perl5.8.7 — found

===> Applying distribution patches for xv-3.10a_5

===> Applying FreeBSD patches for xv-3.10a_5

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

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

Опции

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

Рисунок 1Появилась возможность задавать опции в полноэкранном текстовом режиме - фото 1

Рисунок 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:${PORTSDIR}/textproc/libxml2

CONFIGURE_ARGS+= — with-xml-prefix=${LOCALBASE}

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. При этом, если подмишень do-something не описана, будет выполняться стандартная системная обработка. Обратите внимание, что, если мишень do-something описана, она замещает стандартную мишень и вся ответственность за выполнение данного шага ложится на майнтайнера порта, то есть, например, даже если в Makefile, идущем с программой, есть мишень install, то при наличии в Makefile порта подмишени do-install мишень install из Makefile программы не будет выполнена никогда!

Дополнение стандартных мишеней очень широко используется для вывода различных сообщений в процессе сборки порта, создания каких-либо файлов и т. д. Например:

pre-extract:

@${ECHO_MSG} ""

@${ECHO_MSG} "For debugging information support you should specify"

@${ECHO_MSG} "WITH_DEBUG=yes (press Ctrl-C here and start make WITH_DEBUG=yes)"

@${ECHO_MSG} ""

@sleep 2

post-deinstall:

@${ECHO_MSG} ""

@${ECHO_MSG} "Do not forget delete filter description from /etc/mail/freebsd.mc"

@${ECHO_MSG} "and rebuild sendmail.cf file!"

@${ECHO_MSG} ""

pre-configure:

if defined(WITHOUT_RC_NG)

@${SED} — e "s=%%PREFIX %%=${PREFIX}=" ${FILESDIR}/milter-sid.sh \

> ${WRKSRC}/milter-sid.sh

endif

Заменять обработчики мишеней (создавать секции do-something) [2] Руководство FreeBSD по созданию портов — http://www.ru.freebsd.org/doc/ru_RU.KOI8-R/books/porters-handbook/index.html . не рекомендует, но тем не менее это единственный путь для установки программ с закрытым исходным кодом, а также скриптов и программ, упакованных нестандартным образом. Например, мне встречалась программа, дистрибутив которой был упакован в архив формата ZIP, внутри котрого находился архив. tar.bz2 и файл сигнатуры. sig. Для распаковки нужно было сначала распаковать архив ZIP, потом проверить сигнатуру, а только потом — распаковывать. tar.bz2.

Но довольно теории. Рассмотрим в качестве примеров два порта, которые были мной созданы в разное время — порт для скрипта монтирования сетевых ресурсов Windows при входе в систему mountsmb2 и доработка к порту OpenOffice 1.1.4.

Mountsmb2

Набор скриптов mountsmb2 (там их три) был написан мной достаточно давно и преследовал тольк одну цель — автоматически монтировать SMB/CIFS-сетевые ресурсы от других Samba-серверов и компьютеров под управлением Windows. Поскольку это скрипт, написанный на языке командной оболочки sh, то никакой сборки порта не требуется и именно поэтому этот порт будет рассмотрен в качестве примера.

Читать дальше
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать


Рашид Ачилов читать все книги автора по порядку

Рашид Ачилов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Создаем порт для FreeBSD своими руками. Часть II отзывы


Отзывы читателей о книге Создаем порт для FreeBSD своими руками. Часть II, автор: Рашид Ачилов. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
Большинство книг на сайте опубликовано легально на правах партнёрской программы ЛитРес. Если Ваша книга была опубликована с нарушениями авторских прав, пожалуйста, направьте Вашу жалобу на PGEgaHJlZj0ibWFpbHRvOmFidXNlQGxpYmtpbmcucnUiIHJlbD0ibm9mb2xsb3ciPmFidXNlQGxpYmtpbmcucnU8L2E+ или заполните форму обратной связи.
img img img img img