From 8bd4e0b5e0c1a1c46577d4ce024772930ca7fa93 Mon Sep 17 00:00:00 2001 From: Martin Dahl Date: Fri, 9 Feb 2024 14:53:18 +0100 Subject: [PATCH] Add ros2 iron --- .github/workflows/rust_and_ros2.yml | 13 ++++++++++--- r2r/src/qos.rs | 30 +++++++++++++++++++++++++++++ r2r_common/src/lib.rs | 2 +- tests/Dockerfile_iron | 22 +++++++++++++++++++++ tests/test.bash | 10 +++++----- 5 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 tests/Dockerfile_iron diff --git a/.github/workflows/rust_and_ros2.yml b/.github/workflows/rust_and_ros2.yml index e5c40e0..2dfb574 100644 --- a/.github/workflows/rust_and_ros2.yml +++ b/.github/workflows/rust_and_ros2.yml @@ -17,7 +17,7 @@ jobs: - run: docker build . --file ./tests/Dockerfile_no_ros --tag r2r_no_ros - run: docker run r2r_no_ros cargo build --features doc-only - minimal_workspace_humble: + minimal_workspace_iron: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -26,8 +26,15 @@ jobs: with: repository: m-dahl/r2r_minimal_node path: r2r_minimal_node - - run: docker build . --file ./tests/Dockerfile_humble --tag r2r_humble - - run: docker run r2r_humble /r2r/tests/build_minimal_node.bash + - run: docker build . --file ./tests/Dockerfile_iron --tag r2r_iron + - run: docker run r2r_iron /r2r/tests/build_minimal_node.bash + + tests_iron: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: docker build . --file ./tests/Dockerfile_iron --tag r2r_iron + - run: docker run r2r_iron cargo test tests_humble: runs-on: ubuntu-latest diff --git a/r2r/src/qos.rs b/r2r/src/qos.rs index 8e680bd..1f4ae17 100644 --- a/r2r/src/qos.rs +++ b/r2r/src/qos.rs @@ -251,6 +251,8 @@ pub enum ReliabilityPolicy { BestEffort, Reliable, SystemDefault, + #[cfg(r2r__ros__distro__iron)] + BestAvailable, Unknown, } impl From for rmw_qos_reliability_policy_t { @@ -265,6 +267,10 @@ impl From for rmw_qos_reliability_policy_t { ReliabilityPolicy::SystemDefault => { rmw_qos_reliability_policy_t::RMW_QOS_POLICY_RELIABILITY_SYSTEM_DEFAULT } + #[cfg(r2r__ros__distro__iron)] + ReliabilityPolicy::BestAvailable => { + rmw_qos_reliability_policy_t::RMW_QOS_POLICY_RELIABILITY_BEST_AVAILABLE + } ReliabilityPolicy::Unknown => { rmw_qos_reliability_policy_t::RMW_QOS_POLICY_RELIABILITY_UNKNOWN } @@ -284,6 +290,10 @@ impl From for ReliabilityPolicy { rmw_qos_reliability_policy_t::RMW_QOS_POLICY_RELIABILITY_SYSTEM_DEFAULT => { ReliabilityPolicy::SystemDefault } + #[cfg(r2r__ros__distro__iron)] + rmw_qos_reliability_policy_t::RMW_QOS_POLICY_RELIABILITY_BEST_AVAILABLE => { + ReliabilityPolicy::BestAvailable + } rmw_qos_reliability_policy_t::RMW_QOS_POLICY_RELIABILITY_UNKNOWN => { ReliabilityPolicy::Unknown } @@ -296,6 +306,8 @@ pub enum DurabilityPolicy { TransientLocal, Volatile, SystemDefault, + #[cfg(r2r__ros__distro__iron)] + BestAvailable, Unknown, } @@ -311,6 +323,10 @@ impl From for rmw_qos_durability_policy_t { DurabilityPolicy::SystemDefault => { rmw_qos_durability_policy_t::RMW_QOS_POLICY_DURABILITY_SYSTEM_DEFAULT } + #[cfg(r2r__ros__distro__iron)] + DurabilityPolicy::BestAvailable => { + rmw_qos_durability_policy_t::RMW_QOS_POLICY_DURABILITY_BEST_AVAILABLE + } DurabilityPolicy::Unknown => { rmw_qos_durability_policy_t::RMW_QOS_POLICY_DURABILITY_UNKNOWN } @@ -330,6 +346,10 @@ impl From for DurabilityPolicy { rmw_qos_durability_policy_t::RMW_QOS_POLICY_DURABILITY_SYSTEM_DEFAULT => { DurabilityPolicy::SystemDefault } + #[cfg(r2r__ros__distro__iron)] + rmw_qos_durability_policy_t::RMW_QOS_POLICY_DURABILITY_BEST_AVAILABLE => { + DurabilityPolicy::BestAvailable + } rmw_qos_durability_policy_t::RMW_QOS_POLICY_DURABILITY_UNKNOWN => { DurabilityPolicy::Unknown } @@ -343,6 +363,8 @@ pub enum LivelinessPolicy { ManualByNode, ManualByTopic, SystemDefault, + #[cfg(r2r__ros__distro__iron)] + BestAvailable, Unknown, } @@ -361,6 +383,10 @@ impl From for rmw_qos_liveliness_policy_t { LivelinessPolicy::SystemDefault => { rmw_qos_liveliness_policy_t::RMW_QOS_POLICY_LIVELINESS_SYSTEM_DEFAULT } + #[cfg(r2r__ros__distro__iron)] + LivelinessPolicy::BestAvailable => { + rmw_qos_liveliness_policy_t::RMW_QOS_POLICY_LIVELINESS_BEST_AVAILABLE + } LivelinessPolicy::Unknown => { rmw_qos_liveliness_policy_t::RMW_QOS_POLICY_LIVELINESS_UNKNOWN } @@ -383,6 +409,10 @@ impl From for LivelinessPolicy { rmw_qos_liveliness_policy_t::RMW_QOS_POLICY_LIVELINESS_SYSTEM_DEFAULT => { LivelinessPolicy::SystemDefault } + #[cfg(r2r__ros__distro__iron)] + rmw_qos_liveliness_policy_t::RMW_QOS_POLICY_LIVELINESS_BEST_AVAILABLE => { + LivelinessPolicy::BestAvailable + } rmw_qos_liveliness_policy_t::RMW_QOS_POLICY_LIVELINESS_UNKNOWN => { LivelinessPolicy::Unknown } diff --git a/r2r_common/src/lib.rs b/r2r_common/src/lib.rs index f97d59c..bf5d27e 100644 --- a/r2r_common/src/lib.rs +++ b/r2r_common/src/lib.rs @@ -8,7 +8,7 @@ use std::io::Read; use std::path::Path; #[cfg(not(feature = "doc-only"))] -const SUPPORTED_ROS_DISTROS: &[&str] = &["foxy", "galactic", "humble", "rolling"]; +const SUPPORTED_ROS_DISTROS: &[&str] = &["foxy", "galactic", "humble", "iron", "rolling"]; const WATCHED_ENV_VARS: &[&str] = &[ "AMENT_PREFIX_PATH", diff --git a/tests/Dockerfile_iron b/tests/Dockerfile_iron new file mode 100644 index 0000000..3b4d0dd --- /dev/null +++ b/tests/Dockerfile_iron @@ -0,0 +1,22 @@ +# syntax=docker/dockerfile:1 +FROM ros:iron + +# Update default packages +RUN apt-get update + +# Get Ubuntu packages +RUN apt-get install -y \ + build-essential \ + curl \ + libclang-dev + +# Get ros test messages +RUN apt-get install -y ros-iron-test-msgs ros-iron-example-interfaces + +# Get Rust +RUN curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | bash -s -- -y +RUN echo 'source $HOME/.cargo/env' >> $HOME/.bashrc + +COPY . /r2r +RUN chmod +x /r2r/tests/test.bash +ENTRYPOINT [ "/r2r/tests/test.bash" ] diff --git a/tests/test.bash b/tests/test.bash index 3c037f9..f123204 100644 --- a/tests/test.bash +++ b/tests/test.bash @@ -5,13 +5,13 @@ # run rustup to test with latest rust version rustup update -if [ -e "/opt/ros/humble/setup.bash" ]; then +if [ -e "/opt/ros/iron/setup.bash" ]; then + source "/opt/ros/iron/setup.bash" +elif [ -e "/opt/ros/humble/setup.bash" ]; then source "/opt/ros/humble/setup.bash" -fi -if [ -e "/opt/ros/galactic/setup.bash" ]; then +elif [ -e "/opt/ros/galactic/setup.bash" ]; then source "/opt/ros/galactic/setup.bash" -fi -if [ -e "/opt/ros/foxy/setup.bash" ]; then +elif [ -e "/opt/ros/foxy/setup.bash" ]; then source "/opt/ros/foxy/setup.bash" fi