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

Примечание. Описание действительно для Sailfish OS Build Engine RUS (Build Engine) версии 2.1.3 или выше. Если используется версия ниже 2.1.3, необходимо обновить среду сборки или воспользоваться инструкцией для версии ниже 2.1.3.

Цели для среды сборки и набор инструментальных средств

Среда сборки предоставляет chroot-окружение, в котором доступен Scratchbox2. В ScratchBox2 используется эмуляция с помощью QEMU. Она позволяет запускать исполняемые файлы, специфичные для архитектуры Linux, на хост-машине с отличной от целевого устройства архитектурой. Например, она позволяет пользователю запускать пакеты архитектуры ARMv7 на устройстве с архитектурой x86.

Инструменты сборки для конкретной версии операционной системы, предоставляются в виде дистрибутивов как «tools distribution» (SDK tooling, набор инструментальных средств).

Для использования ScratchBox2 в разработке ПО для Sailfish OS необходимо установить корневую файловую систему целевой архитектуры (rootfs) внутри chroot-окружения среды сборки. rootfs содержит зависимости сборки (включая исполняемые файлы и библиотеки), которые необходимы для создания пакетов ПО для целевого устройства. rootfs — это часть целевой конфигурации ScratchBox2, поэтому термины «rootfs» и «target» взаимозаменяемы. В Sailfish OS используется термин «Цели для среды сборки».

При входе в ScratchBox2 через команду sb2 необходимо указать цель, которая должна быть запущена. При использовании сценария Mer Build (mb2) для сборки пакета следует указать цель, которая запущена ScratchBox2.

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

Инструмент SDK Assistant доступен в chroot-окружении среды сборки, что упрощает создание и удаление целей Scratchbox2. Список доступных для загрузки целей и tar-архив с набором инструментальных средств представлен на сайте releases.sailfishos.org. Так как цели зависят от набора инструментальных средств, установка должна производиться в следующем порядке:

  1. Установить набор инструментальных средств:

    bash sdk-assistant create SailfishOS-latest \ Jolla-latest-Sailfish_SDK_Tooling-i486.tar.bz2

  2. Установить цели для среды сборки:

    ```bash sdk-assistant create SailfishOS-latest-armv7hl Jolla-latest-Sailfish_\ SDK_Target-armv7hl.tar.bz2

    sdk-assistant create SailfishOS-latest-i486 Jolla-latest-Sailfish_\ SDK_Target-i486.tar.bz2 ```

Удаление производится в обратном порядке.

Примечание. Цели для среды сборки архитектурно-специфичны, однако набор инструментальных средств построен под архитектуру i486 и поддерживает только данную архитектуру.

При создании новой цели можно использовать полный URL-адрес. Например:

  1. Установить набор инструментальных средств:

    bash sdk-assistant create SailfishOS-latest \ http://releases.sailfishos.org/sdk/latest\ /Jolla-latest-Sailfish_SDK_Tooling-i486.tar.bz2

  2. Установить цели для среды сборки:

    ```bash sdk-assistant create SailfishOS-latest-armv7hl \ http://releases.sailfishos.org/sdk/latest/\ Jolla-latest-Sailfish_SDK_Target-armv7hl.tar.bz2

    sdk-assistant create SailfishOS-latest-i486 \ http://releases.sailfishos.org/sdk/latest/\ Jolla-latest-Sailfish_SDK_Target-i486.tar.bz2 ```

В результате будут созданы две унифицированные цели, независимые от аппаратного обеспечения:

  • SailfishOS-latest-armv7hl для архитектуры ARMv7;
  • SailfishOS-latest-i486 для архитектуры i486.

Наименования целей должны использоваться как аргументы в командах sb2 или mb2 -t. Установленный набор инструментальных средств «SailfishOS-latest» будет автоматически выбран.

Команды инструмента SDK Assistant

Ниже представлен список часто используемых команд инструмента SDK Assistant.

  Команда     Описание  
sdk-assistant list Отображение установленных наборов инструментальных средств и целей
sdk-assistant remove [наименование_цели] Удаление установленных наборов инструментальных средств и целей
sdk-assistant update [наименование_цели] Обновление наборов инструментальных средств и целей
sdk-assistant --help Вызов описания встроенных команд

Управление набором инструментальных средств

Команда sdk-manage доступна без chroot-окружения среды сборки. Средство позволяет разработчику управлять установленными наборами инструментальных средств и целями более развернуто.

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

sdk-manage target install [наименование] [URL] \
--tooling [наименование] --tooling-url [URL]

Например:

sdk-manage target install SailfishOS-latest-armv7hl \
http://releases.sailfishos.org/sdk/latest/Jolla-\
latest-Sailfish_SDK_Target-armv7hl.tar.bz2      \
--tooling SailfishOS-latest --tooling-url \
http://releases.sailfishos.org/sdk/latest/Jolla-\
latest-Sailfish_SDK_Tooling-i486.tar.bz2

Отдельные цели

Отдельные цели для разных устройств необходимы, если конкретный пакет, который следует собрать, требует низкоуровневых аппаратно-зависимых пакетов. Пакеты, связанные с Hybris, должны быть собраны на основе аппаратно-зависимых библиотек. Для них необходимо создать отдельную цель для сборки пакета под конкретное устройство.

При возможности, в целях предоставляются независимые от аппаратного обеспечения библиотеки. Например, библиотеки Mesa3D предоставляют OpenGL, без необходимости установки специфичных для аппаратного обеспечения библиотек для архитектуры ARMv7.