diff --git a/ansible/roles/rmw_implementation/tasks/main.yaml b/ansible/roles/rmw_implementation/tasks/main.yaml index bdbb7fa8a01..e37b94c3146 100644 --- a/ansible/roles/rmw_implementation/tasks/main.yaml +++ b/ansible/roles/rmw_implementation/tasks/main.yaml @@ -3,12 +3,25 @@ register: rmw_implementation__dash_case_rmw_implementation changed_when: false +- name: Hold check of ros-{{ rosdistro + '-' + rmw_implementation__dash_case_rmw_implementation.stdout }} + ansible.builtin.command: apt-mark showhold + register: held_ros_packages + changed_when: false + - name: Install ros-{{ rosdistro + '-' + rmw_implementation__dash_case_rmw_implementation.stdout }} become: true ansible.builtin.apt: name: ros-{{ rosdistro }}-{{ rmw_implementation__dash_case_rmw_implementation.stdout }} state: latest update_cache: true + when: "'ros-' + rosdistro + '-' + rmw_implementation__dash_case_rmw_implementation.stdout not in held_ros_packages.stdout" + register: install_result + failed_when: false + +- name: Display warning if ROS 2 RMW package is held + ansible.builtin.debug: + msg: ROS 2 RMW package 'ros-{{ rosdistro + '-' + rmw_implementation__dash_case_rmw_implementation.stdout }}' is apt-mark hold. Skipping installation. + when: not install_result.changed - name: Add RMW_IMPLEMENTATION to .bashrc ansible.builtin.lineinfile: