|
ARG FROM_IMAGE=ros:melodic |
|
|
|
# multi-stage for caching |
|
FROM $FROM_IMAGE AS cache |
|
|
|
# install bootstrap tools |
|
RUN apt-get update && apt-get install --no-install-recommends -y \ |
|
python3-vcstool \ |
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
# copy overlay source |
|
ENV OVERLAY_WS /opt/overlay_ws |
|
RUN mkdir -p $OVERLAY_WS/src |
|
WORKDIR $OVERLAY_WS |
|
COPY ./realsense.repos ./ |
|
RUN vcs import src < realsense.repos |
|
|
|
# copy manifests for caching |
|
WORKDIR /opt |
|
RUN find ./ -name "package.xml" | \ |
|
xargs cp --parents -t /tmp |
|
# && find ./ -name "COLCON_IGNORE" | \ |
|
# xargs cp --parents -t /tmp |
|
|
|
# multi-stage for building |
|
FROM $FROM_IMAGE AS build |
|
|
|
# install bootstrap tools |
|
RUN apt-get update && apt-get install --no-install-recommends -y \ |
|
git \ |
|
python3-colcon-common-extensions \ |
|
python3-colcon-mixin \ |
|
python3-vcstool \ |
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
# setup colcon mixin and metadata |
|
RUN colcon mixin add default \ |
|
https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml && \ |
|
colcon mixin update && \ |
|
colcon metadata add default \ |
|
https://raw.githubusercontent.com/colcon/colcon-metadata-repository/master/index.yaml && \ |
|
colcon metadata update |
|
|
|
# setup keys |
|
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 6F3EFCDE |
|
|
|
# setup sources.list |
|
RUN echo "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" > /etc/apt/sources.list.d/realsense-public.list |
|
|
|
# install realsense sdk dependencies |
|
RUN apt-get update && apt-get install -y \ |
|
librealsense2-dbg \ |
|
librealsense2-dev \ |
|
librealsense2-dkms \ |
|
librealsense2-utils \ |
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
# install CI dependencies |
|
RUN apt-get update && apt-get install -q -y \ |
|
ccache \ |
|
lcov \ |
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
# copy overlay manifests |
|
ENV OVERLAY_WS /opt/overlay_ws |
|
COPY --from=cache /tmp/overlay_ws $OVERLAY_WS |
|
WORKDIR $OVERLAY_WS |
|
|
|
# install overlay dependencies |
|
RUN . /opt/ros/$ROS_DISTRO/setup.sh && \ |
|
apt-get update && rosdep install -q -y \ |
|
--from-paths \ |
|
src \ |
|
--ignore-src \ |
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
# copy overlay source |
|
COPY --from=cache $OVERLAY_WS ./ |
|
|
|
# build overlay source |
|
ARG OVERLAY_MIXINS="release ccache" |
|
RUN . /opt/ros/$ROS_DISTRO/setup.sh && \ |
|
colcon build \ |
|
--symlink-install \ |
|
--mixin $OVERLAY_MIXINS |
|
# --event-handlers console_direct+ |
|
|
|
# source overlay from entrypoint |
|
RUN sed --in-place \ |
|
's|^source .*|source "$OVERLAY_WS/install/setup.bash"|' \ |
|
/ros_entrypoint.sh |