Background
One of our main goals at Open Ocean Software will be to better support the flow of code from Git to end user operations.
One aspect of this is automated binary builds, such as Debian packages. The MOOS-IvP community has expressed interest in providing such packages to the public, and I think this would be a great testing ground for how to do this well, decide on a good separation of labor between member project and Open Ocean, and as much as possible reuse this for future member projects with similar needs.
Existing MOOS-IvP packages on GobySoft
I build .deb packages for the active LTS releases of Ubuntu and the oldstable/stable Debian releases. I build for amd64 (64-bit x86), armhf (32-bit ARM), arm64 (64-bit ARM) architectures, which supports all the computer hardware that I currently encounter. ARM is currently cross-built on amd64.
Using the existing packages (packages.gobysoft.org)
I’ve attached a script (install_gobysoft_ubuntu_repo.sh) that will install (on Ubuntu) the correct GPG signing key (to /usr/share/keyrings/gobysoft-archive-keyring.gpg) and the apt sources to /etc/apt/sources.list.d/gobysoft_release.list.
After running this once you can install the desired packages (some or all of):
sudo apt install {packages}
where `{packages}`:
MOOS
- moosdb10 - MOOSDB binary
- libmoos10-dev - MOOS libraries (dev: headers and SONAME symlinks)
- libmoos10 - MOOS libraries (runtime)
IvP:
- moos-ivp-apps - The MOOS-IvP multi-objective decision engine (pHelmIvP) and related tools for autonomous marine vehicles, except GUI applications.
- moos-ivp-gui - Graphical tools for the MOOS-IvP multi-objective decision engine.
- libmoos-ivp-dev - Developers’ package for the libraries included with the MOOS-IvP multi-objective decision engine (and related tools) for autonomous marine vehicles.
- libmoos-ivp - Libraries included with the MOOS-IvP multi-objective decision engine (and related tools) for autonomous marine vehicles.
moos-ivp-apps and moos-ivp-gui are split out so that headless systems (e.g., vehicles) that don’t need the FLTK dependency don’t have to install it.
*-dev libraries are split out in typical Debian format so that runtime systems don’t install all the headers and non-SONAME library symlinks, but downstream developers using MOOS-IvP projects can install them.
How these packages are built
I build the Core MOOS and MOOS-IvP packages separately, as I still consider these to be independent projects (something we should resolve as MOOS in MOOS-IvP is increasingly an incompatible fork):
Debian sources repos:
- Core MOOS: GitHub - GobySoft/core-moos-debian: Debian packages for core MOOS · GitHub
- [MOOS-]IvP: GitHub - GobySoft/ivp-debian · GitHub
These packages are built automatically on changes to the above git repos using CircleCI (.circleci/config.yml) in both repos.
These CircleCI builds use a clean Docker container to perform the build (using dpkg-buildpackage ultimately). The Docker images are built from my repo here:
Other resources
-
aptly - Overview (packages.gobysoft.org uses mini-dinstall but this tool looks potentially quite helpful).