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

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

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

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

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

Cистема портов - то, чем по праву гордится FreeBSD. Система содержит ссылки на десятки тысяч программ, и список этот постоянно пополняется. Кто их создает, эти пополнения – некие выдающиеся специалисты? Да вовсе нет. Вы тоже сможете стать одним из них.

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

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

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

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

которая, собственно, и загрузит основной файл. Вот и все, файл, управляющий сборкой программы создан.

Файл 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

Опять упоминаются в основном каталоги для сообщений, потому что их могло и не быть. Здесь опять же нельзя пропустить ни одного каталога, который создается исключительно данной программой и больше никем не используется.

Файл pkg-descr

Как уже говорилось выше, это просто текстовый файл с небольшим описанием того, что делает данная программа. Чтобы не сочинять самому описание, в нашем случае мы просто берем описание, приведенное автором на странице kde-apps и заносим его в этот файл, сопровождая ссылкой на собственно страницу программы (файл см. на сайте журнала в разделе «Исходный код»).

На этом этап первоначального формирования файлов можно считать законченным. Мы еще не сформировали distinfo, но он формируется автоматически после того, как порт будет проверен. Переходим к проверке порта.

Для проверки правильности написания файлов порта существует специальная программа portlint, которую необходимо установить каждому, кто собирается заниматься разработкой собственных портов. Это небольшой скрипт, написанный на языке Perl, устанавливается он из devel/portlint:

cd /usr/ports/devel/portlint

make all install

После установки запускаем portlint в текущем каталоге с ключами, которые включают все возможные проверки:

# portlint -abvtAN

. . .

WARN: /usr/ports/mail/contactsmenu/pkg-plist [4]: installing gettext translation files, please define USE_GETTEXT as appropriate

. . .

0 fatal errors and 9 warnings found.

Здесь приведена часть вывода portlint, в которой выводится замечание. В последней строке приводится итог - сколько ошибок и сколько замечаний было обнаружено. Отмечу сразу, что необходимо добиться устранения всех ошибок и желательно всех замечаний. В данном случае portlint предупреждает о том, что устанавливаются файлы сообщений gettext, но в порт не включено неявной зависимости от devel/gettext (это может привести к невозможности работы с данными файлами). Для исправления данной ситуации добавляем в секцию USE_* строку «USE_GETTEXT=YES» и повторно запускаем portlint.

# portlint -abvtAN

. . .

WARN: Makefile: Consider adding support for a WITHOUT_NLS knob to conditionally disable gettext support.

. . .

WARN: Makefile: only one MASTER_SITE configured. Consider adding additional mirrors.

. . .

0 fatal errors and 2 warnings found.

Что нам советуют сейчас? Добавить поддержку параметра WITHOUT_NLS для тех, кто не хочет устанавливать файлы языковых сообщений и увеличить количество зеркал, на которых размещен данный файл. Здесь надо заметить, что любой дистрибутив порта после его принятия в систему дополнительно зеркалится на сайте проекта FreeBSD, так что замечание о дополнительных зеркалах мы игнорируем, а вот замечание о WITHOUT_NLS исправим. Для этого добавим в Makefile следующий код:

.if defined(WITHOUT_NLS)

PLIST_SUB+= NLS="@comment "

.else

USE_GETTEXT= yes

PLIST_SUB+= NLS=""

.endif

а в файле pkg-plist изменим строки, описывающие файлы языковой поддержки таким образом:

%%NLS%%share/locale/bg/LC_MESSAGES/libkickermenu_contactsmenu. mo

%%NLS%%share/locale/br/LC_MESSAGES/libkickermenu_contactsmenu. mo

%%NLS%%share/locale/da/LC_MESSAGES/libkickermenu_contactsmenu. mo

%%NLS%%share/locale/de/LC_MESSAGES/libkickermenu_contactsmenu. mo

%%NLS%%share/locale/ga/LC_MESSAGES/libkickermenu_contactsmenu. mo

%%NLS%%share/locale/fr/LC_MESSAGES/libkickermenu_contactsmenu. mo

%%NLS%%share/locale/pt/LC_MESSAGES/libkickermenu_contactsmenu. mo

%%NLS%%share/locale/sv/LC_MESSAGES/libkickermenu_contactsmenu. mo

Как это будет работать? Параметр PLIST_SUB содержит список подстановок, которые выполняются, когда система обрабатывает файл pkg-plist. Если при сборке порта будет задан параметр «WITHOUT_NLS=yes», то в pkg-plist будет подставлено значение, превращающее строки с «%%NLS%%» в строки комментария. Обратите внимание, что в этом случае зависимость от devel/gettext не вставляется. В противном случае NLS принимает значение пустой строки, и зависимость от devel/gettext вставляется. Этот прием (модификация pkg-plist в зависимости от параметров сборки порта) является очень широко распространенным.

Запускаем portlint еще раз, получаем одно замечание про MASTER_SITES, которое игнорируем. Осталось создать файл distinfo. Это просто. Система сама его создаст, если ее об этом попросить:

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

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать


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

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




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


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


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

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