вторник, 29 мая 2018 г.

Система видеокомпозитинга Natron теперь в виде Flatpak

Приветствую. Последний месяц я был занят тем, что упаковывал одну из моих любимейших свободных программ в форму самодостаточного универсального пакета Flatpak. Для тех кто не знает: Flatpak (ранее xdg-app) это формат пакетов, изначально представленный одним из разработчиков компании Red Hat Александром Ларссоном (Alexander Larsson). Этот проект нацелен на предоставление формата пакетов, независимого от дистрибутива, при этом обеспечивающего надёжную изоляцию как от основной системы, так и от других таких пакетов. Это позволяет держать на одной системе множество версий одной и той же программы без каких либо конфликтов. Подробнее можете почитать здесь. А сейчас я хочу рассказать о процессе создания пакета, о трудностях, с которыми пришлось столкнуться и так далее. Погнали!


Если кто забыл - Natron это система видеокомпозитинга, для создания визуальных эффектов (VFX). Это полнофункциональный аналог таких программ, как Adobe After Effects, Nuke и Blackmagic Fusion. От AE он отличается лишь тем, что использует систему узлов (node), тогда как AE работает со слоями, подобно Фотошопу. Сам по себе Natron распространяется в виде deb и rpm пакетов, которые разработчики собирают на своей сборочной ферме и размещают на официальном сайте (сайт старый, новый в разработке). Плюс ко всему существует установщик аля Windows Installer, где простыми кликами "Далее далее далее" ставится программа. Пользователю доступна как последняя стабильная версия, так и тестовые и так называемые снапшоты (это нечто среднее). Не так давно создатель репозитория Deb Multimedia разместил у себя грамотно собранные deb-пакеты, для Debian естественно. На базе его работы я создал PPA для Ubuntu, и поддерживаю его до сих пор. Однако есть у такого подхода определённые минусы.



Дело в том, что многие библиотеки, необходимые для сборки и работы Натрона, особым образом патчатся. Эти патчи необходимы как для включения определённой функциональности, так и для закрытия каких-либо недочётов. По ряду причин эти патчи не могут быть приняты в основные проекты, например Qt4 уже давно не развивается, но он всё ещё является основным тулкитом, на котором строится интерфейс Natron. Далее, некоторые компоненты, в частности ImageMagic, в большинстве дистрибутивов собирается с 16-ти битной глубиной Quantum, тогда как для Натрона разработчики рекомендуют 32 бита. Ну и всё в таком духе. Благо при сборке Flatpak все эти нюансы можно учесть.

Часть сборочного рецепта Natron для Flatpak


Сама сборка Flatpak-пакета сводится к написанию сборочного "рецепта" - файла в формате JSON, где описываются зависимости (и то как они должны быть собраны), прописываются пути к патчам, указывается какие команды нужно выполнить на том или ином этапе и так далее. А также - прописываются разрешения, которые получит собираемая программа. Это одна из важнейших частей, ведь от этого и зависит безопасность программы. В частности для Натрона разрешён лишь доступ к файловой системе хоста, графической подсистеме (и соответствующим устройствам) и....всё. Дальше этого он никуда не сунется. Большую часть времени у меня отняла именно отладка этого рецепта.

Мне крайне сильно помог один из основных разработчиков Natron Frederic Devernay, за что ему огромное спасибо. Он поделился всеми патчами и скриптами, которые используются для сборки официальных версий. Большинство патчей я внедрил в сборочный рецепт, а предоставленные скрипты показали с какими ключами должны собираться зависимости. Далее дело было за малым - тестирование. Тестировал всё на своей машине, сборка занимала чуть более часа. Очень много мата уходило на то, что некоторые вещи (например встроенные плагины) нужно было копировать вручную в нужный каталог, прописывая определённые команды в рецепт (в нормальных условиях всем этим занимается сборочная система программы). На последних этапах мне помогли мейнтейнеры Flathub - каталога программ, куда и загружаются все Flatpak-пакеты.

И наконец всё готово! Хотя осталось добавить скриншоты и кое-какую дополнительную информацию. Но установить программу можно уже сейчас. В собранный мною пакет входят все официальные плагины OpenFX, даже адаптация плагина G'MIC. А это значит возможности этой программы просто запредельны. Flatpak-пакет с Natron является официальным, и информация по его установки скоро будет добавлена на официальный сайт. Для установки вам потребуется Flatpak не ниже версии 0.10. Если он у вас ещё не установлен:


Для Ubuntu 18.04:

sudo apt install flatpak

Для установки поддержки Flatpak в GNOME Software или Plasma Discover выполните:

sudo apt install gnome-software-plugin-flatpak

Для Plasma Discover:

sudo apt install plasma-discover-flatpak-backend

Далее подключите репозиторий Flathub:

flatpak remote-add --if-not-exist flathub https://flathub.org/repo/flathub.flatpakrepo

Далее уже можно ставить Natron, либо из графического менеджера приложений, либо через терминал:

flatpak install flathub fr.natron.Natron


Страница программы на Flathub. Обо всех ошибках в работе пакета прошу отписываться в комментариях. А ещё лучше - здесь. На этом у меня всё. Скоро увидимся!