From fb5115986cf2f4c42550560bfb4728e004a96804 Mon Sep 17 00:00:00 2001 From: Naophis Date: Fri, 5 Apr 2024 19:03:52 +0900 Subject: [PATCH] feat: escape install task if the specific package is held (#4585) * feat: escape install task if the specific package is held Signed-off-by: Naophis * feat: use FQCN Signed-off-by: Naophis * feat: Jinja templates should only be at the end of 'name' Signed-off-by: Naophis * fix: change literal Signed-off-by: Naophis * doc: fix typo Signed-off-by: Naophis --------- Signed-off-by: Naophis --- ansible/roles/ros2/README.md | 2 ++ ansible/roles/ros2/tasks/main.yaml | 13 +++++++++++++ 2 files changed, 15 insertions(+) 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: