diff --git a/ansible/roles/ros2/README.md b/ansible/roles/ros2/README.md index 54fb39e0a94..07fab9500b8 100644 --- a/ansible/roles/ros2/README.md +++ b/ansible/roles/ros2/README.md @@ -4,6 +4,8 @@ This role installs [ROS 2](http://www.ros2.org/) following [this page](https://d Additional steps may be needed depending on the `rosdistro` you choose. +To prevent the update of the ROS 2 packages, if ros-`distro`-desktop is held, the installation process for the packages will be skipped and output warning. + ```bash diff --git a/ansible/roles/ros2/tasks/main.yaml b/ansible/roles/ros2/tasks/main.yaml index ab77bb632c1..9ad8bb165f9 100644 --- a/ansible/roles/ros2/tasks/main.yaml +++ b/ansible/roles/ros2/tasks/main.yaml @@ -34,12 +34,25 @@ state: present update_cache: true +- name: Hold check of ros-{{ rosdistro + '-' + ros2_installation_type }} + ansible.builtin.command: apt-mark showhold + register: held_ros_packages + changed_when: false + - name: Install ros-{{ rosdistro + '-' + ros2_installation_type }} become: true ansible.builtin.apt: name: ros-{{ rosdistro }}-{{ ros2_installation_type }} state: latest update_cache: true + when: "'ros-' + rosdistro + '-' + ros2_installation_type not in held_ros_packages.stdout" + register: install_result + failed_when: false + +- name: Display warning if ROS 2 package is held + ansible.builtin.debug: + msg: ROS package 'ros-{{ rosdistro + '-' + ros2_installation_type }}' is apt-mark hold. Skipping installation. + when: not install_result.changed - name: Add PATH to .bashrc ansible.builtin.lineinfile: