название для официального сайта inFlowia Lab
  • помощь 4 free! :)
  • делаем добро :)
  • делаю сайты, скрипты и хорошее настроение :)
  • всё поправимо! :)
  • Свобода и OPENsource!
  • Linux - это любовь!
  • Linux - это Lюбовь
  • творим добро с 2019/03/22 :)

Сборка и установка из исходников LV2-плагина samplv1 0.9.7 под Ubuntu Studio 18.04.1

Внимание! В данной статье есть неправильные моменты, в частности насчёт указания префикса, так как на момент написания мой опыт сборки был близок к нулевому. К сожалению пока нет времени поправить, но так или иначе следуя этому руководству вы сможее собрать работоспособный плагин. Хотя это будет кривовато.
Тестировалось и успешно работало только на указанной в конце статьи сборке Linux! При попытке сборки под Kubntu 18.04.2 64-bit плагин не показывал интерфейс (то есть не работал).

К сожалению разработчик семплера samplv1 распространяет его только в виде исходников и к ещё большему сожалению пишет его с использованием Qt, а вот какие конкретно пакеты для сборки нужны не пишет, ну да ладно. inFlowia Lab разобралась как это собрать под Ubuntu Studio 18.04.1 64-bit, надеюсь это поможет вам.

Напомню, что собираться и устанавливаться будет не standalone семплер, а LV2-плагин, который по итогам установки будет успешно работать в Ardour 5.12 в отличие от версии 0.8.6 из стандартного репозитория.

  • Качаем исходники с оф. сайта. Учтите, что в статье речь идёт именно про версию 0.9.7. Для других версий могут быть совсем другие тонкости.
  • Распакуйте содержимое архива в домашнюю папку, так чтобы в ней лежал каталог samplv1-0.9.7 непосредственно в котором лежат файлы Makefile, INSTALL COPYING и т. д.
  • Откройте консоль и перейдите в распакованный каталог командой cd ~/samplv1-0.9.7
  • ./configure --prefix=/lib/lv2/samplv1.lv2 и если вы не увидели в конце выхлопа консоли подобной таблички (Назовём её "финальная таблица"): samplv1 0.9.7 Build target . . . . . . . . . . . . . . . . . . .: release JACK stand-alone build . . . . . . . . . . . . . .: yes JACK session support . . . . . . . . . . . . . . .: yes JACK MIDI support . . . . . . . . . . . . . . . .: yes ALSA MIDI support . . . . . . . . . . . . . . . .: yes LV2 plug-in build . . . . . . . . . . . . . . . .: yes LV2 plug-in X11 UI support . . . . . . . . . . .: yes LV2 plug-in External UI support . . . . . . . . .: yes LV2 plug-in UI Idle interface support . . . . . .: yes LV2 plug-in UI Show interface support . . . . . .: yes LV2 plug-in UI Resize interface support . . . . .: yes LV2 plug-in Programs support . . . . . . . . . . .: yes LV2 plug-in Patch support . . . . . . . . . . . .: yes OSC service support (liblo) . . . . . . . . . . .: yes NSM (Non Session Management) support . . . . . . .: yes Install prefix . . . . . . . . . . . . . . . . . .: /lib/lv2/samplv1.lv2 Now type 'make', followed by 'make install' as root. Начинаем удовлетворять зависимости...
  • Для начала можете попробовать поставить всё из этого списка: gcc g++ pkg-config qt4-qmake qt5-qmake qt5-default libsndfile1-dev libjack-jackd2-dev libasound2-dev liblo-dev lv2-dev . Запомните его, он по сути самое ценное, что есть в этой статье.

    Чтобы проверить, что из этого получилось снова выполните

    ./configure --prefix=/lib/lv2/samplv1.lv2

    Если в процессе установки пакетов всё успешно установилось но configure всё равно либо не доходит до финала (финальной таблицы не видно) либо в финальной таблице есть строчки с "no" то разворачивайте спойлер и удачи вам...

    Читайте строчки, в конце них почти нигде не должно стоять "no". В некоторых местах есть, но в целом всё должно быть на "yes".

    Ай что я в самом деле жадничаю вот вам полный выхлоп успешного процесса конфигурирования сборки:

    checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking how to run the C preprocessor... gcc -E checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking how to run the C++ preprocessor... g++ -E checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for g++ major version... 7 checking for qmake... /usr/bin/qmake checking for Qt major version... 5 checking for Qt install path... /usr/lib/qt5/bin checking for qmake... /usr/lib/qt5/bin/qmake checking for Qt install headers... /usr/include/x86_64-linux-gnu/qt5 checking for Qt install libraries... /usr/lib/x86_64-linux-gnu checking for Qt library version >= 5.1... yes checking for moc... /usr/lib/qt5/bin/moc checking for uic... /usr/lib/qt5/bin/uic checking for lupdate... /usr/lib/qt5/bin/lupdate checking for lrelease... /usr/lib/qt5/bin/lrelease checking for main in -lm... yes checking for main in -lX11... yes checking for main in -lXext... yes checking for sndfile... yes checking for jack >= 0.100.0... yes checking for jack_set_session_callback in -ljack... yes checking for alsa... yes checking for main in -lasound... yes checking for liblo... yes checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/wait.h that is POSIX.1 compatible... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking sys/ioctl.h usability... yes checking sys/ioctl.h presence... yes checking for sys/ioctl.h... yes checking for sys/stat.h... (cached) yes checking for unistd.h... (cached) yes checking signal.h usability... yes checking signal.h presence... yes checking for signal.h... yes checking jack/session.h usability... yes checking jack/session.h presence... yes checking for jack/session.h... yes checking jack/midiport.h usability... yes checking jack/midiport.h presence... yes checking for jack/midiport.h... yes checking for lv2... yes checking lv2/lv2plug.in/ns/ext/urid/urid.h usability... yes checking lv2/lv2plug.in/ns/ext/urid/urid.h presence... yes checking for lv2/lv2plug.in/ns/ext/urid/urid.h... yes checking lv2/lv2plug.in/ns/ext/atom/atom.h usability... yes checking lv2/lv2plug.in/ns/ext/atom/atom.h presence... yes checking for lv2/lv2plug.in/ns/ext/atom/atom.h... yes checking lv2/lv2plug.in/ns/ext/atom/forge.h usability... yes checking lv2/lv2plug.in/ns/ext/atom/forge.h presence... yes checking for lv2/lv2plug.in/ns/ext/atom/forge.h... yes checking lv2/lv2plug.in/ns/ext/atom/util.h usability... yes checking lv2/lv2plug.in/ns/ext/atom/util.h presence... yes checking for lv2/lv2plug.in/ns/ext/atom/util.h... yes checking for lv2_atom_forge_object... yes checking for lv2_atom_forge_key... yes checking lv2_external_ui.h usability... yes checking lv2_external_ui.h presence... yes checking for lv2_external_ui.h... yes checking for LV2 UI Idle interface... yes checking for LV2 UI Show interface... yes checking for LV2 UI Resize interface... yes checking lv2_programs.h usability... yes checking lv2_programs.h presence... yes checking for lv2_programs.h... yes checking lv2/lv2plug.in/ns/ext/patch/patch.h usability... yes checking lv2/lv2plug.in/ns/ext/patch/patch.h presence... yes checking for lv2/lv2plug.in/ns/ext/patch/patch.h... yes configure: creating ./config.status config.status: creating Makefile config.status: creating samplv1.spec config.status: creating src/src_core.pri config.status: creating src/src_ui.pri config.status: creating src/src_jack.pri config.status: creating src/src_lv2.pri config.status: creating src/config.h samplv1 0.9.7 Build target . . . . . . . . . . . . . . . . . . .: release JACK stand-alone build . . . . . . . . . . . . . .: yes JACK session support . . . . . . . . . . . . . . .: yes JACK MIDI support . . . . . . . . . . . . . . . .: yes ALSA MIDI support . . . . . . . . . . . . . . . .: yes LV2 plug-in build . . . . . . . . . . . . . . . .: yes LV2 plug-in X11 UI support . . . . . . . . . . .: yes LV2 plug-in External UI support . . . . . . . . .: yes LV2 plug-in UI Idle interface support . . . . . .: yes LV2 plug-in UI Show interface support . . . . . .: yes LV2 plug-in UI Resize interface support . . . . .: yes LV2 plug-in Programs support . . . . . . . . . . .: yes LV2 plug-in Patch support . . . . . . . . . . . .: yes OSC service support (liblo) . . . . . . . . . . .: yes NSM (Non Session Management) support . . . . . . .: yes Install prefix . . . . . . . . . . . . . . . . . .: /lib/lv2/samplv1.lv2 Now type 'make', followed by 'make install' as root.

    Если чего-то будет критически не хватать, вы поймёте это по тому, что на этом пункте остановился процесс и в конце стоит no. Однако предыдущие пункты так же нужно будет проанализировать, так как это поможет понять чего конкретно нужно установить. Понять будет не легко, так как здесь не фигурируют конкретные имена пакетов, которые нужны, но попробовать угадать можно. Приблизительно таким методом околонаучного тыка, опирающегося на небольшой опыт и смутные представления и был составлен вышеуказанный мной список необходимых пакетов. Мне его хватило, однако моя ОС не была девственно чиста перед сборкой, и часть необходимых пакетов уже могла быть мной установлена в неё ранее. У вас эта часть может отсутствовать, и именно её вам предстоит найти если всё пошло не по плану.

    Допустим всё остановилось на строчке "checking for gcc...". Пишите в консоли

    apt-cache search gcc (это поиск по репозиторию) и смотрите что там есть. Ищите либо полностью совпадающие по имени пакеты, либо пакеты с окончанием "-dev". Такие окончания обозначают, что этот пакет используется при сборке. Пакет gcc конечно нужен будет обычный, но например libasound2 нужен будет именно dev-овский, то есть libasound2-dev. При поиске можно использовать регулярные выражения, а ещё можно пользоваться менеджерами пакетов, если у вас есть любимые, возможно в них вам будет удобнее искать. Главное не впадайте в крайности и старайтесь найти пакеты доступные из стандартного репозитория иначе быть беде.

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

    Больше всего проблем у меня возникло с Qt. Просто с этой средой разработки связано оочень много пакетов и вариантов было соответственно очень много, к тому же для сборки почему-то понадобилось сразу две версии - и 4 и 5, но выбрана по умолчанию должна была быть именно 5-я версия. Вот именно для того, чтобы выбралась 5-я версия пришлось ставить пакет qt5-default, который потянул за собой ещё немало пакетов. Вот здесь упоминается, про более изящные решения выбора версии Qt, я пробовал такое:

    qtchooser -qt=5 и такое: export QT_SELECT=5 Но это мне совсем не помогло. (Подробнее об этом способе здесь.)

    Ещё больше проблем было с этим окаянным Qt, когда я повторно ставил этот же samplv1 по этой же схеме но уже на другом ПК с такой же Ubuntu Studio но с уже куда более "потасканной". Там отказывался вставать конкретно пакет qt5-default а конфигуратор сборки выдавал:

    checking for Qt library version >= 5.1... no; Qt 5.1 or greater is required Что было сущей брехнёй, так как у меня на этот момент стояла версия qt5-qmake не меньше 5.9 если не изменяет память. Естественно был виноват неустановившийся qt5-default, который не сделал текущей версией пятую. А он в свою очередь не хотел вставать по той причине, что не мог удовлетвориться целый ряд его зависимостей. Каким-то образом получилось так, что мне из репозитория пытались ставиться пакеты с "ubuntu1" в версии сборки, а требовалось "ubuntu2". К моей великой удаче, когда я ставил все эти зависимости первый раз на другой ОС я сохранял все установленные пакеты, вместе со всеми зависимостями, которые с ними устанавливались. Таким образом мне удалось удалить неподходящие сборки и поставить требуемые, однако ситуация так и осталась для меня загадкой. Если у кого-то ещё будут подобные проблемы и требуемые пакеты найти не сможете - пишите на почту, что внизу страницы.

    Так же стоит упомянуть, что установка полной версии Qt с официального сайта (это когда Qt ставится вместе с IDE, через красивый инсталлятор и занимает порядка пол гигабайта) ничем не помогла. Видимо компилятор не видел его. Я пробовал предпринять пару попыток зарегистрировать его в системе. Пробовал разные рецепты из интернета но видимо этого было недостаточно.

    Если конфигурирование сборки наконец-то дошло до

    "финальной заветной таблицы" samplv1 0.9.7 Build target . . . . . . . . . . . . . . . . . . .: release JACK stand-alone build . . . . . . . . . . . . . .: yes JACK session support . . . . . . . . . . . . . . .: yes JACK MIDI support . . . . . . . . . . . . . . . .: yes ALSA MIDI support . . . . . . . . . . . . . . . .: yes LV2 plug-in build . . . . . . . . . . . . . . . .: yes LV2 plug-in X11 UI support . . . . . . . . . . .: yes LV2 plug-in External UI support . . . . . . . . .: yes LV2 plug-in UI Idle interface support . . . . . .: yes LV2 plug-in UI Show interface support . . . . . .: yes LV2 plug-in UI Resize interface support . . . . .: yes LV2 plug-in Programs support . . . . . . . . . . .: yes LV2 plug-in Patch support . . . . . . . . . . . .: yes OSC service support (liblo) . . . . . . . . . . .: yes NSM (Non Session Management) support . . . . . . .: yes Install prefix . . . . . . . . . . . . . . . . . .: /lib/lv2/samplv1.lv2 Now type 'make', followed by 'make install' as root. но в конце какой-то из строчек стоит "no", значит всё-таки какой-то из пакетов недоустановлен или установлена не та версия. Пробуйте искать его исходя из того что написано в строчке. Например, если это строчка "ALSA MIDI support" то вам понадобится что-то вроде alsa-dev ну а если быть точным libasound2-dev. Так же можете подняться вверх по логу и поискать похожее название там, там так же скорее всего будет указано что этого компонента не хватает + может быть будет указано более конкретное название, лучше приближающее вас к целевому пакету.
  • sudo make installЭто должно занять минуты 2 на более менее современном ПК с хотя бы 2-мя ядрами, либо минут 15 на ПК постарше с одноядерным процессором.

    Вместо этого шага у вас может появиться желание собрать deb-пакет, но я пробовал и ничего не вышло. Собранная через checkinstall deb-ка после установки и копирования файлов плагина (следующий шаг) не работает. Плагин не находится Ardour'ом, так что всё печально. Эту версию samplv1 видимо всякий раз придётся собирать из исходников.

  • sudo cp -r /lib/lv2/samplv1.lv2/lib/lv2/samplv1.lv2 /usr/lib/lv2/ Это просто копирование файлов LV2-плагина непосредственно в каталог, плагины из которого видны Ardour. Не понимаю, почему разработчик это не включил в установочный скрипт сам, но так или иначе без этого шага Ardour не увидит samplv1 как LV2-плагин.

    Так же вынужден пресечь ваши попытки устанавливать этот плагин простым копированием скопированного в этом шаге каталога. Да это работает со многими другими LV2-плагинами но не с этим. Видимо в процессе установки происходит ещё что-то важное кроме генерации этих файлов, так что увы, избежать повторной компиляции samplv1 при переустановке не удастся. Чтобы облегчить вам задачу могу разве что посоветовать устанавливать его одним из первых после установки ОС. Это минимизирует проблемы с установкой зависимостей.

    PS: Я пробовал собирать deb-пакет из собранного и установленного пакета при помощи dpkg-repack. После копирования файлов плагина в каталог lv2 я получал плагин с неработающим звуком и не расцениваемый Ardour'ом как инструмент, то есть ту же самую проблему, что с samplv1 0.8.6 из стандартного репозитория Ubuntu Studio 18.04.1

А на этом всё! После этого шага вы должны получить рабочий LV2-плагин samplv1 0.9.7, который будет успешно находится Ardour 5.12, попадать в категорию "инструменты" и выдавать звук. Единственное что не удалось побороть - не будет работать добавление семпла перетягиванием. Добавляйте двойным кликом, часто используемые каталоги можно добавить в избранное (левое меню) перетягиванием.

Собиралось под:

  • ОС: Ubuntu Studio 18.04.1 64-bit
  • Ardour 5.12 (предустановленный)

Помогло? :)

Черкани Инфловии пару строк если нашёл здесь помощь. Можешь писать под любым постом в группе VK или по старинке на почту: inFlowia@netc.it :)

inFlowia Lab. не делает добро за деньги, но знать, что её труды кому-то помогают очень классно. Если тебе помогли - не поленись, всего пара слов: "Спасибо! Помогло :)" сделают дни инфловии светлее. ^^

Количество откликнувшихся: 8