diff --git a/dockerfiles/devenv.Dockerfile b/dockerfiles/devenv.Dockerfile index 8d3dde864e2f281809f4a6573b32d244b5b6e3e2..46e5559d74e704a8178070fa4c30af204bcf7a0e 100644 --- a/dockerfiles/devenv.Dockerfile +++ b/dockerfiles/devenv.Dockerfile @@ -16,8 +16,9 @@ ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 -# Configure apt and install packages -RUN apt-get update && apt-get -y install --no-install-recommends \ +# Configure apt and install ubuntu-base packages +RUN apt-get update && \ + apt-get -y install --no-install-recommends \ apt-transport-https \ ca-certificates \ curl \ @@ -42,48 +43,29 @@ RUN apt-get update && apt-get -y install --no-install-recommends \ nano \ net-tools \ openssh-client \ - terminator \ trash-cli \ valgrind \ xterm \ wget \ zsh -RUN if [ "${ROS_DISTRO}" != "humble" ]; \ - then \ - apt-get -y install \ - ros-${ROS_DISTRO}-catkin \ - ros-${ROS_DISTRO}-plotjuggler \ - ros-${ROS_DISTRO}-plotjuggler-ros \ - ros-${ROS_DISTRO}-rosmon \ - ros-${ROS_DISTRO}-rqt-controller-manager \ - ros-${ROS_DISTRO}-rqt-joint-trajectory-controller; \ - fi +# ZSH tools based on ubuntu version +WORKDIR /tmp/srcs/ +COPY /extra_libs/* ./ -RUN if [ "${ROS_DISTRO}" = "noetic" ]; \ - then \ - apt-get -y install \ - ipython3 \ - python-is-python3 \ - python3-catkin-tools \ - python3-click \ - python3-numpy \ - python3-osrf-pycommon \ - python3-vcstool \ - # clang - clangd liblldb-dev libllvm-ocaml-dev python3-clang; \ - elif [ "${ROS_DISTRO}" = "melodic" ]; \ +RUN if [ "${ROS_DISTRO}" = "melodic" ]; \ then \ - apt-get -y install \ - ipython \ - python-catkin-tools \ - python-pip \ - python-osrf-pycommon\ - python-vcstool; \ + dpkg -i *.deb; \ else \ - echo "Not supported version"; \ + dpkg -i bat*.deb; \ + dpkg -i lsd*.deb; \ + dpkg -i ripgrep*.deb; \ fi +RUN rm -rf * + +RUN apt-get --reinstall install -y libnotify-bin notify-osd + # Configure system to look for debian packages in the Artifactory repository COPY auth.conf /etc/apt/auth.conf.d/tecnalia.conf @@ -105,146 +87,58 @@ RUN sh -c "echo 'yaml https://git.code.tecnalia.com/tecnalia_robotics-public/git # containerd.io \ # docker-compose-plugin -# Install pip3 and packages -RUN apt-get install -y \ - python3-pip \ - && pip3 install sqlite_utils \ - && pip3 install conan==1.59 \ - && conan config set general.revisions_enabled=1 \ - && conan profile new default --detect > /dev/null \ - && conan profile update settings.compiler=gcc default - -# Install node for UIs -RUN curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash \ - && apt-get install -y nodejs && npm -g install yarn - -# ROS 1 WS dependencies -RUN if [ "${ROS_DISTRO}" != "humble" ]; \ +# Install python - python3 packages based on ubuntu version +RUN if [ "${ROS_DISTRO}" = "melodic" ]; \ then \ - apt-get -y install \ - cython \ - libceres-dev \ - libcomedi-dev \ - libglfw3-dev \ - libmodbus-dev \ - python-numpy \ - python3-mock \ - socat \ - ros-${ROS_DISTRO}-ackermann-msgs \ - ros-${ROS_DISTRO}-amcl \ - ros-${ROS_DISTRO}-cartesian-trajectory-controller \ - ros-${ROS_DISTRO}-chomp-motion-planner \ - ros-${ROS_DISTRO}-collada-urdf \ - ros-${ROS_DISTRO}-effort-controllers \ - ros-${ROS_DISTRO}-force-torque-sensor-controller \ - ros-${ROS_DISTRO}-gmapping \ - ros-${ROS_DISTRO}-hector-gazebo-plugins \ - ros-${ROS_DISTRO}-hector-mapping \ - ros-${ROS_DISTRO}-imu-complementary-filter \ - ros-${ROS_DISTRO}-imu-tools \ - ros-${ROS_DISTRO}-industrial-core \ - ros-${ROS_DISTRO}-industrial-robot-simulator \ - ros-${ROS_DISTRO}-industrial-robot-status-controller \ - ros-${ROS_DISTRO}-industrial-robot-status-interface \ - ros-${ROS_DISTRO}-interactive-marker-twist-server \ - ros-${ROS_DISTRO}-joint-trajectory-controller \ - ros-${ROS_DISTRO}-joy \ - ros-${ROS_DISTRO}-lms1xx \ - ros-${ROS_DISTRO}-map-server \ - ros-${ROS_DISTRO}-mavros-msgs \ - ros-${ROS_DISTRO}-move-base \ - ros-${ROS_DISTRO}-moveit-commander \ - ros-${ROS_DISTRO}-moveit-fake-controller-manager \ - ros-${ROS_DISTRO}-moveit-planners-chomp \ - ros-${ROS_DISTRO}-moveit-planners-ompl \ - ros-${ROS_DISTRO}-moveit-resources \ - ros-${ROS_DISTRO}-moveit-ros-benchmarks \ - ros-${ROS_DISTRO}-moveit-ros-control-interface \ - ros-${ROS_DISTRO}-moveit-ros-move-group \ - ros-${ROS_DISTRO}-moveit-ros-planning-interface \ - ros-${ROS_DISTRO}-moveit-ros-visualization \ - ros-${ROS_DISTRO}-moveit-ros-warehouse \ - ros-${ROS_DISTRO}-moveit-setup-assistant \ - ros-${ROS_DISTRO}-moveit-simple-controller-manager \ - ros-${ROS_DISTRO}-moveit-visual-tools \ - ros-${ROS_DISTRO}-navigation \ - ros-${ROS_DISTRO}-pass-through-controllers \ - ros-${ROS_DISTRO}-pilz-industrial-motion \ - ros-${ROS_DISTRO}-rc-visard \ - ros-${ROS_DISTRO}-realsense2-camera \ - ros-${ROS_DISTRO}-realsense2-description \ - ros-${ROS_DISTRO}-robot-localization \ - ros-${ROS_DISTRO}-ros-control \ - ros-${ROS_DISTRO}-ros-control-boilerplate \ - ros-${ROS_DISTRO}-ros-controllers \ - ros-${ROS_DISTRO}-ros-industrial-cmake-boilerplate \ - ros-${ROS_DISTRO}-rosbridge-server \ - ros-${ROS_DISTRO}-scaled-joint-trajectory-controller \ - ros-${ROS_DISTRO}-serial \ - ros-${ROS_DISTRO}-spacenav-node \ - ros-${ROS_DISTRO}-speed-scaling-interface \ - ros-${ROS_DISTRO}-speed-scaling-state-controller \ - ros-${ROS_DISTRO}-teb-local-planner \ - ros-${ROS_DISTRO}-trac-ik-kinematics-plugin \ - ros-${ROS_DISTRO}-twist-controller \ - ros-${ROS_DISTRO}-twist-mux \ - ros-${ROS_DISTRO}-ur-client-library \ - ros-${ROS_DISTRO}-ur-msgs \ - ros-${ROS_DISTRO}-usb-cam \ - ros-${ROS_DISTRO}-velocity-controllers \ - ros-${ROS_DISTRO}-warehouse-ros-mongo; \ - # ROS2 Humble dpendencies - else \ - apt-get -y install \ - ros-${ROS_DISTRO}-moveit \ - ros-${ROS_DISTRO}-ros2-control; \ + apt-get update && \ + apt-get -y install \ + ipython \ + python-catkin-tools \ + python-pip \ + python-osrf-pycommon\ + python-vcstool; \ + else\ + apt-get update && \ + apt-get -y install \ + ipython3 \ + python-is-python3 \ + python3-click \ + python3-numpy \ + python3-osrf-pycommon \ + python3-vcstool \ + python3-pip \ + # clang + clangd liblldb-dev libllvm-ocaml-dev python3-clang; \ fi -RUN if [ "${ROS_DISTRO}" = "noetic" ]; \ - then \ - apt-get -y install \ - ipython3 \ - python-is-python3 \ - python3-catkin-tools \ - python3-click \ - ros-${ROS_DISTRO}-libpcan \ - python3-numpy \ - python3-tk \ - python3-osrf-pycommon; \ - elif [ "${ROS_DISTRO}" = "melodic" ]; \ +# Install ROS 1 tools +RUN if [ "${ROS_DISTRO}" != "humble" ]; \ then \ - apt-get -y install \ - ros-${ROS_DISTRO}-ar-track-alvar \ - python-mock \ - python-funcsigs \ - python-sqlalchemy \ - python3-rospkg-modules \ - python3-yaml; \ - else \ - echo "Not supported version"; \ + apt-get update && \ + apt-get -y install \ + ros-${ROS_DISTRO}-catkin \ + ros-${ROS_DISTRO}-plotjuggler \ + ros-${ROS_DISTRO}-plotjuggler-ros \ + ros-${ROS_DISTRO}-rosmon \ + ros-${ROS_DISTRO}-rqt-controller-manager \ + ros-${ROS_DISTRO}-rqt-joint-trajectory-controller; \ fi -WORKDIR /tmp/srcs/ -COPY /extra_libs/* ./ +# Copy the requirements.txt file into the container +WORKDIR /tmp/dependencies/ +COPY /ws_dependencies/* ./ -RUN if [ "${ROS_DISTRO}" = "noetic" ]; \ - then \ - dpkg -i bat*.deb; \ - dpkg -i lsd*.deb; \ - dpkg -i ripgrep*.deb; \ - elif [ "${ROS_DISTRO}" = "melodic" ]; \ +# Install the packages listed in ${ROS_DISTRO}_requirements.txt +RUN if [ -f "${ROS_DISTRO}_requirements.txt" ]; \ then \ - dpkg -i *.deb; \ - else \ - echo "Not supported version"; \ + apt-get update && \ + apt-get install -y $(cat ${ROS_DISTRO}_requirements.txt);\ fi RUN rm -rf * -RUN apt-get --reinstall install -y libnotify-bin notify-osd - # Update this date to re-run the image final update -LABEL image.date=24-08-2023 +LABEL image.date=17-10-2023 # Update final image RUN apt-get update \