Skip to content

Work environment

Michel Hidalgo edited this page Oct 5, 2022 · 1 revision

Setup

Make sure you have a recent version of Docker and nvidia-docker installed if so required by your Docker version.

Then run the following command:

wget https://raw.githubusercontent.com/osrf/lrauv/main/tools/setup/workspace.sh -O - | bash

to setup a local workspace. You may also run tools/setup/workspace.sh from a local https://github.com/osrf/lrauv clone, in which case the workspace will be setup using that repository as a basis instead of the upstream one. This is useful when developing and testing workspace tooling.

Layout

The resulting workspace layout is:

path/to/workspace/
    enter
    src/
        lrauv/
        ...

The enter script is the entrypoint to the workspace container, which holds all the necessary build dependencies.

Any number of packages may added to the workspace src tree. This is useful when prototyping integrations or mutating dependencies from source. For instance, one may clone, modify and re-build Gazebo Garden by importing distribution sources into the workspace:

vcs import src < src/lrauv/tools/setup/gz-garden.yaml

Inside vs. outside

You may enter the workspace (container) as many times you want, but the container lifetime is bound to the first entry. Once you exit the workspace (container) from that terminal, the container will be scrapped.

The workspace directory is mounted from the host filesystem into the container filesystem. This means sources may be added, modified, or removed while inside or outside the container transparently, and that said changes will outlive the container. This is not the case for any other modification outside the workspace directory. However, you may optionally persist them by exit'ing the container using Ctrl + P, Ctrl + Q. This will commit such changes back to the container image. Note this effectively abandons the standard build environment -- use wisely.