Software packaging on VOXL
Table of contents
Packaging for VOXL 2 (Debian packages)
VOXL 2 and VOXL 2 Mini run Ubuntu, so software is packaged as standard Debian packages (.deb) managed by apt/dpkg — the opkg/ipk content below applies only to the original VOXL.
Every open-source VOXL SDK project follows the same packaging pattern, which you can copy for your own software:
- Build in the
voxl-crossdocker image (see build environments) with the project’sbuild.sh. make_package.shassembles the deb: compiled artifacts plus thepkg/control/directory (package name, version, dependencies), anyservices/*.servicesystemd units, andscripts/installed to/usr/bin.deploy_to_voxl.shpushes and installs the freshly built deb over ADB or ssh for quick iteration.
Any public SDK repo works as a template — for example voxl-streamer or libqrb5165-io: copy the pkg/ directory, make_package.sh, and deploy_to_voxl.sh, and adapt the control file to your project.
Overview
VOXL runs a variant of Linux created by ModalAI using the Yocto build system (Jethro version). This environment has a simple package management system known as opkg. This is very useful for managing the software on VOXL but it does not have access to an external package feed like other more full featured package managers (e.g. apt). This means that the VOXL user must install packages and deal with all of the dependencies without the direct support of the package manager.
Creating packages
There are a couple of ways to create your own ipk packages.
- When building software on target directly, in the voxl-emulator, or in a cross compile environment the relevant artifacts can be archived into an ipk using one of our example packaging scripts. The opkg format is fairly straightforward to understand and creating your own utility to handle this task is not that much effort. One example to help you get started is located in the ModalAI project voxl-ffmpeg. Look at the make_package.sh bash shell script and the ipk subdirectory.
- You can use Yocto to create a package. This is useful if a Yocto build recipe or layer already exists for the desired package. You do not need the full Yocto environment that ModalAI uses to create the system image. An example of this approach is in the poky project. This is forked from the main Yocto Poky repository and has VOXL specific documentation / configuration. This is a nice way to build a package because it will also build all of the package dependencies.
Docker
Running Ubuntu or other Linux distro in a Docker on target is a great way to get access to a more full featured package management system such as apt. Documentation on this approach is located here. Please note that there are some limitations that are listed at the end of that document.