This code is in active development and should not be considered stable.
This package is a plugin to colcon-core. It provides functionality to bundle a built workspace. A bundle is a portable environment which can be moved to a different linux system and executed as if the contents of the bundle were installed locally.
Currently, ROS Kinetic is supported by installing the
In order to use
colcon-bundle execute the following (if you do not have root privileges you will need to run the
pip3 commands with
sudo apt-get install python3-apt python3-pip sudo pip3 install -U setuptools pip sudo pip3 install colcon-ros-bundle
Building a bundle with
To build your ROS workspace into a bundle execute:
This will parse your dependencies, download apt and pip dependencies, install the dependencies into the bundle, and
then install your built workspace into the bundle. The final output is located at
The simplest way to get up and running without affecting your local development environment is to use Docker.
The contents of an example Dockerfile are below. Create the Dockerfile in your workspace and then execute:
docker build -t colcon-docker .
Once your docker image is built you can then run it with your local workspace mounted into the container by executing
docker run -it -v <PATH_TO_WORKSPACE>:/workspace colcon-docker bash. Once inside the docker container
/workspace will be bound to your local directory.
FROM ros:kinetic RUN apt-get update && apt-get install -y python3-pip python3-apt RUN pip3 install -U setuptools pip RUN pip3 install colcon-ros-bundle
colcon bundle is executed in a ROS workspace it will create
bundle/output.tar that follows the specification located here.
A bundle is an entire application. In order to execute inside the bundle context follow the following steps:
- Extract the main archive.
metadata.tar.gzand look at
- Extract each overlay listed in
- In order execute
BUNDLE_CURRENT_PREFIX=<path to extracted overlay> source <path to extracted overlay>/setup.sh
- The bundle is now activated in your shell's environment.
When we create the bundle we choose not to include certain packages that are included by default in most
Linux distributions. To create this blacklist for Ubuntu
apt list --installed | sed 's/^\(.*\)\/.*$/\1/' was run on a base ubuntu:xenial container.
You can override this blacklist by using the