diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 07c90a86..7dd4881f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -11,6 +11,7 @@ jobs: test: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: docker_image: ['ros:iron-ros-base', 'ros:rolling-ros-base'] container: @@ -21,7 +22,7 @@ jobs: run: | apt update && apt install -y curl - name: Setup Rust - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@1.75.0 - uses: actions/checkout@v2 - name: rosdep run: | diff --git a/.github/workflows/style.yaml b/.github/workflows/style.yaml index 5c3a7160..04f818b1 100644 --- a/.github/workflows/style.yaml +++ b/.github/workflows/style.yaml @@ -10,6 +10,7 @@ jobs: test: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: docker_image: ['ros:iron-ros-base', 'ros:rolling-ros-base'] container: diff --git a/.github/workflows/tmp_build_noble.yaml b/.github/workflows/tmp_build_noble.yaml new file mode 100644 index 00000000..17d9fe2e --- /dev/null +++ b/.github/workflows/tmp_build_noble.yaml @@ -0,0 +1,36 @@ +name: build_noble +on: + pull_request: + push: + branches: [ rolling ] + workflow_dispatch: +defaults: + run: + shell: bash +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + docker_image: ['ubuntu:noble-20240225'] + container: + image: ${{ matrix.docker_image }} + timeout-minutes: 30 + steps: + - name: Setup rolling + run: | + apt update && apt install curl -y + curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null + apt update && apt install ros-dev-tools -y + apt install ros-rolling-ros-base -y + - uses: actions/checkout@v2 + - name: rosdep + run: | + rosdep init + rosdep update + rosdep install --from-paths . --rosdistro rolling -yir + - name: build + run: | + source /opt/ros/rolling/setup.bash + colcon build diff --git a/README.md b/README.md index 1d831c3c..278ebc26 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,12 @@ For information about the Design please visit [design](docs/design.md) page. ## Setup -Install latest rustc. -> Note: The version of rustc that can be installed via apt is outdated. +Install latest rustc via `rustup` if building on Ubuntu Jammy. +Skip this step if building on Ubuntu Noble as `cargo` and `rustc` will be +installed via `rosdep`. ```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +rustup install 1.75.0 ``` Build `rmw_zenoh_cpp` diff --git a/zenoh_c_vendor/CMakeLists.txt b/zenoh_c_vendor/CMakeLists.txt index 73246032..da56c50a 100644 --- a/zenoh_c_vendor/CMakeLists.txt +++ b/zenoh_c_vendor/CMakeLists.txt @@ -26,11 +26,14 @@ set(ZENOHC_CARGO_FLAGS "--no-default-features$--features=zenoh/transp # Set VCS_VERSION to include changes from https://github.com/eclipse-zenoh/zenoh/pull/802 # which was synced to zenoh-c in https://github.com/eclipse-zenoh/zenoh-c/pull/272. +# Apply patches: +# - https://github.com/eclipse-zenoh/zenoh-c/pull/301 ament_vendor(zenoh_c_vendor VCS_URL https://github.com/eclipse-zenoh/zenoh-c.git VCS_VERSION 10176b911096cb92b8ee46bc491b78079ee26c20 CMAKE_ARGS "-DZENOHC_CARGO_FLAGS=${ZENOHC_CARGO_FLAGS}" + PATCHES patches ) # set(INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-prefix/install") diff --git a/zenoh_c_vendor/package.xml b/zenoh_c_vendor/package.xml index 6515c1e9..55c17616 100644 --- a/zenoh_c_vendor/package.xml +++ b/zenoh_c_vendor/package.xml @@ -12,7 +12,7 @@ ament_cmake ament_cmake_vendor_package - + cargo clang diff --git a/zenoh_c_vendor/patches/pr_301.patch b/zenoh_c_vendor/patches/pr_301.patch new file mode 100644 index 00000000..68008fd9 --- /dev/null +++ b/zenoh_c_vendor/patches/pr_301.patch @@ -0,0 +1,24 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 00aa5ca..d236e99 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -27,7 +27,7 @@ declare_cache_var_true_if_vscode(ZENOHC_BUILD_IN_SOURCE_TREE "Do build inside so + declare_cache_var(ZENOHC_BUILD_WITH_LOGGER_AUTOINIT TRUE BOOL "Enable logger-autoinit zenoh-c feature") + declare_cache_var(ZENOHC_BUILD_WITH_SHARED_MEMORY TRUE BOOL "Enable shared-memory zenoh-c feature") + declare_cache_var(ZENOHC_CUSTOM_TARGET "" STRING "Rust target for cross compilation, 'aarch64-unknown-linux-gnu' for example") +-declare_cache_var(ZENOHC_CARGO_CHANNEL "stable" STRING "Cargo channel selected: stable or nightly") ++declare_cache_var(ZENOHC_CARGO_CHANNEL "" STRING "Cargo channel parameter. Should be '+stable', '+nightly' or empty value") + declare_cache_var(ZENOHC_CARGO_FLAGS "" STRING "Additional cargo flags") + declare_cache_var(ZENOHC_LIB_STATIC FALSE BOOL "Alias zenohc::lib target to zenohc::static if TRUE, to zenohc::shared if FALSE") + +@@ -198,8 +198,8 @@ file(GLOB_RECURSE rust_sources "Cargo.toml.in" "src/*.rs" "build.rs" "splitguide + add_custom_command( + OUTPUT ${libs} + COMMAND ${CMAKE_COMMAND} -E echo \"RUSTFLAGS = $$RUSTFLAGS\" +- COMMAND ${CMAKE_COMMAND} -E echo \"cargo +${ZENOHC_CARGO_CHANNEL} build ${cargo_flags}\" +- COMMAND cargo +${ZENOHC_CARGO_CHANNEL} build ${cargo_flags} ++ COMMAND ${CMAKE_COMMAND} -E echo \"cargo ${ZENOHC_CARGO_CHANNEL} build ${cargo_flags}\" ++ COMMAND cargo ${ZENOHC_CARGO_CHANNEL} build ${cargo_flags} + VERBATIM + COMMAND_EXPAND_LISTS + DEPENDS "${rust_sources}"