Установка и удаление Conan
Conan — это менеджер пакетов для разработчиков на языках C и C++. Список доступных пакетов можно найти на сервере Conan. Conan позволяет устанавливать зависимости в проект, не прибегая к пакетным менеджерам (например, Zypper или pkcon). Это даёт возможность добавлять внешние библиотеки для сборки приложения.
Сonan, как удаленный репозиторий, может использоваться для хранения и распространения предварительно скомпилированных библиотек, исполняемых файлов и файлов, необходимых для сборки (заголовочных файлов).
Разработчик может использовать сервер Conan с общедоступными пакетами, адаптированными под ОС Аврора, или развернуть собственный сервер со своим набором пакетов. Для использования пакетного менеджера Conan нужно выполнить его установку в окружение Аврора SDK или PSDK на рабочем месте разработчика.
Примечание.
Новая версия Conan будет работать на Аврора SDK (MB2) и Аврора SDK (BT).
С версии 2.22.0 Conan стал внешней программой — больше не требуется установка rpm-пакетов внутри SDK.
Теперь все необходимые файлы для работы пакетного менеджера Conan загружаются как дополнительный инструмент.
Такая необходимость возникла из-за SDK BT, который не позволяет устанавливать пакеты внутри виртуальной машины.
Важно. Для использования Conan доступна только система сборки CMake.
Содержание:
Подготовка
Предварительно необходимо установить Аврора SDK (MB2) или (BT).
Установка
В демонстрации новой версии Conan 2.22.0 будет использоватьcя ветка dev примера ScreenGrab.
-
Нужно добавить скрипт
rpm/load-conan.sh. Он необходим для загрузки на хостовую машину всех файлов для работы утилиты Conan. Пример:#!/bin/bash if [[ -n "${SAILFISH_SDK_SRC1_MOUNT_POINT}" ]]; then WORKSPACE_DIR=${SAILFISH_SDK_SRC1_MOUNT_POINT} elif [[ "$(basename "${AURORA_SDK}" )" = "aurora_psdk" ]]; then WORKSPACE_DIR="${HOME}" elif [[ "${PWD}" == "/workspace/"* ]]; then WORKSPACE_DIR="/workspace" else echo %{error: unknown environment} fi script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) config_file="$script_dir"/version.config if [[ -f "$config_file" ]]; then source "$config_file" if [[ -z "$conan_version" ]]; then echo %{error: Missing conan_version in rpm/"$config_file"} exit 1 fi else echo %{error: No rpm/"$config_file" file} exit 1 fi target="$(uname -m)" if [[ "$target" == "armv7l" ]]; then target="armv7hl" fi aurora_sdk_version=$(grep VERSION_ID /etc/os-release | cut -d '=' -f2 | tr -d '"') aurora_sdk_major_version=$(echo "$aurora_sdk_version" | cut -d '.' -f1) archive="conan.tar.gz" download_url="https://conan.omp.ru/distrib/conan/${conan_version}/${aurora_sdk_major_version}/conan-${conan_version}-${target}.tar.gz" conan_distribution_directory=${WORKSPACE_DIR}/.cache/AuroraTools/"${aurora_sdk_major_version}"/conan/"${conan_version}"/$(uname -m) conan_rpm_macros=${conan_distribution_directory}/rpm-macros archive_path="${conan_distribution_directory}/${archive}" if [ ! -f "${conan_rpm_macros}" ]; then echo %{echo:Downloading Conan distribution} mkdir -p "${conan_distribution_directory}" curl -s -o "$archive_path" "$download_url" || { echo %{error:Failed to download conan archive} } tar -xf "$archive_path" -C "$conan_distribution_directory" || { echo %{error:Failed to exctract conan acrhive} } rm -f "${archive_path}" fi echo "%define __workspace_dir ${WORKSPACE_DIR}" echo "%define __conan_version ${conan_version}" echo %{load:${conan_rpm_macros}} -
Нужно добавить конфигурационный файл
rpm/version.config. В этом файле прописывается версия Conan, которая будет использоваться. Пример:conan_version=2.22.0 -
Нужно отредактировать .spec-файл проекта для использования Conan. Пример .spec-файла для проекта ScreenGrab:
%define __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ %define __requires_exclude ^(libdav1d.*|liblzma.*|libopus.*|libopenh264.*|libvpx.*|libavcodec.*|libavdevice.*|libavfilter.*|libavformat.*|libavutil.*|libswresample.*|libswscale.*|libHttpServer.*|libwebrtc.*)$ %define _cmake_skip_rpath %{nil} %{expand:%(bash %{_sourcedir}/load-conan.sh)} Name: ru.auroraos.ScreenGrab Summary: Application for screen streaming Summary(ru): Приложение для демонстрации экрана МУ Version: 1.0.0 Release: 1 License: BSD-3-Clause URL: https://auroraos.ru Source0: %{name}-%{version}.tar.bz2 Requires: sailfishsilica-qt5 >= 0.10.9 BuildRequires: pkgconfig(auroraapp) BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(Qt5Gui) BuildRequires: pkgconfig(Qt5Core) BuildRequires: pkgconfig(Qt5Qml) BuildRequires: pkgconfig(Qt5Quick) BuildRequires: pkgconfig(Qt5Multimedia) BuildRequires: pkgconfig(Qt5WebSockets) BuildRequires: pkgconfig(streamcamera) BuildRequires: pkgconfig(streamcamera-qt5) BuildRequires: conan BuildRequires: ninja %description The application allows streaming the device screen to clients over the Internet, as well as recording the screen to a file. %description -l ru Приложение позволяет демонстрировать видеопоток с экрана мобильного устройства клиентам по сети, а также позволяет записывать поток в файл. %prep %autosetup %build %conan_install %conan_cmake \ -DORG_NAME=ru.auroraos \ -DAPP_NAME=ScreenGrab \ -GNinja %ninja_build %install %ninja_install %files %defattr(-,root,root,-) %{_bindir}/%{name} %{_libexecdir}/%{name}/screengrab_http_server %defattr(644,root,root,-) %{_datadir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/icons/hicolor/*/apps/%{name}.png
Что изменилось в .spec-файле:
-
Добавлен запуска скрипта
load-conan.sh:%{expand:%(bash %{_sourcedir}/load-conan.sh)} -
Изменена секция
build(можно без проброса макросовORG_NAMEиAPP_NAME, они специфичны для данного приложения):%conan_install %conan_cmake \ -DORG_NAME=ru.auroraos \ -DAPP_NAME=ScreenGrab \ -GNinja -
Изменена секция
install:%install %ninja_install %conan_deploy_libraries
Дальнейшая конфигурация, сборка и запуск проекта на устройстве или эмуляторе проходит в обычном порядке.
Удаление
Достаточно удалить директорию ~/.cache/AuroraTools на хосте (Ubuntu, Alt Linux).
Примеры использования Conan доступны в следующих приложениях:
- OpenCvUseCases
- StreamCamera
- MapTemplate
- ScreenGrab
- Дополнительные библиотеки, расширяющие функционал приложения Mfw карты
Примечание. Библиотеки предоставлены в ознакомительных целях.