Удаленная сборка RPM пакетов для MeeGo с помощью системы OBS

Введение

Статья является логическим продолжением Получение доступа к OBS и рассказывает об особенностях работы с сервисом Open Build Service (OBS). Данный сервис позволяет создавать из исходных кодов RPM пакеты приложений для различных версий MeeGo.

Требования к разработчикам

Пока что единственным требованием к разработчикам, которые хотят использовать OBS, является наличие открытого репозитария с исходными кодами приложения. Так что, если у вас еще нет online хранилища, рекомендуется им обзавестись перед получением доступа к системе. Благо в сети существует большое количество сервисов, предоставляющих данные услуги, например garage.maemo.org, и meego.gitorious.org.

Добавление пакета

Перед тем, как приступить непосредственно к созданию исполняемых файлов, необходимо добавить новый пакет ("package") и заполнить несколько служебных полей. Для этого зайдите в систему, откройте страницу своего проекта (через пункт меню "My projects") и перейдите на вкладку "packages". Далее зайдите в пункт меню "Add new package" и в открывшемся окне введите имя пакета в системе ("name"), заголовок ("Title") и описание ("Description").

Если проект был создан успешно, то следующий шаг - добавление мишеней ("targets"). На вкладке "Targets" есть список всех доступных для системы мишеней, отметьте необходимые вам.

Далее следует добавить первую версию исходных файлов проекта. Для этого перейдите на вкладку "Files" и нажимая "Add file" поочередно добавьте tar архив с исходными кодами проекта и .spec файл, описывающий процесс сборки. Подробнее про синтаксис .spec файлов написано, например, здесь.

Добавление файлов с исходным кодом автоматически запустит процесс компиляции и сборки пакета. Текущий статус сборки ("Build status") под каждую мишень можно увидеть в правом верхнем углу вкладки "Overview".

Способы взаимодействия с OBS

Система MeeGo OBS предлагает на выбор два способа загрузки файлов: через web-интерфейс или с помощью консольной утилиты "osc". Практика показывает, что для загрузки новых версий удобнее пользоваться вторым способом. Сначала требуется установить пакет osс. Например, в Ubuntu это делается командой:

sudo apt-get install osc

Затем создайте пустую директорию и, находясь в ней, в терминале наберите

osc -Ahttps://api.pub.meego.com checkout home:

В результате последняя версия исходников программы должна быть загружена на ваш компьютер с сервера OBS. Если этого не произошло, проверьте правильность набранной команды или обратитесь к разделу "Troubleshooting" на странице wiki.meego.com.

Далее работа с OBS ведется аналогично взаимодействию с системами версионного контроля. Пользуясь командами update и commit, вы можете соответственно обновлять локальную версию исходников до версии сервера и, наоборот, загружать в OBS модифицированные вами исходники. Ниже приведены примеры использования описанных команд.

osc commit -m "Comment"
osc uodate

Несмотря на аналогичный синтаксис, OBS не является сервером для системы контроля версий в полном смысле слова, поскольку разработчики не гарантируют сохранность всех когда-либо загруженных в нее файлов. Поэтому не рекомендуется использовать build.pub.meego.com как единственный онлайн репозитарий.

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

Таким образом, OBS позволяет любому программисту без установки какого-либо специфического софта (можно обойтись даже без MeeGo SDK) создавать пакеты приложений из исходных кодов, что экономит значительное время и упрощает процесс разработки.

На этом краткое введение в Open Build Service закончено, в следующей статье будут описаны несколько приемов, позволяющих упростить работу с OBS, такие, например, как создание и подключение репозитариев приложений.

Все замечания, вопросы, пожелания, пожалуйста, оставляйте в комментариях к данной статье или направляйте на адрес vit.petrov@fruct.org.

Виталий Петров