Установка и настройка Aurora Platform SDK

Загружаем файлы Platform SDK

В целом, ручная установка отлично описана в официальной документации на портале разработчика. Но я всё-равно приведу её сокращённую версию с некоторыми уточнениями.

Открываем в браузере директорию со ссылками на установщик: https://sdk-repo.omprussia.ru/sdk/installers/

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

Выбрав нужную версию, проваливаемся вглубь до самих установочных файлов. Я выбрал версию SDK 5.1.0, и у меня полный путь получился такой: https://sdk-repo.omprussia.ru/sdk/installers/5.1.0/PlatformSDK/5.1.0.24/

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

ssh aurora_builder

mkdir Downloads
mkdir Projects  # сюда будут копироваться проекты для сборки, чтобы не засорять директорию PSDK
mkdir Tools     # я предпочитаю поддерживать порядок в домашней директории, так что PSDK устанавливаю в Tools

cd Downloads

curl -O https://sdk-repo.omprussia.ru/sdk/installers/5.1.0/PlatformSDK/5.1.0.24/Aurora_OS-5.1.0.24-base-Aurora_Platform_SDK_Chroot-x86_64.tar.bz2
curl -O https://sdk-repo.omprussia.ru/sdk/installers/5.1.0/PlatformSDK/5.1.0.24/Aurora_OS-5.1.0.24-base-Aurora_SDK_Target-aarch64.tar.7z
curl -O https://sdk-repo.omprussia.ru/sdk/installers/5.1.0/PlatformSDK/5.1.0.24/Aurora_OS-5.1.0.24-base-Aurora_SDK_Target-armv7hl.tar.7z
curl -O https://sdk-repo.omprussia.ru/sdk/installers/5.1.0/PlatformSDK/5.1.0.24/Aurora_OS-5.1.0.24-base-Aurora_SDK_Target-x86_64.tar.7z
curl -O https://sdk-repo.omprussia.ru/sdk/installers/5.1.0/PlatformSDK/5.1.0.24/Aurora_OS-5.1.0.24-base-Aurora_SDK_Tooling-x86_64.tar.7z

Первоначальная установка

Первым делом создаём директории для Platform SDK:

mkdir -pv $HOME/Tools/PlatformSDK/tarballs
mkdir -pv $HOME/Tools/PlatformSDK/sdks/aurora_psdk

Официальная документация советует скопировать установочные файлы в директорию tarballs, чтобы иметь к ним более удобный доступ. Я не вижу в этом большого смысла, особенно с учетом ограниченного дискового пространства в эмуляторе. Так что вместо копирования предлагаю сделать перемещение:

mv ~/Downloads/Aurora_OS* ~/Tools/PlatformSDK/tarballs
cd ~/Tools/PlatformSDK/tarballs

export PSDK_DIR=$HOME/Tools/PlatformSDK/sdks/aurora_psdk

sudo tar --numeric-owner -p \
    -xjf Aurora_OS-5.1.0.24-base-Aurora_Platform_SDK_Chroot-x86_64.tar.bz2 \
    --checkpoint=.1000 \
    -C $PSDK_DIR

Для удобства добавляем пару строк в .bashrc:

export PSDK_DIR="$HOME/Tools/PlatformSDK/sdks/aurora_psdk"
export PSDK_VER="5.1.0.24"

Если вы используете другую оболочку (Zsh, Fish, и т.д.), имеет смысл всё-равно добавить эти переменные в .bashrc, чтобы использовать его в скриптах. В конфигурационном файле своей оболочки можно просто подключать файл .bashrc, чтобы не дублировать экспорты.

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

Настройка тулинга и таргетов

Platform SDK представляет собой набор библиотек и сборочных утилит, и для обеспечения правильности работы используется механизм подмены рут-директории chroot. Так что первым делом нам нужно переключиться на сборочное окружение:

$PSDK_DIR/sdk-chroot

При первом запуске SDK предложит создать необходимые директории и выполнит базовую инициализацию окружения. После этого можно приступать к дальнейшей настройке:

export PSDK_VER="5.1.0.24"  # т.к. в CHROOT могут не подхватиться переменные, лучше задать их руками

cd ~/Tools/PlatformSDK/tarballs

# устанавливаем тулинг:
sdk-assistant tooling create AuroraOS-$PSDK_VER-base-x86_64 \
    Aurora_OS-$PSDK_VER-base-Aurora_SDK_Tooling-x86_64.tar.7z

# устанавливаем таргеты:
sdk-assistant --non-interactive target create AuroraOS-$PSDK_VER-base-x86_64 \
    Aurora_OS-$PSDK_VER-base-Aurora_SDK_Target-x86_64.tar.7z
sdk-assistant --non-interactive target create AuroraOS-$PSDK_VER-base-armv7hl \
    Aurora_OS-$PSDK_VER-base-Aurora_SDK_Target-armv7hl.tar.7z
