Skip to content
A colcon extension to create portable application bundles
Python Shell CMake C++
Branch: master
Clone or download
Latest commit c93862a Sep 12, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
colcon_bundle 0.0.17 (#108) Sep 12, 2019
integration Add features required for ROS2D (#91) Sep 1, 2019
test 0.0.17 (#108) Sep 12, 2019
.dockerignore Fix issues with `apt` installer on 18.04 (#56) Apr 16, 2019
.gitignore Initial commit Oct 9, 2018
.travis.yml Add features required for ROS2D (#91) Sep 1, 2019
BUNDLE_FORMAT.md Minor updates to BUNDLE_FORMAT.md Jan 22, 2019
CONTRIBUTING.md Add CONTRIBUTING.md (#66) May 4, 2019
DEVELOPMENT.md Split up bundle verb code and add tests (#72) May 23, 2019
Dockerfile.backwards Split up bundle verb code and add tests (#72) May 23, 2019
Dockerfile.dashing Update ROS2 test to use colcon-ros-bundle master (#104) Sep 4, 2019
Dockerfile.double Fix error when bundling multiple times (#84) Jun 28, 2019
Dockerfile.kinetic Fix issues with `apt` installer on 18.04 (#56) Apr 16, 2019
Dockerfile.melodic Add OSRF repo for Bionic (#94) Jul 25, 2019
LICENSE Initial commit Oct 9, 2018
MANIFEST.in Initial commit Oct 9, 2018
NOTICE Add support for bundle format v2 and some optimizations for bundle ti… Jan 7, 2019
README.md 0.0.14 (#81) Jun 19, 2019
requirements_devel.txt Use only a single mock framework (#90) Jul 23, 2019
run_integration_test.sh Add features required for ROS2D (#91) Sep 1, 2019
run_ros2_integration_test.sh Add features required for ROS2D (#91) Sep 1, 2019
setup.cfg Use only a single mock framework (#90) Jul 23, 2019
setup.py Initial commit Oct 9, 2018
stdeb.cfg Update stdeb.cfg with correct dependencies Oct 19, 2018
tox.ini Fix issues with `apt` installer on 18.04 (#56) Apr 16, 2019

README.md

colcon-bundle Build Status

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 colcon-ros-bundle package.

Installation

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):

sudo apt-get install python3-apt python3-pip
sudo pip3 install -U setuptools pip
sudo pip3 install colcon-ros-bundle

Building a bundle with colcon bundle

To build your ROS workspace into a bundle execute:

colcon bundle

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 bundle/output.tar

In Docker

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.

Dockerfile

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

Bundle Usage

When 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:

  1. Extract the main archive.
  2. Extract metadata.tar.gz and look at overlays.json.
  3. Extract each overlay listed in overlays.json.
  4. In order execute BUNDLE_CURRENT_PREFIX=<path to extracted overlay> source <path to extracted overlay>/setup.sh
  5. The bundle is now activated in your shell's environment.

Package Blacklist

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 --apt-package-blacklist argument.

colcon-bundle Development

See DEVELOPMENT.md

You can’t perform that action at this time.