Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update to core22, remove ros1, enable humble instead of foxy #849

Merged
merged 6 commits into from
Sep 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ros2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ jobs:
env:
- {ROS_DISTRO: foxy, ROS_REPO: main}
- {ROS_DISTRO: galactic, ROS_REPO: main}
- {ROS_DISTRO: humble, ROS_REPO: main}
- {ROS_DISTRO: rolling, ROS_REPO: main}
runs-on: ubuntu-latest
steps:
Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/snap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,41 @@ jobs:
with:
snap: ${{needs.build.outputs.snap-file}}
release: ${{ startsWith(github.ref, 'refs/tags/') && 'candidate' || 'edge'}}

build22:
runs-on: ubuntu-latest
outputs:
snap-file: ${{ steps.build-snap22.outputs.snap }}
steps:
- uses: actions/checkout@v2
with:
# full history for latest tag name
fetch-depth: 0
- run: rm -r snap && mv snap_core22 snap
- uses: snapcore/action-build@v1
id: build-snap22

# Make sure the snap is installable
- run: |
sudo snap install --dangerous ${{ steps.build-snap22.outputs.snap }}

- uses: actions/upload-artifact@v3
with:
name: plotjuggler-snap22
path: ${{ steps.build-snap22.outputs.snap }}

publish22:
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
needs: build22
steps:
- uses: actions/download-artifact@v3
with:
name: plotjuggler-snap22
path: .
- uses: snapcore/action-publish@v1
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }}
with:
snap: ${{needs.build.outputs.snap-file}}
release: humble/${{ startsWith(github.ref, 'refs/tags/') && 'candidate' || 'edge'}}
1 change: 0 additions & 1 deletion snap/snapcraft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,6 @@ parts:
- ros-foxy-object-recognition-msgs
- ros-foxy-octomap-msgs
- ros-foxy-ouster-msgs
- ros-foxy-pacmod-msgs
- ros-foxy-pcl-msgs
- ros-foxy-pendulum-msgs
- ros-foxy-phidgets-msgs
Expand Down
9 changes: 9 additions & 0 deletions snap_core22/gui/PlotJuggler.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Desktop Entry]
Type=Application
Name=PlotJuggler
Exec=plotjuggler
Icon=${SNAP}/meta/gui/plotjuggler.svg
Comment=Visualize timeseries like a pro
Terminal=false
Categories=Development;
Name[en_US]=PlotJuggler
1 change: 1 addition & 0 deletions snap_core22/gui/plotjuggler.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 19 additions & 0 deletions snap_core22/local/fastdds_no_shared_memory.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles" >
<transport_descriptors>
<transport_descriptor>
<transport_id>CustomUdpTransport</transport_id>
<type>UDPv4</type>
</transport_descriptor>
</transport_descriptors>

<participant profile_name="participant_profile" is_default_profile="true">
<rtps>
<userTransports>
<transport_id>CustomUdpTransport</transport_id>
</userTransports>

<useBuiltinTransports>false</useBuiltinTransports>
</rtps>
</participant>
</profiles>
10 changes: 10 additions & 0 deletions snap_core22/local/launcher-plotjuggler-ros2
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

# Paths to ROS 2 plugins
export PLUGIN_FOLDERS=$SNAP/opt/ros/snap/lib/plotjuggler_ros
export AMENT_PREFIX_PATH=$SNAP/opt/ros/humble
# Disable FastDDS shared-memory
export FASTRTPS_DEFAULT_PROFILES_FILE=${SNAP}/usr/share/fastdds_no_shared_memory.xml

${SNAP}/usr/local/bin/plotjuggler --plugin_folders $PLUGIN_FOLDERS $@

2 changes: 2 additions & 0 deletions snap_core22/local/plotjuggler.rosinstall
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- git: {local-name: plotjuggler-ros-plugins, uri: 'https://github.com/PlotJuggler/plotjuggler-ros-plugins.git', version: 1.7.3}
- git: {local-name: plotjuggler_msgs, uri: 'https://github.com/facontidavide/plotjuggler_msgs.git', version: main}
262 changes: 262 additions & 0 deletions snap_core22/snapcraft.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,262 @@
name: plotjuggler
adopt-info: plotjuggler # parse metadata from the plotjuggler part
summary: The timeseries visualization tool that you deserve
description: |
QT5 based application to display time series in plots,
using an intuitive "drag and drop" interface.

The snap comes with only ROS 2 plugins.
You can launch it with

$ plotjuggler

launching PlotJuggler with ROS 2 plugins by default.

issues: https://github.com/facontidavide/plotjuggler/issues
source-code: https://github.com/facontidavide/plotjuggler
license: MPL-2.0

confinement: strict
base: core22

apps:
plotjuggler:
command: usr/bin/launcher-plotjuggler-ros2
plugs: [network, network-bind, home, removable-media]
extensions: [kde-neon, ros2-humble]

