Документация
ОС Аврора 2.22.0

Установка и удаление 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.

  1. Нужно добавить скрипт 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}}
    
  2. Нужно добавить конфигурационный файл rpm/version.config. В этом файле прописывается версия Conan, которая будет использоваться. Пример:

    conan_version=2.22.0
    
  3. Нужно отредактировать .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 доступны в следующих приложениях:

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

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.