Сборка пакетов с mb2
- Инструмент
mb2 - Особенности работы
mb2 - Запуск
mb2для проектов для ОС Аврора - Возможности
mb2 - Дополнительные аргументы
mb2
Инструмент mb2
После того, как пользователь установил Аврора SDK
и настроил эмулятор, он может создавать пакеты локально для целевой архитектуры,
используя сборочный скрипт mb2, вызываемый из Аврора SDK.
Этот скрипт представляет собой оболочку для ScratchBox2 (sb2) и rpmbuild,
которая упрощает сборку пакетов из исходных репозиториев с учётом
файла спецификации RPM (.spec).
mb2 находится в /usr/bin/mb2 в SDK chroot.
Особенности работы mb2
mb2 выполняет подмножество команд сборки в контексте rpmbuild.
Обычно он вызывается из QtCreator для выполнения фаз сборки проекта qmake/make.
Следует обратить внимание, что любые другие шаги сборки в файле .spec также будут выполняться.
Инструмент будет искать .spec-файл в текущем каталоге rpm/.
Если таких файлов несколько, можно указать целевой в параметре mb2 -s.
CWD используется в качестве базового каталога
для installroot/ и RPMS/ для обеспечения теневых сборок.
mb2 осведомлен о spectacle и обновит spec-файл, если найден более новый yaml-файл.
Если существует файл с расширением .changes, имя которого совпадает с именем spec-файла,
эффект будет таким же, как наличие раздела %changelog в spec-файле.
Если вместо этого будет найден файл с расширением .changes.run, этот файл будет выполнен,
а его вывод будет обработан как фактический журнал изменений.
Запуск mb2 для проектов для ОС Аврора
Сценарий mb2 для сборки пакета вызывается следующим образом:
mb2 -s <path/to/rpm.spec> -t <SDK_target> build
Следует обратить внимание, если в проекте в подкаталоге rpm/ содержится только один файл .spec,
параметр -s <path/to/rpm.spec> становится необязательным.
Например, следующая команда может быть использована для сборки большинства проектов.
Она занесёт результаты в формат .rpm для дальнейшей установки.
Для выполнения этой команды необходимо запустить её из Platform SDK chroot в каталоге проекта,
используя таргет с архитектурой i486 или x86_64 для версии 5.0.0 и выше:
mb2 -t <таргет_с_архитектурой i486> build
Выходные файлы .rpm будут находиться в подкаталоге RPMS/ проекта.
В качестве альтернативы можно использовать опцию -o|--outputdir,
чтобы позволить mb2 хранить файлы .rpm в общем каталоге для упрощения развёртывания.
mb2 -t AuroraOS-i486 -o ~/RPMS build
Эти файлы .rpm могут быть установлены на устройство или эмулятор
в зависимости от того, под какую архитектуру они были собраны.
Возможности mb2
mb2 также можно использовать следующими способами:
mb2 qmake [<args>]запускает qmake в фазе сборки. Следует обратить внимание, что он при этом проверяет актуальность целевых зависимостей сборки.mb2 make [<args>]запускает make в фазе сборки;mb2 deploy –zypper|–pkcon|–rsync|–sdkвыполняет установку собранных ранее в директорииRPMS/пакетов на целевом устройстве;mb2 run|ssh [<args>]запускает команду (на устройстве, если задано–device); предназначен для запуска GDB и GDB-сервера;mb2 install [<args>]запускает фазу установки для установки в$buildroot;mb2 installdeps [<args>]обновляет кэшzypperдля данной цели и при необходимости устанавливает зависимости сборки;mb2 rpm [<args>]запускает фазы установки и создания rpm-пакета;mb2 apply [-R]применяет все патчи, определённые в спецификации из каталогаrpm.
Дополнительные аргументы mb2
Помимо аргументов -s и -t, которые были описаны ранее, у mb2 имеются следующие аргументы:
-i | –increment— увеличить номер релиза в файле спецификации;-d | –device— указать устройство, например:
mb2 -t <таргет_с_архитектурой_i486> build -d <путь_к_устройству>
-p | –projectdir— использовать при запуске теневой сборки или развертывания из другого каталога;-f | –shared-folder— директория, в которой Аврора IDE использует общие файлы devices.xml и ssh. Эта опция полезна, если опция развертывания используется вне виртуальной машины.-x[=<tag>] | –fix-version[=<tag>]— эта опция подразумевается при использовании внутри рабочего дерева Git (можно использовать-Xдля переопределения). В SDK это подразумевается только в том случае, если версия, записанная в файле спецификации, имеет значение 0. Можно использовать последний тег из текущей веткиgitв качестве версии пакета или заданного<tag>. Если текущиеHEAD, индекс или рабочее дерево отличаются от дерева, обозначенного тегом, к версии пакета будет добавлен суффикс, составленный из имени текущей ветви, отметки времени и коммитаSHA1. Если git-состояние не является чистым, будет создана структура git-stash и еёSHA1будет использоваться вместоHEAD.-X | –no-fix-version— переопределить параметр–fix-version;-n | –no-deps— не обновлять целевые зависимости;-c[=<args>] | –git-change-log[=<args>]— включить журнал изменений, сгенерированный из истории Git с помощью командыgit-change-log, передавая любые<args>. Эта опция не предназначена для обычного использования — нужно создать файл сценария, с таким же именем, как у.spec-файла, но с расширением.changes.run, чтобы дать дляmb2команду сгенерировать журнал изменений с помощьюgit-change-log <args>.-m | –submodule— использовать указанный каталог в качестве подмодуля при применении патчей.