parts:
plotjuggler:
plugin: cmake
source: .
cmake-parameters:
- -DCMAKE_BUILD_TYPE=Release
- "-DCMAKE_PREFIX_PATH=$(echo $SNAPCRAFT_CMAKE_ARGS | awk -F= '{printf(\"%s/usr/lib/$CRAFT_ARCH_TRIPLET/cmake/Qt5\", $2)}')"
build-packages:
- distro-info-data
- libpulse0
- libdw-dev
- libbfd-dev
- libdwarf-dev
- libprotoc-dev
- libgl-dev
- libmosquitto-dev
- libzmq3-dev
- libzstd-dev
stage-packages:
- libdw1
- libmosquitto1
- libprotobuf23
- libprotobuf-dev
- libzmq5
- libzstd1
- libfreetype6
override-pull: |
craftctl default
git config --global --add safe.directory '*'
version="$(git describe --always --tags| sed -e 's/^v//;s/-/+git/;y/-/./')"
[ -n "$(echo $version | grep "+git")" ] && grade=devel || grade=stable
craftctl set version="$version"
craftctl set grade="$grade"

# Necessary to bypass XDG desktop portals because ROS 2 bags metadata.yaml are refering db3 files relatively
sed -i '/QApplication app(new_argc, new_argv.data());/a QCoreApplication::setAttribute(Qt::AA_DontUseNativeDialogs);' plotjuggler_app/main.cpp

plotjuggler-ros2:
after: [plotjuggler]
plugin: colcon
source: .
colcon-cmake-args:
- -DCMAKE_BUILD_TYPE=Release
- -DBUILD_TESTING=OFF
- -DBUILD_DOCS=OFF
# point to previously build plotjuggler
- -Dplotjuggler_DIR:PATH=$CRAFT_STAGE/usr/local/lib/cmake/plotjuggler
# Due to https://github.com/ament/ament_cmake/issues/189 implicity OpenSSL link breaks. So we change CMAKE_PREFIX_PATH and not CMAKE_FIND_ROOT_PATH
- -DCMAKE_PREFIX_PATH=$(echo $SNAPCRAFT_CMAKE_ARGS | awk -F= '{printf("%s/usr/lib/x86_64-linux-gnu/cmake/Qt5", $2)}')
- --event-handlers=console_direct+
build-packages:
- git
- python3-vcstool
- ros-humble-ros-core
- patchelf
stage-packages:
# ROS 2 plugin need to source messages to plot them
# No custom message is going to be support for now
- ros-humble-ackermann-msgs
- ros-humble-action-msgs
- ros-humble-actionlib-msgs
- ros-humble-actuator-msgs
- ros-humble-apriltag-msgs
- ros-humble-aruco-msgs
- ros-humble-aruco-opencv-msgs
- ros-humble-automotive-autonomy-msgs
- ros-humble-automotive-navigation-msgs
- ros-humble-automotive-platform-msgs
- ros-humble-autoware-auto-msgs
- ros-humble-can-msgs
- ros-humble-cartographer-ros-msgs
- ros-humble-cascade-lifecycle-msgs
- ros-humble-control-msgs
- ros-humble-controller-manager-msgs
- ros-humble-create-msgs
- ros-humble-dataspeed-dbw-msgs
- ros-humble-dataspeed-ulc-msgs
- ros-humble-dbw-fca-msgs
- ros-humble-dbw-ford-msgs
- ros-humble-dbw-polaris-msgs
- ros-humble-delphi-esr-msgs
- ros-humble-delphi-mrr-msgs
- ros-humble-delphi-srr-msgs
- ros-humble-depthai-ros-msgs
- ros-humble-derived-object-msgs
- ros-humble-diagnostic-msgs
- ros-humble-dwb-msgs
- ros-humble-dynamixel-workbench-msgs
- ros-humble-foros-msgs
- ros-humble-four-wheel-steering-msgs
- ros-humble-foxglove-msgs
- ros-humble-gazebo-msgs
- ros-humble-geographic-msgs
- ros-humble-geometry-msgs
- ros-humble-gps-msgs
- ros-humble-graph-msgs
- ros-humble-grasping-msgs
- ros-humble-grbl-msgs
- ros-humble-grid-map-msgs
- ros-humble-ibeo-msgs
- ros-humble-irobot-create-msgs
- ros-humble-kartech-linear-actuator-msgs
- ros-humble-leo-msgs
- ros-humble-lgsvl-msgs
- ros-humble-lifecycle-msgs
- ros-humble-map-msgs
- ros-humble-marker-msgs
- ros-humble-marti-can-msgs
- ros-humble-marti-common-msgs
- ros-humble-marti-dbw-msgs
- ros-humble-marti-introspection-msgs
- ros-humble-marti-nav-msgs
- ros-humble-marti-perception-msgs
- ros-humble-marti-sensor-msgs
- ros-humble-marti-status-msgs
- ros-humble-marti-visualization-msgs
- ros-humble-marvelmind-ros2-msgs
- ros-humble-mavros-msgs
- ros-humble-micro-ros-diagnostic-msgs
- ros-humble-micro-ros-msgs
- ros-humble-microstrain-inertial-msgs
- ros-humble-mobileye-560-660-msgs
- ros-humble-moveit-msgs
- ros-humble-mrpt-msgs
- ros-humble-nao-command-msgs
- ros-humble-nao-sensor-msgs
- ros-humble-nav-2d-msgs
- ros-humble-nav-msgs
- ros-humble-nav2-msgs
- ros-humble-neobotix-usboard-msgs
- ros-humble-nmea-msgs
- ros-humble-novatel-gps-msgs
- ros-humble-novatel-oem7-msgs
- ros-humble-object-recognition-msgs
- ros-humble-octomap-msgs
- ros-humble-ouster-msgs
- ros-humble-pal-statistics-msgs
- ros-humble-pcl-msgs
- ros-humble-pendulum-msgs
- ros-humble-phidgets-msgs
- ros-humble-plansys2-msgs
- ros-humble-play-motion2-msgs
- ros-humble-polygon-msgs
- ros-humble-radar-msgs
- ros-humble-raspimouse-msgs
- ros-humble-rc-common-msgs
- ros-humble-rc-reason-msgs
- ros-humble-rclpy-message-converter-msgs
- ros-humble-rcss3d-agent-msgs
- ros-humble-realsense2-camera-msgs
- ros-humble-rmf-api-msgs
- ros-humble-rmf-building-map-msgs
- ros-humble-rmf-charger-msgs
- ros-humble-rmf-dispenser-msgs
- ros-humble-rmf-door-msgs
- ros-humble-rmf-fleet-msgs
- ros-humble-rmf-ingestor-msgs
- ros-humble-rmf-lift-msgs
- ros-humble-rmf-obstacle-msgs
- ros-humble-rmf-scheduler-msgs
- ros-humble-rmf-site-map-msgs
- ros-humble-rmf-task-msgs
- ros-humble-rmf-traffic-msgs
- ros-humble-rmf-visualization-msgs
- ros-humble-rmf-workcell-msgs
- ros-humble-robot-calibration-msgs
- ros-humble-robot-controllers-msgs
- ros-humble-rosapi-msgs
- ros-humble-rosbridge-msgs
- ros-humble-rosbridge-test-msgs
- ros-humble-rosgraph-msgs
- ros-humble-rtabmap-msgs
- ros-humble-rtcm-msgs
- ros-humble-rviz-2d-overlay-msgs
- ros-humble-sensor-msgs
- ros-humble-sensor-msgs-py
- ros-humble-shape-msgs
- ros-humble-soccer-object-msgs
- ros-humble-soccer-vision-2d-msgs
- ros-humble-soccer-vision-3d-msgs
- ros-humble-soccer-vision-attribute-msgs
- ros-humble-statistics-msgs
- ros-humble-std-msgs
- ros-humble-stereo-msgs
- ros-humble-stubborn-buddies-msgs
- ros-humble-system-modes-msgs
- ros-humble-teleop-tools-msgs
- ros-humble-test-msgs
- ros-humble-tf2-geometry-msgs
- ros-humble-tf2-msgs
- ros-humble-tf2-sensor-msgs
- ros-humble-trajectory-msgs
- ros-humble-turtlebot3-msgs
- ros-humble-turtlebot4-msgs
- ros-humble-tuw-geometry-msgs
- ros-humble-ublox-msgs
- ros-humble-ublox-ubx-msgs
- ros-humble-udp-msgs
- ros-humble-unique-identifier-msgs
- ros-humble-ur-dashboard-msgs
- ros-humble-ur-msgs
- ros-humble-urg-node-msgs
- ros-humble-velodyne-msgs
- ros-humble-vision-msgs
- ros-humble-visualization-msgs
- ros-humble-webots-ros2-msgs
- ros-humble-wiimote-msgs
- ros-humble-wireless-msgs

# Additional DDS vendors
- ros-humble-rmw-cyclonedds-cpp
- ros-humble-rmw-fastrtps-cpp
- ros-humble-rmw-gurumdds-cpp
- ros-humble-rmw-connextdds
override-pull: |
if [ ! -d plotjuggler-ros-plugins ]; then

vcs import < /root/parts/plotjuggler/src/snap/local/plotjuggler.rosinstall

# prevent rosdep from installing plotjuggler
sed -i "s|<depend>plotjuggler</depend>||" plotjuggler-ros-plugins/package.xml

# add plotjuggler_LIBRARIES link
sed -i '/\${Qt5Xml_LIBRARIES}/a ${plotjuggler_LIBRARIES}' plotjuggler-ros-plugins/plugins/CMakeLists.txt

# Qt dependencies are managed by the kde neon-extension
sed -i '/qt/d' plotjuggler-ros-plugins/package.xml
fi

fastdds-no-shared-memory:
plugin: dump
source: snap/local/
organize:
'fastdds_no_shared_memory.xml': usr/share/
'launcher-plotjuggler*': usr/bin/
Loading