From 184ee0289ae1011216abb498b13f00b293b7eec5 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Thu, 22 Feb 2024 09:21:31 +0000 Subject: [PATCH 01/17] Added plotjuggler fix Signed-off-by: Aditya Pande --- .../ros2/resources/ros2bzl/scraping/metadata.py | 10 ++++++++++ ros2_example_bazel_installed/WORKSPACE | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py index 35993f6e..215cc00a 100644 --- a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py +++ b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py @@ -1,10 +1,19 @@ import os import xml.etree.ElementTree as ET +def remove_ros_1_tags(root): + for element in root: + if element.attrib.get('condition') == '$ROS_VERSION == 1': + root.remove(element) + else: + remove_ros_1_tags(element) def parse_package_xml(path_to_package_xml): tree = ET.parse(path_to_package_xml) + if tree.find('./name').text != "plotjuggler": + remove_ros_1_tags(tree.getroot()) + depends = set([ tag.text for tag in tree.findall('./depend') ]) @@ -20,6 +29,7 @@ def parse_package_xml(path_to_package_xml): member_of_groups = set([ tag.text for tag in tree.findall('./member_of_group') ]) + build_type = tree.find('./export/build_type').text return dict( diff --git a/ros2_example_bazel_installed/WORKSPACE b/ros2_example_bazel_installed/WORKSPACE index eb32431b..c9290f1e 100644 --- a/ros2_example_bazel_installed/WORKSPACE +++ b/ros2_example_bazel_installed/WORKSPACE @@ -80,6 +80,10 @@ ROS2_PACKAGES = [ # change implementations "rmw_cyclonedds_cpp", # "rmw_fastrtps_cpp", +] + [ + # Extra packages + "plotjuggler", + "plotjuggler_ros", ] RESOLVED_PREFIX = ( From 2ba50d9eeb92c680e66bc3383c852495cce86c48 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Thu, 22 Feb 2024 09:27:36 +0000 Subject: [PATCH 02/17] Minor cleanup Signed-off-by: Aditya Pande --- bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py | 1 - ros2_example_bazel_installed/setup/install_prereqs.sh | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py index 215cc00a..7a958aca 100644 --- a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py +++ b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py @@ -29,7 +29,6 @@ def parse_package_xml(path_to_package_xml): member_of_groups = set([ tag.text for tag in tree.findall('./member_of_group') ]) - build_type = tree.find('./export/build_type').text return dict( diff --git a/ros2_example_bazel_installed/setup/install_prereqs.sh b/ros2_example_bazel_installed/setup/install_prereqs.sh index 2ab1b9d3..96c2ddc1 100755 --- a/ros2_example_bazel_installed/setup/install_prereqs.sh +++ b/ros2_example_bazel_installed/setup/install_prereqs.sh @@ -85,6 +85,7 @@ if [[ -z "${ROS2_DISTRO_PREFIX:-}" ]]; then apt install ros-humble-desktop apt install ros-humble-rmw-cyclonedds-cpp apt install ros-dev-tools + apt install ros-humble-plotjuggler-ros fi # Install Python dependencies From 87110bda2ea6c6bddbeccb56d71f01f546c1dea6 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Fri, 23 Feb 2024 00:35:06 +0000 Subject: [PATCH 03/17] Fixed elemet deletion issues Signed-off-by: Aditya Pande --- .../resources/ros2bzl/scraping/metadata.py | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py index 7a958aca..582940a5 100644 --- a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py +++ b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py @@ -1,18 +1,24 @@ import os import xml.etree.ElementTree as ET -def remove_ros_1_tags(root): - for element in root: - if element.attrib.get('condition') == '$ROS_VERSION == 1': - root.remove(element) - else: - remove_ros_1_tags(element) +# Remove elemets based on the value contained in the +# 'condition' attribute +def remove_elements(root, condition_value): + elements_to_remove = [] + + for parent in root.iter(): + for child in list(parent): + if child.get('condition') == condition_value : + elements_to_remove.append((parent, child)) + + for parent, child in elements_to_remove: + parent.remove(child) def parse_package_xml(path_to_package_xml): tree = ET.parse(path_to_package_xml) if tree.find('./name').text != "plotjuggler": - remove_ros_1_tags(tree.getroot()) + remove_elements(tree.getroot(), "$ROS_VERSION == 1") depends = set([ tag.text for tag in tree.findall('./depend') From ad0bc257099acd7b3614e7f0300d9a9e3529a410 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Tue, 27 Feb 2024 21:23:16 +0000 Subject: [PATCH 04/17] Fix rosdeps Signed-off-by: Aditya Pande --- .../ros2/resources/ros2bzl/scraping/metadata.py | 4 ++-- .../setup/prereq-rosdep-keys.txt | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py index 582940a5..2fe64970 100644 --- a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py +++ b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py @@ -17,8 +17,8 @@ def remove_elements(root, condition_value): def parse_package_xml(path_to_package_xml): tree = ET.parse(path_to_package_xml) - if tree.find('./name').text != "plotjuggler": - remove_elements(tree.getroot(), "$ROS_VERSION == 1") + #if tree.find('./name').text != "plotjuggler": + remove_elements(tree.getroot(), "$ROS_VERSION == 1") depends = set([ tag.text for tag in tree.findall('./depend') diff --git a/ros2_example_bazel_installed/setup/prereq-rosdep-keys.txt b/ros2_example_bazel_installed/setup/prereq-rosdep-keys.txt index 895c17b0..5d747c42 100644 --- a/ros2_example_bazel_installed/setup/prereq-rosdep-keys.txt +++ b/ros2_example_bazel_installed/setup/prereq-rosdep-keys.txt @@ -1,4 +1,6 @@ assimp +binutils +boost bullet cmake cppcheck @@ -20,16 +22,23 @@ libpcl-all-dev libqt5-core libqt5-gui libqt5-opengl +libqt5-opengl-dev libqt5-svg +libqt5-svg-dev +libqt5-websockets-dev libqt5-widgets +libqt5x11extras5-dev libsqlite3-dev libx11-dev libxaw libxml2-utils libxrandr +libzmq3-dev libzstd-dev +lz4 opengl pkg-config +protobuf-dev pybind11-dev pydocstyle python3 From d23da807124746edefc898b2a68d746e0a4fc19b Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Tue, 27 Feb 2024 21:29:15 +0000 Subject: [PATCH 05/17] Exception to plotjuggler Signed-off-by: Aditya Pande --- bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py index 2fe64970..582940a5 100644 --- a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py +++ b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py @@ -17,8 +17,8 @@ def remove_elements(root, condition_value): def parse_package_xml(path_to_package_xml): tree = ET.parse(path_to_package_xml) - #if tree.find('./name').text != "plotjuggler": - remove_elements(tree.getroot(), "$ROS_VERSION == 1") + if tree.find('./name').text != "plotjuggler": + remove_elements(tree.getroot(), "$ROS_VERSION == 1") depends = set([ tag.text for tag in tree.findall('./depend') From a780f93ab3cb471abbf41f49b66f9af5f745d3c3 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Mon, 11 Mar 2024 00:16:47 +0000 Subject: [PATCH 06/17] Fixed empty using target Signed-off-by: Aditya Pande --- .../ros2/resources/ros2bzl/scraping/metadata.py | 16 +++++++++------- .../templates/ament_cmake_CMakeLists.txt.in | 4 ++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py index 582940a5..d715595f 100644 --- a/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py +++ b/bazel_ros2_rules/ros2/resources/ros2bzl/scraping/metadata.py @@ -1,15 +1,18 @@ import os import xml.etree.ElementTree as ET -# Remove elemets based on the value contained in the -# 'condition' attribute -def remove_elements(root, condition_value): +# Remove elemets that have a condition attribute on ROS1 +def remove_ros1_elements(root): + ros1_condition_value = "$ROS_VERSION == 1" elements_to_remove = [] for parent in root.iter(): for child in list(parent): - if child.get('condition') == condition_value : - elements_to_remove.append((parent, child)) + if "condition" in child.attrib: + if child.get('condition') == ros1_condition_value : + elements_to_remove.append((parent, child)) + else : + child.attrib.pop("condition") for parent, child in elements_to_remove: parent.remove(child) @@ -17,8 +20,7 @@ def remove_elements(root, condition_value): def parse_package_xml(path_to_package_xml): tree = ET.parse(path_to_package_xml) - if tree.find('./name').text != "plotjuggler": - remove_elements(tree.getroot(), "$ROS_VERSION == 1") + remove_ros1_elements(tree.getroot()) depends = set([ tag.text for tag in tree.findall('./depend') diff --git a/bazel_ros2_rules/ros2/resources/templates/ament_cmake_CMakeLists.txt.in b/bazel_ros2_rules/ros2/resources/templates/ament_cmake_CMakeLists.txt.in index 984039c7..e25fb533 100644 --- a/bazel_ros2_rules/ros2/resources/templates/ament_cmake_CMakeLists.txt.in +++ b/bazel_ros2_rules/ros2/resources/templates/ament_cmake_CMakeLists.txt.in @@ -13,6 +13,10 @@ if("@PACKAGE@" STREQUAL "rviz_ogre_vendor") set(CMAKE_FIND_LIBRARY_PREFIXES ";lib") endif() +if("@PACKAGE@" STREQUAL "plotjuggler") + find_package(Qt5 COMPONENTS Widgets Concurrent Svg REQUIRED) +endif() + find_package(@PACKAGE@ REQUIRED) file(WRITE empty.cc "") From d2b3ed95be866247b76686d9385c587a6dc62236 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Mon, 11 Mar 2024 06:43:44 +0000 Subject: [PATCH 07/17] CI fix Signed-off-by: Aditya Pande --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 311efae5..4708d71e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -76,6 +76,8 @@ jobs: - name: Cope with Python 2 pollution run: apt-get update && apt-get install -y python-is-python3 + - name: Install plotjuggler + run: apt-get install ros2-${{matrix.ros_distro}}-plotjuggler-ros - name: Build all packages run: | . /opt/ros/${{matrix.ros_distro}}/setup.sh From 26284488f78430ce1b06d956e504490d5bf6a643 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Tue, 19 Mar 2024 23:30:11 +0000 Subject: [PATCH 08/17] CI error Signed-off-by: Aditya Pande --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 277272ad..a70e22ac 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -75,7 +75,7 @@ jobs: - name: Cope with Python 2 pollution run: apt-get update && apt-get install -y python-is-python3 - name: Install plotjuggler - run: apt-get install ros2-${{matrix.ros_distro}}-plotjuggler-ros + run: apt-get install ros-${{matrix.ros_distro}}-plotjuggler-ros - name: Build all packages run: | . /opt/ros/${{matrix.ros_distro}}/setup.sh From 9c26b9be49d30a284997f972d48c5e22792226b5 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Tue, 19 Mar 2024 23:44:06 +0000 Subject: [PATCH 09/17] CI fix Signed-off-by: Aditya Pande --- .github/workflows/main.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a70e22ac..e7172006 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -74,8 +74,6 @@ jobs: - name: Cope with Python 2 pollution run: apt-get update && apt-get install -y python-is-python3 - - name: Install plotjuggler - run: apt-get install ros-${{matrix.ros_distro}}-plotjuggler-ros - name: Build all packages run: | . /opt/ros/${{matrix.ros_distro}}/setup.sh From 71dc45095f9e225a2c4d42dca9d31b0d1e5bce08 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Wed, 20 Mar 2024 01:00:30 +0000 Subject: [PATCH 10/17] WIP plotjuggler rollup target Signed-off-by: Aditya Pande --- .../ros2_example_apps/BUILD.bazel | 16 ++++++++++++++ .../ros2_example_apps/plotjuggler.py | 21 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py diff --git a/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel b/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel index 92183db5..ad083209 100644 --- a/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel +++ b/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel @@ -272,3 +272,19 @@ ros_cc_test( "@ros2//resources/rmw_isolation:rmw_isolation_cc", ], ) + +ros_py_binary( + name = "plotjuggler", + srcs = ["plotjuggler.py"], + data = [ + "@ros2//:plotjuggler_ros_cc", + "@ros2//:plotjuggler_ros_share", + "@ros2//:plotjuggler_ros_transitive_py", + ], + deps = [ + "//:ros_msgs_all_py", + "@bazel_tools//tools/python/runfiles", + "@ros2//:plotjuggler_plotjuggler", + ], +) + diff --git a/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py b/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py new file mode 100644 index 00000000..f82031c1 --- /dev/null +++ b/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py @@ -0,0 +1,21 @@ +""" +Roll up script for plotjuggler with ROS. +""" + + +import os +import subprocess +from bazel_tools.tools.python.runfiles import runfiles + +def main(): + r = runfiles.Create() + binary_path = r.Rlocation("ros2/plotjuggler_plotjuggler") + + if not binary_path: + raise FileNotFoundError("Could not find my_binary") + + # Run the binary + subprocess.run(binary_path, check=True) + +if __name__ == "__main__": + main() From 9d0b1b36bad6fe830cbb2080522aa2e362657899 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Wed, 20 Mar 2024 01:02:14 +0000 Subject: [PATCH 11/17] Corrected error msg Signed-off-by: Aditya Pande --- ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py b/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py index f82031c1..134f1d11 100644 --- a/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py +++ b/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py @@ -12,7 +12,7 @@ def main(): binary_path = r.Rlocation("ros2/plotjuggler_plotjuggler") if not binary_path: - raise FileNotFoundError("Could not find my_binary") + raise FileNotFoundError("Could not find plotjuggler binary") # Run the binary subprocess.run(binary_path, check=True) From f30945c6297bb0dab2b97b1c91acf128483638fb Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Tue, 26 Mar 2024 21:21:59 +0000 Subject: [PATCH 12/17] Fix for libraries Signed-off-by: Aditya Pande --- bazel_ros2_rules/ros2/resources/ros2bzl/templates.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py b/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py index 115530e1..478e4ad4 100644 --- a/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py +++ b/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py @@ -108,6 +108,14 @@ def configure_package_cc_library( sandbox(find_library_path(library)) for library in metadata['plugin_libraries'] ) + # Add an exception for plotjuggler-ros, as it does not + # use pluginlib. + if 'plotjuggler_ros' in target_name: + prefix = "_opt_ros_humble/lib/plotjuggler_ros/" + data.extend([ + prefix + "libDataLoadROS2.so", + prefix + "libDataStreamROS2.so", + prefix + "libTopicPublisherROS2.so"]) # Prepare runfiles to support dynamic loading data.extend(library for library in libraries if library not in data) From e226b719232d87aba9d54db09b5d891ebc8d09bd Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Tue, 26 Mar 2024 21:24:23 +0000 Subject: [PATCH 13/17] Added a comment Signed-off-by: Aditya Pande --- ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel b/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel index ad083209..98b36b73 100644 --- a/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel +++ b/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel @@ -273,6 +273,9 @@ ros_cc_test( ], ) +# This is a roll-up target to use plotjuggler with the required +# ROS plugins. Usage : +# bazel run //ros2_example_apps:plotjuggler ros_py_binary( name = "plotjuggler", srcs = ["plotjuggler.py"], From 33ef4c763d7d850c9e65bc5ddfab332cf183c9c0 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Tue, 26 Mar 2024 21:31:52 +0000 Subject: [PATCH 14/17] Lint Signed-off-by: Aditya Pande --- ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel | 1 - 1 file changed, 1 deletion(-) diff --git a/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel b/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel index 98b36b73..106d6918 100644 --- a/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel +++ b/ros2_example_bazel_installed/ros2_example_apps/BUILD.bazel @@ -290,4 +290,3 @@ ros_py_binary( "@ros2//:plotjuggler_plotjuggler", ], ) - From 996985f8964f4731819c2073d7d44d2801b1a321 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Wed, 27 Mar 2024 11:15:46 -0700 Subject: [PATCH 15/17] Update ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Alejandro Hernández Cordero --- ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py b/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py index 134f1d11..2d4177c5 100644 --- a/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py +++ b/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 """ Roll up script for plotjuggler with ROS. """ From 35fc47bde17217ebd2001fae6a81224dce22c9f3 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Fri, 29 Mar 2024 21:15:34 +0000 Subject: [PATCH 16/17] Review comments Signed-off-by: Aditya Pande --- bazel_ros2_rules/ros2/resources/ros2bzl/templates.py | 4 +++- ros2_example_bazel_installed/WORKSPACE | 6 ++---- .../ros2_example_apps/plotjuggler.py | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py b/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py index 478e4ad4..528f6ae5 100644 --- a/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py +++ b/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py @@ -109,7 +109,9 @@ def configure_package_cc_library( for library in metadata['plugin_libraries'] ) # Add an exception for plotjuggler-ros, as it does not - # use pluginlib. + # use pluginlib, and the manifest does not mention its plugins. + # The paths for the plugins are hardcoded in plotjuggler : + # https://github.com/facontidavide/PlotJuggler/blob/15dce41f598daed841bf2093aa10ebdf2aa1052f/plotjuggler_app/mainwindow.cpp#L560-L566 if 'plotjuggler_ros' in target_name: prefix = "_opt_ros_humble/lib/plotjuggler_ros/" data.extend([ diff --git a/ros2_example_bazel_installed/WORKSPACE b/ros2_example_bazel_installed/WORKSPACE index c9290f1e..7f201cb7 100644 --- a/ros2_example_bazel_installed/WORKSPACE +++ b/ros2_example_bazel_installed/WORKSPACE @@ -64,6 +64,8 @@ git_repository( # Please keep this list sorted ROS2_PACKAGES = [ + "plotjuggler", + "plotjuggler_ros", "action_msgs", "builtin_interfaces", "console_bridge_vendor", @@ -80,10 +82,6 @@ ROS2_PACKAGES = [ # change implementations "rmw_cyclonedds_cpp", # "rmw_fastrtps_cpp", -] + [ - # Extra packages - "plotjuggler", - "plotjuggler_ros", ] RESOLVED_PREFIX = ( diff --git a/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py b/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py index 2d4177c5..134f1d11 100644 --- a/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py +++ b/ros2_example_bazel_installed/ros2_example_apps/plotjuggler.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 """ Roll up script for plotjuggler with ROS. """ From df481572f8662d4f1439d405146130b4dd3603a4 Mon Sep 17 00:00:00 2001 From: Aditya Pande Date: Fri, 29 Mar 2024 21:35:26 +0000 Subject: [PATCH 17/17] Use glob Signed-off-by: Aditya Pande --- bazel_ros2_rules/ros2/resources/ros2bzl/templates.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py b/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py index 528f6ae5..7948f95a 100644 --- a/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py +++ b/bazel_ros2_rules/ros2/resources/ros2bzl/templates.py @@ -1,5 +1,6 @@ import os import pathlib +import glob from ros2bzl.resources import load_resource from ros2bzl.scraping.system import find_library_path @@ -114,10 +115,7 @@ def configure_package_cc_library( # https://github.com/facontidavide/PlotJuggler/blob/15dce41f598daed841bf2093aa10ebdf2aa1052f/plotjuggler_app/mainwindow.cpp#L560-L566 if 'plotjuggler_ros' in target_name: prefix = "_opt_ros_humble/lib/plotjuggler_ros/" - data.extend([ - prefix + "libDataLoadROS2.so", - prefix + "libDataStreamROS2.so", - prefix + "libTopicPublisherROS2.so"]) + data.extend(glob.glob(prefix + "lib*.so")) # Prepare runfiles to support dynamic loading data.extend(library for library in libraries if library not in data)