sdk-assistant --non-interactive target create AuroraOS-$PSDK_VER-base-aarch64 \
    Aurora_OS-$PSDK_VER-base-Aurora_SDK_Target-aarch64.tar.7z

Что тут происходит?

Первым шагом мы устанавливаем тулинг — набор библиотек и утилит для сборки и отладки приложений. Как видите, в имени файла есть указание архитектуры x86_64, именно из-за этого нам приходится разворачивать QEMU. Когда появится аналогичный дистрибутив для архитектуры ARM, всё станет значительно проще.

Файлы таргетов — это набор платформо-специфичных библиотек, которые обеспечивают сборку бинарных файлов под требуемую архитектуру процессора. На данный момент актуальные устройства бывают как на 32-х так и на 64-х битной архитектуре, поэтому обязательно надо ставить как минимум два таргета: armv7hl (32 бита) и aarch64 (64 бита). Таргет для архитектуры x86_64 используется для сборки под эмулятор и пока что он нас не интересует, но лучше поставить для полноты комплекта — вдруг позже захочется тестировать приложения и в эмуляторе в том числе?

Теперь, когда все необходимые части SDK установлены, можно убедиться в правильности их установки с помощью следующей команды:

sdk-assistant list

В результате её выполнения должны быть перечислены все доступные таргеты для разных архитектур в виде древовидной структуры. Если что-то кажется подозрительным или чего-то не хватает, лучше всё удалить и проделать заново. Перед удалением не забудьте выйти из chroot-окружения командой exit. Сам процесс удаления описан в официальной документации, там же можно посмотреть команды для обновления тулинга и таргетов.

Добавление ключей для подписи

Важный шаг для сборки приложений — подпись rpm-файлов ключом разработчика. В процессе разработки и отладки можно использовать общедоступный ключ, который лежит на портале разработчика.

mkdir ~/Tools/Certs

cd ~/Tools/Certs

curl -O https://developer.auroraos.ru/static/regular_key.pem
curl -O https://developer.auroraos.ru/static/regular_cert.pem

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

Проверка установки

Итак, теперь всё готово к сборке приложений! Давайте сначала убедимся, что наша билд-система в принципе функционирует как надо. Для этого не выходя из chroot-окружения воспользуемся шаблоном приложения из официального репозитория ОМП:

cd ~/Projects
git clone https://gitlab.com/omprussia/demos/ApplicationTemplate.git

cd ApplicationTemplate
$PSDK_DIR/sdk-chroot mb2 --target AuroraOS-$PSDK_VER-base-armv7hl build

Можно поизучать вывод сборочной утилиты, чтобы познакомиться с тем, что там происходит во время сборки. Если всё настроено правильно, в директории проекта появятся артефакты сборки: набор объектных о-файлов, но нас интересует директория RPMS — там должен появиться rpm-файл с дистрибутивом приложения. Пока что нам этого достаточно, можно выходить из chroot-окружения и переходить к следующему этапу: настройке сборки приложений с основной ОС!

Небольшая доработка

На данный момент в скрипте $PSDK_DIR/sdk-chroot используется команда find с аргументами, которые актуальны для полноценных дистрибутивов Linux. Однако, в Alpine Linux используется урезанная версия из BusyBox, в которой нет опции -printf. Из-за этого при запуске sdk-chroot в консоль будет валиться вывод find --help, а сам скрипт будет работать не совсем корректно (хотя, проблем это не приносит, вроде). Так что для Alpine Linux имеет смысл немного подкорректировать скрипт:

sudo vim $PSDK_DIR/sdk-chroot

Находим функцию detect_chroot_arch() (в PSDK 5.1.0.24 она на 317 строчке) и заменяем в ней -printf "%f\n" на -print. Сохраняем файл и выходим из редактора. Теперь можно ещё раз выполнить команду сборки из пункта Проверка установки и убедиться, что лишний текст об использовании команды find больше не выводится.

Бонус!

Установка PSDK через aurora-cli

Участник сообщества любителей ОС Аврора @Keqygenqt разработал довольно удобную утилиту aurora-cli для управления SDK и Platform SDK. Она позволяет автоматизировать некоторые рутинные действия, но пока, к сожалению, не все.

Утилита написана на Python, так что предварительно нужно установить в эмулятор дополнительные компоненты:

export PYTHONUNBUFFERED=1
doas apk add --update --no-cache python3
python3 -m ensurepip
pip3 install --upgrade --no-cache pip setuptools

Также доустанавливаем необходимые пакеты, если их ещё нет:

doas apk add git git-lfs ffmpeg pango

Теперь можно переходить к установке самой утилиты:

python3 -m venv .venv
source .venv/bin/activate
pip install aurora-cli

Если всё прошло успешно, можно упростить установку и менеджмент различными версиями Platform SDK с помощью этой прекрасной утилиты.

aurora-cli psdk install

После этих действий в домашней директории появится установленный Platform SDK, но тулинг и таргеты нужно будет установить самостоятельно.

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