Etersoft-build-utils

Материал из ALT Linux Wiki
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Сборка пакетов

Образец того, как надо оформлять спек, вы можете посмотреть в пакете wcalc или gnubiff. Настоятельно рекомендуется обратиться к документации, а также смотреть "как это сделано в другом пакете". Получить src.rpm для установленного в систему пакета можно командой $ rpmgp название_пакета Также образцы спеков для разных типов пакетов доступны здесь.

Подготовка уже имеющегося src.rpm

Устанавливаем файл *.src.rpm, который хотим собирать (под пользователем):

$ rpm -i название*.src.rpm


Исходники пакета при этом разместятся в /RPM/SOURCES, а спек – в /RPM/SPECS.

Заходим в каталог /RPM/SPECS, и видим там спек для собираемого пакета. Если спек взят из другого дистрибутива, то сначала делаем

$ rpmcs название.spec


чтобы привести спек в пригодный для использования вид. Далее его нужно поправить вручную, используя взятый из ALT Linux пример спека в качестве образца. Сборка пакета "с нуля"

Вы должны разместить исходники пакета (архивы) в /RPM/SOURCES, а шаблон будущего спека (скопированный из образца) – в /RPM/SPEC. Типовые действия

Находясь в каталоге SPEC:

$ rpmbb название.spec

для сборки двоичного пакета (он будет создан в /RPM/RPMS)

$ rpmbb -r название.spec

для того, чтобы в пакет автоматически прописались зависимости на пакеты, необходимые при сборке. Если пересобирается уже имеющийся пакет из Сизифа, то это не обязательно. (см. также
Использование buildreq)

$ add_changelog название.spec

для добавления строчки о данной сборке в секцию %changelog, в конце спека. После этого следует в спеке дописать комментарий, какие изменения были сделаны в данной сборке. Иногда также
бывает удобно сразу указать список изменений:
$ add_changelog example.spec -e 'Initial build'
Более подробно об использовании этого скрипта вы можете узнать здесь: http://wiki.sisyphus.ru/devel/spectips/addchangelog

Сформированные зависимости (строчка BuildRequires) нужно просмотреть, чтобы там не было ненужных пакетов. Правильность сборки проверяется пересборкой готового пакета в hasher (см. ниже).

Ошибки при сборке

Для начала, нужно локализовать проблему — определить, является ли она проблемой конкретного дистрибутива/системы (например: отсутствие или неверная версия необходимых для сборки библиотек, специфика дистрибутива) или более глобальной (например: несобираемость определенной версией компилятора, ошибки в коде, несоответствие кода новым стандартам). В первом случае, поможет осуществить поиск по дистрибутиву/репозиторию, поискать решение проблемы в архивах почтовых рассылок или непосредственно попросить помощи в тематических конференциях, посвещенных дистрибутиву (sisyphus, devel, community). ВНИМАНИЕ: порядок действий, для решения проблемы имеет значение (репозиторий -> поиск в архиве -> рассылки). Во втором случае, стоит начать с поиска готовых решений. В открытом сообществе, считается хорошим тоном публиковать решения найденных проблем. Зачастую, поисковики выдают море полезной информации по кратко описанной в трех-пяти словах проблеме конкретного софта или тексту ошибки, полученной при сборке. Например, запроса вида " gcc4.1 mysoftware patch" может быть достаточно для поиска патча, решающего проблему сборки с новым gcc4.1). Стоит также воспользоваться имеющимися репозиториями открытой разработки. Зачастую, мейнтейнеры этих репозиториев, уже сталкивались с такими же проблемами, и возможно у них есть решение (патч) для сложившейся ситуации. О том, как устранить отсутствие необходимых библиотек или заголовочных файлов, рассказано в следующем пункте.

Поиск пакетов

Возможно при сборке вам придётся доустанавливать недостающие библиотеки. Имейте в виду, что в ALT принято называть пакеты для разработки так: libX-devel, где X – название библиотеки. Пользуйтесь apt-cache search название для поиска недостающего пакета. Если пакета нет в вашей системе, поищите его в Сизифе. Если его нет и там, обратитесь к крупным собраниям информации о пакетах:

а также в репозитории открытой разработки.

Сборочная среда Hasher

Чтобы убедиться в том, что все зависимости правильны и сборка вашего пакета нормально пройдёт на сборочном сервере в ALT Linux, используется hasher — среда, которая позволяет осуществить сборку пакета в «чистой» системе, куда установлены только пакеты, указанные в сборочных зависимостях.

Настройте hasher согласно краткому руководству.

Для сборки пакета в hasher запустите

rpmbsh -i -u спек.spec

Эта команда соберёт пакет, установит его в тестовый hasher, после чего предложит отправить его в Incoming.

Если вы производите сборку на удалённом сервере, то рекомендуется воспользоваться командой screen:

$ screen

Далее, для отключения от сеанса: Ctrl-A, D Для подключения обратно:

$ screen -r

Лимиты на сборку у инкамингера

При сборке пакетов в сборочном окружении используются следующие лимиты: В терминах hasher-priv.conf(5): rlimit_hard_as=1073741824 rlimit_soft_cpu=7200 rlimit_hard_cpu=7260 wlimit_time_elapsed=14400 wlimit_time_idle=3600 wlimit_bytes_written=268435456 ldv@ in devel

Вспомогательные скрипты для сборки

Существует набор скриптов, облегчающих процесс сборки, собранный в пакет etersoft-build-utils. В параметрах скриптов обычно указываются названия спеков.

Вспомог.

Обычная

Где результат

Комментарий

rpmbb

rpm -bb

/RPM/RPMS

полная сборка пакета

rpmbb -r

buildreq

Спек, строка BuildRequires:

вычисление необходимых зависимостей сборки с занесением в спек

rpmbs -u

/RPM/remote/upload

собрать src.rpm, подписать его и выложить в Incoming; удалить buildroot

rpmbsh [ -r ] [-m]

/hasher/repo/i586/RPMS.hasher

собрать из спека src.rpm и отправить его на сборку в hasher (если сразу указан src.rpm, собираем его)

rpmbb -i

/RPM/RPMS

выполнить установку и упаковку пакета, пропустив компиляцию

rpmrb спек версия

для указанного спека скачивает архив с исходниками новой (указанной) версии, собирает в hasher и устанавливает в тестовый hasher

rpmgs спек

для указанного спека скачивает архив с исходниками

rpmgp пакет

для указанного пакета скачивает src.rpm

rpmbph [-M30] спек

выполняет бэкпорт указанного спека в указанный дистрибутив

rpmbs

rpm -bs

/RPM/SRPMS

собрать src.rpm

rpmbb -c

rpm -bc --short-circuit

/RPM/BUILD

компиляция без установки


Ключ -m указывает произвести сборку в фоновом режиме и прислать лог по почте (не работает) Ключ -r указывает произвести сборку на удалённом сервере Ключ -u указывает отправить в инкоминг после сборки (-U – в Updates, а не backports) Также есть команды loginhsh для входа в (тестовый) hasher.