Switch RK3576 toolchain to Buildroot SDK and migrate to Python 3.10

This commit is contained in:
EricX-Zhao
2026-07-11 20:29:12 +03:00
parent 39f628605f
commit 8868ca2a35
5 changed files with 47 additions and 42 deletions
@@ -23,8 +23,7 @@ COPY --from=vendor_images ${TARGET_SYSROOT} ${TARGET_SYSROOT}
COPY ros2/${ROS_DISTRO}/patch /workspace/patch
COPY ros2/ros_cpp /workspace/src/ros_cpp
# COPY rk3576/rk3576.toolchain.cmake /opt/cmake/
# RUN python3.11 -m pip install lark
COPY rk3576/rk3576.toolchain.cmake /opt/cmake/
# apply patch
RUN patch -p1 -d /workspace/src/ros2/rclcpp < /workspace/patch/memory_strategy.patch
@@ -51,26 +50,13 @@ RUN MAKEFLAGS="-j6" colcon build \
-DTRACETOOLS_DISABLED=ON \
-DCV_BRIDGE_DISABLE_PYTHON=ON
# pybind11 python soabi issue
RUN cd ${TARGET_SYSROOT}/lib/python3.11/site-packages/rclpy \
mv _rclpy_pybind11.cpython-311-x86_64-linux-gnu.so _rclpy_pybind11.cpython-311-aarch64-linux-gnu.so
RUN cd ${TARGET_SYSROOT}/lib/python3.11/site-packages/rosbag2_py \
&& mv _transport.cpython-311-x86_64-linux-gnu.so _transport.cpython-311-aarch64-linux-gnu.so \
&& mv _info.cpython-311-x86_64-linux-gnu.so _info.cpython-311-aarch64-linux-gnu.so \
&& mv _compression_options.cpython-311-x86_64-linux-gnu.so _compression_options.cpython-311-aarch64-linux-gnu.so \
&& mv _storage.cpython-311-x86_64-linux-gnu.so _storage.cpython-311-aarch64-linux-gnu.so \
&& mv _reindexer.cpython-311-x86_64-linux-gnu.so _reindexer.cpython-311-aarch64-linux-gnu.so \
&& mv _writer.cpython-311-x86_64-linux-gnu.so _writer.cpython-311-aarch64-linux-gnu.so \
&& mv _message_definitions.cpython-311-x86_64-linux-gnu.so _message_definitions.cpython-311-aarch64-linux-gnu.so \
&& mv _reader.cpython-311-x86_64-linux-gnu.so _reader.cpython-311-aarch64-linux-gnu.so
RUN cd ${TARGET_SYSROOT}/lib/python3.11/site-packages/rosidl_buffer \
&& mv _rosidl_buffer_py.cpython-311-x86_64-linux-gnu.so _rosidl_buffer_py.cpython-311-aarch64-linux-gnu.so
FROM ${CC_PLATFORM_IMAGE} AS rmw_zenoh_builder
ARG ROS_ROOT
ENV ROS_ROOT=${ROS_ROOT}
COPY --from=ros_builder ${TARGET_SYSROOT} ${TARGET_SYSROOT}
RUN python3.10 -m pip install numpy==1.21.5
# rust install
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
RUN . "$HOME/.cargo/env" \
@@ -82,7 +68,14 @@ RUN mkdir rmw_zenoh_ws/src -p \
&& cd rmw_zenoh_ws/src \
&& git clone --depth=1 -b lyrical https://github.com/ros2/rmw_zenoh.git
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-buildroot-linux-gnu-gcc
# --- 给 cargo/cc-rs 补上明确的区分 ---
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-buildroot-linux-gnu-gcc \
CC_aarch64_unknown_linux_gnu=aarch64-buildroot-linux-gnu-gcc \
CXX_aarch64_unknown_linux_gnu=aarch64-buildroot-linux-gnu-g++ \
AR_aarch64_unknown_linux_gnu=aarch64-buildroot-linux-gnu-ar \
HOST_CC=gcc \
HOST_CXX=g++ \
HOST_AR=ar
RUN . "$HOME/.cargo/env" \
&& . ${TARGET_SYSROOT}/local_setup.sh \
@@ -109,4 +102,20 @@ ARG ROS_ROOT
ENV ROS_ROOT=${ROS_ROOT}
COPY --from=rmw_zenoh_builder ${TARGET_SYSROOT} ${ROS_ROOT}
ENV TARGET_SYSROOT=${ROS_ROOT}
# pybind11 python soabi issue
RUN cd ${ROS_ROOT}/lib/python3.10/site-packages/rclpy \
&& mv _rclpy_pybind11.cpython-310-x86_64-linux-gnu.so _rclpy_pybind11.cpython-310-aarch64-linux-gnu.so
RUN cd ${ROS_ROOT}/lib/python3.10/site-packages/rosbag2_py \
&& mv _transport.cpython-310-x86_64-linux-gnu.so _transport.cpython-310-aarch64-linux-gnu.so \
&& mv _info.cpython-310-x86_64-linux-gnu.so _info.cpython-310-aarch64-linux-gnu.so \
&& mv _compression_options.cpython-310-x86_64-linux-gnu.so _compression_options.cpython-310-aarch64-linux-gnu.so \
&& mv _storage.cpython-310-x86_64-linux-gnu.so _storage.cpython-310-aarch64-linux-gnu.so \
&& mv _reindexer.cpython-310-x86_64-linux-gnu.so _reindexer.cpython-310-aarch64-linux-gnu.so \
&& mv _writer.cpython-310-x86_64-linux-gnu.so _writer.cpython-310-aarch64-linux-gnu.so \
&& mv _message_definitions.cpython-310-x86_64-linux-gnu.so _message_definitions.cpython-310-aarch64-linux-gnu.so \
&& mv _reader.cpython-310-x86_64-linux-gnu.so _reader.cpython-310-aarch64-linux-gnu.so
RUN cd ${ROS_ROOT}/lib/python3.10/site-packages/rosidl_buffer \
&& mv _rosidl_buffer_py.cpython-310-x86_64-linux-gnu.so _rosidl_buffer_py.cpython-310-aarch64-linux-gnu.so
WORKDIR /workspace