diff --git a/cross_compile/compose.yaml b/cross_compile/compose.yaml
index 15ebc06..8d7da09 100644
--- a/cross_compile/compose.yaml
+++ b/cross_compile/compose.yaml
@@ -24,7 +24,7 @@ services:
dockerfile: vendor_packages/Dockerfile.vendor_packages
args:
CC_PLATFORM_IMAGE: cc-${PLATFORM}:latest
- image: vendor-packages:${PLATFORM}
+ image: cc-vendor-packages:${PLATFORM}
depends_on:
- cc-platform
@@ -36,7 +36,7 @@ services:
ROS_DISTRO: rolling
PLATFORM: ${PLATFORM}
CC_PLATFORM_IMAGE: cc-${PLATFORM}:latest
- VENDOR_PACKAGES_IMAGE: vendor-packages:${PLATFORM}
+ VENDOR_PACKAGES_IMAGE: cc-vendor-packages:${PLATFORM}
image: cc-ros-${ROS_DISTRO}:${PLATFORM}
depends_on:
- vendor-packages
diff --git a/cross_compile/ros2/Dockerfile.ros_rolling b/cross_compile/ros2/Dockerfile.ros_rolling
index f66195e..4cca55b 100644
--- a/cross_compile/ros2/Dockerfile.ros_rolling
+++ b/cross_compile/ros2/Dockerfile.ros_rolling
@@ -15,11 +15,14 @@ FROM ${VENDOR_PACKAGES_IMAGE} AS vendor_images
FROM ${CC_PLATFORM_IMAGE} AS ros_builder
+WORKDIR /workspace
COPY --from=ros_src /workspace /workspace
COPY --from=vendor_images ${TARGET_SYSROOT} ${TARGET_SYSROOT}
+COPY ros2/ros_cpp /workspace/src/ros_cpp
RUN touch src/ros2/geometry2/tf2_bullet/COLCON_IGNORE \
- && touch src/ros2/rosbag2/rosbag2_storage_sqlite3/COLCON_IGNORE
+ && touch src/ros2/rosbag2/rosbag2_storage_sqlite3/COLCON_IGNORE \
+ && touch src/ros-perception/image_transport_plugins/theora_image_transport/COLCON_IGNORE
RUN MAKEFLAGS="-j6" colcon build \
--executor parallel \
@@ -36,3 +39,56 @@ RUN MAKEFLAGS="-j6" colcon build \
-DBUILD_TESTING=OFF \
-DTRACETOOLS_DISABLED=ON \
-DCV_BRIDGE_DISABLE_PYTHON=ON
+
+# pybind11 python soabi issue
+WORKDIR ${TARGET_SYSROOT}/lib/python3.10/site-packages/rclpy
+RUN mv _rclpy_pybind11.cpython-310-x86_64-linux-gnu.so _rclpy_pybind11.cpython-310-aarch64-linux-gnu.so
+WORKDIR ${TARGET_SYSROOT}/lib/python3.10/site-packages/rosbag2_py
+RUN mv _transport.cpython-310-x86_64-linux-gnu.so _transport.cpython-310-aarch64-linux-gnu.so
+RUN mv _info.cpython-310-x86_64-linux-gnu.so _info.cpython-310-aarch64-linux-gnu.so
+RUN mv _compression_options.cpython-310-x86_64-linux-gnu.so _compression_options.cpython-310-aarch64-linux-gnu.so
+RUN mv _storage.cpython-310-x86_64-linux-gnu.so _storage.cpython-310-aarch64-linux-gnu.so
+RUN mv _reindexer.cpython-310-x86_64-linux-gnu.so _reindexer.cpython-310-aarch64-linux-gnu.so
+RUN mv _writer.cpython-310-x86_64-linux-gnu.so _writer.cpython-310-aarch64-linux-gnu.so
+RUN mv _message_definitions.cpython-310-x86_64-linux-gnu.so _message_definitions.cpython-310-aarch64-linux-gnu.so
+RUN mv _reader.cpython-310-x86_64-linux-gnu.so _reader.cpython-310-aarch64-linux-gnu.so
+
+FROM ${CC_PLATFORM_IMAGE} AS rmw_zenoh_builder
+
+COPY --from=ros_builder ${TARGET_SYSROOT} ${TARGET_SYSROOT}
+
+# rust install
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
+RUN . "$HOME/.cargo/env" \
+ && rustup install 1.75.0 \
+ && rustup default 1.75.0 \
+ && rustup target add aarch64-unknown-linux-gnu
+
+RUN mkdir rmw_zenoh_ws/src -p \
+ && cd rmw_zenoh_ws/src \
+ && git clone -b rolling https://github.com/ros2/rmw_zenoh.git
+
+ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-none-linux-gnu-gcc
+
+RUN . "$HOME/.cargo/env" \
+ && . ${TARGET_SYSROOT}/local_setup.sh \
+ && colcon build \
+ --install-base ${TARGET_SYSROOT} \
+ --merge-install \
+ --packages-up-to rmw_zenoh_cpp \
+ --cmake-force-configure \
+ --cmake-args \
+ --no-warn-unused-cli \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_TOOLCHAIN_FILE=${CC_TOOLCHAIN_FILE} \
+ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
+ -DBUILD_TESTING=OFF \
+ -DZENOHC_CUSTOM_TARGET=aarch64-unknown-linux-gnu
+
+RUN cp -rf ${TARGET_SYSROOT}/opt/zenoh_cpp_vendor/include ${TARGET_SYSROOT}
+RUN cp -rf ${TARGET_SYSROOT}/opt/zenoh_cpp_vendor/lib ${TARGET_SYSROOT}
+RUN rm -rf ${TARGET_SYSROOT}/opt
+
+FROM ${CC_PLATFORM_IMAGE} AS final
+
+COPY --from=rmw_zenoh_builder ${TARGET_SYSROOT} ${TARGET_SYSROOT}
diff --git a/cross_compile/ros2/ros_cpp/package.xml b/cross_compile/ros2/ros_cpp/package.xml
index 3dfae6c..07c1d15 100644
--- a/cross_compile/ros2/ros_cpp/package.xml
+++ b/cross_compile/ros2/ros_cpp/package.xml
@@ -17,8 +17,6 @@
opencv_vendor -->
console_bridge_vendor
- rcl_lifecycle
-
rcl_lifecycle
diff --git a/cross_compile/ros2/ros_rolling.repos b/cross_compile/ros2/ros_rolling.repos
index 29e4f4b..150b5b0 100644
--- a/cross_compile/ros2/ros_rolling.repos
+++ b/cross_compile/ros2/ros_rolling.repos
@@ -419,3 +419,15 @@ repositories:
type: git
url: https://github.com/ros2/console_bridge_vendor.git
version: rolling
+ ros2/libyaml_vendor:
+ type: git
+ url: https://github.com/ros2/libyaml_vendor.git
+ version: rolling
+ ros2/spdlog_vendor:
+ type: git
+ url: https://github.com/ros2/spdlog_vendor.git
+ version: rolling
+ ros2/yaml_cpp_vendor:
+ type: git
+ url: https://github.com/ros2/yaml_cpp_vendor.git
+ version: rolling
\ No newline at end of file
diff --git a/cross_compile/vendor_packages/console_bridge_vendor/CMakeLists.txt b/cross_compile/vendor_packages/console_bridge_vendor/CMakeLists.txt
new file mode 100644
index 0000000..9aa4633
--- /dev/null
+++ b/cross_compile/vendor_packages/console_bridge_vendor/CMakeLists.txt
@@ -0,0 +1,25 @@
+cmake_minimum_required(VERSION 3.8)
+project(console_bridge_vendor)
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+# uncomment the following section in order to fill in
+# further dependencies manually.
+# find_package( REQUIRED)
+
+include(ExternalProject)
+ExternalProject_Add(
+ console_bridge_vendor
+ GIT_REPOSITORY https://github.com/ros/console_bridge.git
+ GIT_TAG 81ec67f6daf3cd19ef506e00f02efb1645597b9c
+
+ CMAKE_ARGS
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+ -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
+ -DBUILD_TESTING=OFF
+)
+
diff --git a/cross_compile/vendor_packages/console_bridge_vendor/package.xml b/cross_compile/vendor_packages/console_bridge_vendor/package.xml
new file mode 100644
index 0000000..d7b7818
--- /dev/null
+++ b/cross_compile/vendor_packages/console_bridge_vendor/package.xml
@@ -0,0 +1,13 @@
+
+
+
+ console_bridge_vendor
+ 0.0.0
+ TODO: Package description
+ ericx
+ TODO: License declaration
+
+
+ cmake
+
+
diff --git a/cross_compile/vendor_packages/json_vendor/CMakeLists.txt b/cross_compile/vendor_packages/json_vendor/CMakeLists.txt
new file mode 100644
index 0000000..b8aa8e8
--- /dev/null
+++ b/cross_compile/vendor_packages/json_vendor/CMakeLists.txt
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 3.8)
+project(json_vendor)
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+# uncomment the following section in order to fill in
+# further dependencies manually.
+# find_package( REQUIRED)
+
+include(FetchContent)
+FetchContent_Declare(
+ json_vendor
+ URL https://github.com/nlohmann/json/archive/refs/tags/v3.12.0.tar.gz
+)
+
+set(CMAKE_BUILD_TYPE Release)
+set(JSON_BuildTests OFF CACHE BOOL "JSON_BuildTests" FORCE)
+set(JSON_Install ON CACHE BOOL "JSON_Install" FORCE)
+
+FetchContent_MakeAvailable(json_vendor)
+
diff --git a/cross_compile/vendor_packages/json_vendor/package.xml b/cross_compile/vendor_packages/json_vendor/package.xml
new file mode 100644
index 0000000..15c8944
--- /dev/null
+++ b/cross_compile/vendor_packages/json_vendor/package.xml
@@ -0,0 +1,13 @@
+
+
+
+ json_vendor
+ 0.0.0
+ TODO: Package description
+ ericx
+ TODO: License declaration
+
+
+ cmake
+
+
diff --git a/cross_compile/vendor_packages/spdlog_vendor/CMakeLists.txt b/cross_compile/vendor_packages/spdlog_vendor/CMakeLists.txt
index fbb6e59..35903f9 100644
--- a/cross_compile/vendor_packages/spdlog_vendor/CMakeLists.txt
+++ b/cross_compile/vendor_packages/spdlog_vendor/CMakeLists.txt
@@ -12,13 +12,15 @@ endif()
include(FetchContent)
FetchContent_Declare(
spdlog_vendor
- URL https://github.com/gabime/spdlog/archive/refs/tags/v1.17.0.tar.gz
+ URL https://github.com/gabime/spdlog/archive/refs/tags/v1.12.0.tar.gz
)
set(CMAKE_BUILD_TYPE Release)
+set(SPDLOG_BUILD_SHARED ON CACHE BOOL "SPDLOG_BUILD_SHARED" FORCE)
set(SPDLOG_BUILD_TESTS OFF CACHE BOOL "SPDLOG_BUILD_TESTS" FORCE)
set(SPDLOG_BUILD_EXAMPLE OFF CACHE BOOL "SPDLOG_BUILD_EXAMPLE" FORCE)
set(SPDLOG_INSTALL ON CACHE BOOL "SPDLOG_INSTALL" FORCE)
+set(SPDLOG_BUILD_PIC ON CACHE BOOL "SPDLOG_BUILD_PIC" FORCE)
FetchContent_MakeAvailable(spdlog_vendor)
diff --git a/cross_compile/vendor_packages/system_vendor_packages/package.xml b/cross_compile/vendor_packages/system_vendor_packages/package.xml
index d74aca8..59d5c04 100644
--- a/cross_compile/vendor_packages/system_vendor_packages/package.xml
+++ b/cross_compile/vendor_packages/system_vendor_packages/package.xml
@@ -19,6 +19,9 @@
pybind11_vendor
spdlog_vendor
asio_vendor
+ console_bridge_vendor
+ zlib_vendor
+ json_vendor
cmake
diff --git a/cross_compile/vendor_packages/zlib_vendor/CMakeLists.txt b/cross_compile/vendor_packages/zlib_vendor/CMakeLists.txt
new file mode 100644
index 0000000..9e077c7
--- /dev/null
+++ b/cross_compile/vendor_packages/zlib_vendor/CMakeLists.txt
@@ -0,0 +1,22 @@
+cmake_minimum_required(VERSION 3.8)
+project(zlib_vendor)
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+# uncomment the following section in order to fill in
+# further dependencies manually.
+# find_package( REQUIRED)
+
+include(FetchContent)
+FetchContent_Declare(
+ zlib_vendor
+ URL https://github.com/madler/zlib/archive/refs/tags/v1.3.1.tar.gz
+)
+
+set(CMAKE_BUILD_TYPE Release)
+set(ZLIB_BUILD_EXAMPLES OFF CACHE BOOL "ZLIB_BUILD_EXAMPLES" FORCE)
+
+FetchContent_MakeAvailable(zlib_vendor)
+
diff --git a/cross_compile/vendor_packages/zlib_vendor/package.xml b/cross_compile/vendor_packages/zlib_vendor/package.xml
new file mode 100644
index 0000000..6fc5798
--- /dev/null
+++ b/cross_compile/vendor_packages/zlib_vendor/package.xml
@@ -0,0 +1,13 @@
+
+
+
+ zlib_vendor
+ 0.0.0
+ TODO: Package description
+ ericx
+ TODO: License declaration
+
+
+ cmake
+
+