Home

Awesome

mod-plugin-builder

This repository contains the toolchain and libraries used in MOD Devices.

It allows developers to locally build plugins for MOD devices and also prepare for Cloud builds.<br/> Currently this builder only supports Linux hosts.<br/> If you're not running Linux see this HowTo.

There are several dependencies:

If you're running a debian based system you can install all dependencies by running:

sudo apt install acl bc curl cvs git mercurial rsync subversion wget \
bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip \
automake binutils build-essential cpio libtool libncurses-dev pkg-config python-is-python3 libtool-bin

Note that libtool-bin and python-is-python3 are not available on old distros.<br/> If that is the case for you, simply skip these packages but install everything else.

To begin simply run:<br/>

./bootstrap.sh <platform>

Where platform is either modduo, modduox, moddwarf or x86_64.

The script will build the toolchain (ct-ng) and buildroot.<br/> Depending on your machine it can take more than 1 hour.<br/>

All files will be installed in ~/mod-workdir.<br/> Set the 'WORKDIR' environment variable before bootstraping if you wish to change that.

After the bootstrap process is complete, you can start building plugins.<br/> See the 'plugins/package' folder in this repository for some examples.

Building plugins

To build a plugin, run:<br/>

./build <platform> <plugin-package>

Where platform is either modduo, modduox, moddwarf or x86_64 and plugin-package is a folder inside the plugins/package directory.

If everything goes well, you will have the final plugin bundle in ~/mod-workdir/<platform>/plugins.<br/>

To push the build plugin onto a MOD Device, run:<br/>

./build <platform> <plugin-package>-publish

Or if you feel like doing it manually, you can run something like:

cd /path/to/mod-workdir/plugins # adjust as needed
tar czf bundle1.lv2 bundle2.lv2 | base64 | curl -F 'package=@-' http://192.168.51.1/sdk/install; echo

For cleaning a build directory, run:<br/>

./build <platform> <plugin-package>-dirclean

NOTE: If you want to build the provided plugins in this repository you'll need to enable git submodules, like this:

git submodule init
git submodule update

To cleanup the build of a plugin, run:<br/> ./build <platform> <plugin-package>-dirclean

There's a more detailed HowTo explaining how to compile an LV2 Plugin using mod-plugin-builder.

Validating plugins (experimental)

It's possible to use the mod-plugin-builder to test a few aspects of a plugin. It's important that the plugin has been built successfully before running this test.

Firstly, the test can be used for ttl syntax validation. This is done through lv2/sord_validate. These tools need to be installed on the system. On a Debian based system these can be installed by running:<br/>

sudo apt install lilv-utils sordi

Secondly, this test can also be used for runtime tests for all x86_64 builds.

To do the test, run:<br/>

./validate <platform> <plugin-package>

The runtime test (for x86_64 plugins) can also be combined with valgrind for detecting memory issues.

For running this test do:<br/>

VALGRIND=1 ./validate <platform> <plugin-package>

Note about Camomile

The Camomile integration is under testing phase. Check the PR notes for more details.