Среда сборки и центр управления

Общая информация и структура

Build Engine — это среда сборки, которая предоставляет доступ к ряду инструментов, например, к Scratchbox2, в котором можно собрать специфичные для Linux-архитектуры исполняемые файлы с использованием эмуляции на QEMU. Среда разработки является гибкой системой, которая состоит из chroot-окружения, содержит сценарии для сборки и позволяет собирать, тестировать и устанавливать пакеты для ОС Аврора.

Цели среды сборки:

  • работа на большом количестве хост-машин без необходимости их поддержки;
  • использование постоянного набора инструментов;
  • кросс-компиляция для нескольких устройств с различными архитектурами (ARM или x86) или версиями ОС.

Среда сборки предоставляет минимальный набор, необходимый для работы Mer Core и запускается внутри контейнера виртуальной машины, предоставляя доступ к исходному коду Linux-устройства. Mer Core также использует собственные исполняемые файлы и библиотеки.

Это первый уровень вложенности среды сборки. Она доступна как chroot-окружение в командном интерпретаторе или в консоли хост-машины на базе Linux. Средства виртуализации VirtualBox или lxc используются при необходимости.

Среда сборки предоставляет все необходимые инструменты разработки и наборы инструментов для процессорной архитектуры, но не содержит библиотеки или заголовочные файлы ОС Аврора. Она содержит только те библиотеки или заголовочные файлы, которые возможно использовать для создания дополнительных инструментов.

Кросс-компиляция для нескольких устройств с различными архитектурами достигается наличием одной или нескольких целей внутри среды сборки. Цели для среды сборки представляют собой набор библиотек и заголовочных файлов для конкретной версии или процессорной архитектуры ОС Аврора (или других платформ).

Это второй уровень вложенности среды сборки – среды устройства и доступа к нему через ScratchBox2.

В результате:

  • хост-машине не нужно большое количество ПО, установленного в нативной ОС;
  • инструменты разработки устанавливаются в контейнер среды разработки (аналогично для Linux, Windows и macOS);
  • время сборки зависимостей для пакета задается в соответствующем целевом контейнере.

По умолчанию среда сборки содержит инструменты разработки Scratchbox2, MIC (Создание образов), Spectacle, OSC, QEMU, OBS и т. д.

Возможна установка дополнительных инструментов для разработки на языке Python и Ruby, отладки и тестирования. Подробная информация об инструментах разработки представлена в статье «Инструменты разработки».

Установка

Для установки среды сборки в корневую файловую систему необходимо загрузить последнюю версию среды сборки и tar-архив с предустановленным набором инструментов armv7hl:

curl -k -O http://releases.sailfishos.org/sdk/\
installers/latest/Jolla-latest-SailfishOS_Platform_SDK_Chroot-i486.tar.bz2

Набор arm7hl используется ARM-устройств, i486 – для эмулятора и Intel-устройств.

Информация о выпуске доступна для просмотра в разделе Release Notes. Раздел SDK Build Engine содержит последние изменения среды сборки.

Для входа в корневую файловую систему среды сборки необходимо создать каталог и извлечь архив с правами суперпользователя:

sudo mkdir -p /srv/mer/sdks/sfossdk
sudo tar --numeric-owner -p -xjf Jolla-latest-SailfishOS_Platform_SDK_Chroot-i486.tar.bz2 -C \
/srv/mer/sdks/sfossdk

Сценарий управления средой сборки

В корневой файловой системе среды сборки (в корневом каталоге rootfs (/) содержится вспомогательный сценарий для входа в chroot-окружение:mer-sdk-chroot. .

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

Вход в среду сборки

Перед входом в среду сборки возможно создание аналога «.profile» для указания расположения. Среда сборки считывает bash-сценарии автозаполнения в chroot-окружении.

cat << EOF >> ~/.mersdk.profile
PS1="PlatformSDK \$PS1"
if [ -d /etc/bash_completion.d ]; then
 for i in /etc/bash_completion.d/*;
 do
. \$i
 done
fi
EOF

Для версии ОС Аврора 2.1.3 и выше, при использовании нескольких экземпляров среды сборки, возможно назначение абсолютного пути в chroot-окружении с использованием MERSDK.

Для входа в корневую файловую систему среды сборки с помощью вспомогательного сценария следует ввести команду:

/srv/mer/sdks/sfossdk/mer-sdk-chroot

После чего необходимо проверить, что:

  • работа осуществляется под обычным пользователем;
  • домашний каталог доступен как /home/<имя_пользователя>;
  • любые другие точки монтирования подключаются в каталоге /parentroot/.

При работе в среде сборке права суперпользователя назначаются автоматически. В случае если права суперпользователя не настроены, необходимо проверить, что среда сборки подключена со стандартной файловой системой без параметра nosuid.

Для просмотра установленных параметров и типа файловой системы хост-машины, необходимо воспользоваться утилитой «mount». Информация содержится в конфигурационном файле fstab, который находится в каталоге /etc/fstab.

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

При использовании единственного экземпляра среды сборки применяется следующая команда для создания псевдонима:

echo alias sfossdk=/srv/mer/sdks/sfossdk/mer-sdk-chroot >> ~/.bashrc ; exec bash

Обновление среды сборки

Среда сборки для версии 2.1.3 не поддерживает одновременную установку целей для среды сборки для нескольких версий ОС Аврора.

При использовании старой версии среды сборки, необходимо проверить соответствие версий среды сборки и целей для среды сборки. В случае обновления версии целей для среды сборки следует обновить среду сборки.

Для проверки текущей версии необходимо воспользоваться командой ssu re в среде сборки.

В примере ниже рассматривается выпуск Jolla 2.2.0.29:

sudo ssu re 2.2.0.29
sudo zypper ref
sudo zypper dup

Авторизация в среде сборки

Для авторизации с правами пользователя в среде сборки необходимо ввести следующую команду:

$ ssh -p 2222 -i ~/SDK/vmshare/ssh/private_keys/engine/mersdk mersdk@localhost

Для авторизации с правами суперпользователя в среде сборки необходимо ввести следующую команду:

$ ssh -p 2222 -i ~/SDK/vmshare/ssh/private_keys/engine/root root@localhost

После выполнения вышеперечисленных действий необходимо перейти к установке целей для среды сборки.

Установка целей для среды сборки

Цели для среды сборки предоставляет среду разработки для сборки пакетов соответствующего устройства, как правило, с ARM-архитектурой, которое работает под управлением ОС Аврора.

Установка целей для среды сборки включает в себя следующие действия:

  • вход в среду сборки;
  • загрузка tar-архива целей для среды сборки;
  • запуск SDK Assistant для установки целей для среды сборки.

Подробная информация представлена в статье «Установка целей для среды сборки».

Деинсталляция среды сборки

Для деинсталляции среды сборки необходимо:

  • удалить цели;
  • удалить набор инструментальных средств;
  • выйти из chroot-окружения во всех экземплярах;
  • удалить каталог /srv/mers/sdks/sfossdk используя права суперпользователя.

Несколько экземпляров среды сборки

Возможны установка и подключение к нескольким экземплярам среды сборки одновременно.

Известные проблемы

Ошибка # 554: mic failure

Для того чтобы исправить ошибку 554, добавьте к ~/.mersdk.profile (например, для Fedora OS версии 17 и выше):

export PATH=$PATH:/sbin}

Недостаточно места на диске

Если на диске достаточно места, возможная проблема в устаревшей версии ядра. Для запуска среды сборки необходима версия ядра 2.6.37 или выше.