From ea0313a66d1fe680ae3e77834939d0f38f671478 Mon Sep 17 00:00:00 2001 From: EricX-Zhao Date: Tue, 7 Jul 2026 10:07:30 +0300 Subject: [PATCH] Add support for RK3576 platform and restructure vendor packages directory --- build.sh | 8 ++ cross_compile/compose.yaml | 2 +- cross_compile/rk3576/rk3576.toolchain.cmake | 2 +- cross_compile/rk3588/rk3588.toolchain.cmake | 2 +- .../ros2/lyrical/ros_lyrical.Dockerfile | 18 ++-- cross_compile/vendor/extract_wheels.sh | 31 +++++++ .../packages}/asio_vendor/CMakeLists.txt | 2 +- .../packages}/asio_vendor/package.xml | 0 .../packages}/ceres_vendor/CMakeLists.txt | 0 .../packages}/ceres_vendor/package.xml | 0 .../console_bridge_vendor/CMakeLists.txt | 0 .../console_bridge_vendor/package.xml | 0 .../packages}/eigen3_vendor/CMakeLists.txt | 0 .../packages}/eigen3_vendor/package.xml | 0 .../packages}/flann_vendor/CMakeLists.txt | 0 .../packages}/flann_vendor/package.xml | 0 .../geographiclib_vendor/CMakeLists.txt | 0 .../geographiclib_vendor/package.xml | 0 .../packages}/gflags_vendor/CMakeLists.txt | 0 .../packages}/gflags_vendor/package.xml | 0 .../packages}/glog_vendor/CMakeLists.txt | 0 .../packages}/glog_vendor/package.xml | 0 .../packages}/json_vendor/CMakeLists.txt | 0 .../packages}/json_vendor/package.xml | 0 .../packages}/liblz4_vendor/CMakeLists.txt | 0 .../packages}/liblz4_vendor/package.xml | 0 .../packages}/libyaml_vendor/CMakeLists.txt | 0 .../packages}/libyaml_vendor/package.xml | 0 .../packages}/mimick_vendor/CMakeLists.txt | 0 .../packages}/mimick_vendor/package.xml | 0 .../packages}/openblas_vendor/CMakeLists.txt | 0 .../packages}/openblas_vendor/package.xml | 0 .../packages}/opencv_vendor/CMakeLists.txt | 0 .../packages}/opencv_vendor/package.xml | 0 .../orocos_kdl_vendor/CMakeLists.txt | 0 .../packages}/orocos_kdl_vendor/package.xml | 0 .../packages}/pcl_vendor/CMakeLists.txt | 0 .../packages}/pcl_vendor/package.xml | 0 .../packages}/pybind11_vendor/CMakeLists.txt | 0 .../packages}/pybind11_vendor/package.xml | 0 .../packages}/spdlog_vendor/CMakeLists.txt | 0 .../packages}/spdlog_vendor/package.xml | 0 .../suitesparse_vendor/CMakeLists.txt | 0 .../packages}/suitesparse_vendor/package.xml | 0 .../system_vendor_packages/CMakeLists.txt | 0 .../system_vendor_packages/package.xml | 0 .../packages}/tinyxml2_vendor/CMakeLists.txt | 0 .../packages}/tinyxml2_vendor/package.xml | 0 .../uncrustify_vendor/CMakeLists.txt | 0 .../packages}/uncrustify_vendor/package.xml | 0 .../packages}/yaml_cpp_vendor/CMakeLists.txt | 0 .../packages}/yaml_cpp_vendor/package.xml | 0 .../packages}/zlib_vendor/CMakeLists.txt | 0 .../packages}/zlib_vendor/package.xml | 0 .../packages}/zstd_vendor/CMakeLists.txt | 0 .../packages}/zstd_vendor/package.xml | 0 .../vendor_packages.Dockerfile | 85 +++++++++++++------ 57 files changed, 116 insertions(+), 34 deletions(-) create mode 100644 cross_compile/vendor/extract_wheels.sh rename cross_compile/{vendor_packages => vendor/packages}/asio_vendor/CMakeLists.txt (97%) rename cross_compile/{vendor_packages => vendor/packages}/asio_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/ceres_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/ceres_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/console_bridge_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/console_bridge_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/eigen3_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/eigen3_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/flann_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/flann_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/geographiclib_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/geographiclib_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/gflags_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/gflags_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/glog_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/glog_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/json_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/json_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/liblz4_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/liblz4_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/libyaml_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/libyaml_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/mimick_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/mimick_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/openblas_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/openblas_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/opencv_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/opencv_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/orocos_kdl_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/orocos_kdl_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/pcl_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/pcl_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/pybind11_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/pybind11_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/spdlog_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/spdlog_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/suitesparse_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/suitesparse_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/system_vendor_packages/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/system_vendor_packages/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/tinyxml2_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/tinyxml2_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/uncrustify_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/uncrustify_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/yaml_cpp_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/yaml_cpp_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/zlib_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/zlib_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor/packages}/zstd_vendor/CMakeLists.txt (100%) rename cross_compile/{vendor_packages => vendor/packages}/zstd_vendor/package.xml (100%) rename cross_compile/{vendor_packages => vendor}/vendor_packages.Dockerfile (67%) diff --git a/build.sh b/build.sh index 5c5f8fb..32b4a9c 100755 --- a/build.sh +++ b/build.sh @@ -7,6 +7,7 @@ set -x # ./build.sh -t RK3588 -p "depthai_examples vins_estimator" -b Release # ./build.sh -t RK3588 -p "svo_ros" -b Release # ./build.sh -t DESKTOP -p "ov_core ov_init ov_msckf" -b RelWithDebInfo -l 1 +# ./build.sh -t RK3576 -p "mavros mavros_extras" -b Release # export WORKSPACE="$(dirname "$(realpath "$BASH_SOURCE")")" # export WORKSPACE="$(realpath "$BASH_SOURCE")" @@ -83,6 +84,13 @@ if [[ "${TARGET_PLATFORM}" = "RK3588" ]]; then export ARM_ARCHITECTURE=arm64 fi +if [[ "${TARGET_PLATFORM}" = "RK3576" ]]; then + # in rk3588_dev container + TOOLCHAIN_FILE=/opt/cmake/rk3576.toolchain.cmake + CMAKE_ARGS+=" -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}" + export ARM_ARCHITECTURE=arm64 +fi + export TARGET=${TARGET_PLATFORM} INSTALL_DIR=${WORKSPACE}/output/${TARGET_PLATFORM}/install diff --git a/cross_compile/compose.yaml b/cross_compile/compose.yaml index c0d68fd..d0745f7 100644 --- a/cross_compile/compose.yaml +++ b/cross_compile/compose.yaml @@ -21,7 +21,7 @@ services: vendor-packages: build: context: . - dockerfile: vendor_packages/vendor_packages.Dockerfile + dockerfile: vendor/vendor_packages.Dockerfile args: CC_PLATFORM_IMAGE: ${PLATFORM}/cc-toolchain:latest image: ${PLATFORM}/cc-vendor-packages:latest diff --git a/cross_compile/rk3576/rk3576.toolchain.cmake b/cross_compile/rk3576/rk3576.toolchain.cmake index 5d92ba6..d3a365c 100644 --- a/cross_compile/rk3576/rk3576.toolchain.cmake +++ b/cross_compile/rk3576/rk3576.toolchain.cmake @@ -23,7 +23,7 @@ list(APPEND CMAKE_FIND_ROOT_PATH # add_link_options("LINKER:-rpath-link,$ENV{TARGET_SYSROOT}/lib") set(Python3_EXECUTABLE /usr/bin/python3) -# set(Python3_NumPy_INCLUDE_DIR $ENV{TARGET_SYSROOT}/lib/python3.10/site-packages/numpy/core/include) +set(Python3_NumPy_INCLUDE_DIR $ENV{ROS_ROOT}/lib/python3.10/site-packages/numpy/core/include) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) diff --git a/cross_compile/rk3588/rk3588.toolchain.cmake b/cross_compile/rk3588/rk3588.toolchain.cmake index c9ba802..16a922f 100644 --- a/cross_compile/rk3588/rk3588.toolchain.cmake +++ b/cross_compile/rk3588/rk3588.toolchain.cmake @@ -23,7 +23,7 @@ list(APPEND CMAKE_FIND_ROOT_PATH # add_link_options("LINKER:-rpath-link,$ENV{TARGET_SYSROOT}/lib") set(Python3_EXECUTABLE /usr/bin/python3) -set(Python3_NumPy_INCLUDE_DIR $ENV{TARGET_SYSROOT}/lib/python3.10/site-packages/numpy/core/include) +set(Python3_NumPy_INCLUDE_DIR $ENV{ROS_ROOT}/lib/python3.10/site-packages/numpy/core/include) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) diff --git a/cross_compile/ros2/lyrical/ros_lyrical.Dockerfile b/cross_compile/ros2/lyrical/ros_lyrical.Dockerfile index 3c50664..45acb43 100644 --- a/cross_compile/ros2/lyrical/ros_lyrical.Dockerfile +++ b/cross_compile/ros2/lyrical/ros_lyrical.Dockerfile @@ -13,12 +13,14 @@ RUN echo "Build ros ${ROS_DISTRO}" FROM ${VENDOR_PACKAGES_IMAGE} AS vendor_images FROM ${CC_PLATFORM_IMAGE} AS ros_builder - ARG ROS_DISTRO +ARG ROS_ROOT +ENV ROS_ROOT=${ROS_ROOT} + WORKDIR /workspace COPY --from=ros_src /workspace /workspace -COPY ros2/${ROS_DISTRO}/patch /workspace/patch COPY --from=vendor_images ${TARGET_SYSROOT} ${TARGET_SYSROOT} +COPY ros2/${ROS_DISTRO}/patch /workspace/patch COPY ros2/ros_cpp /workspace/src/ros_cpp # apply patch @@ -30,7 +32,7 @@ RUN touch src/ros2/geometry2/tf2_bullet/COLCON_IGNORE \ && touch src/diagnostics/diagnostic_remote_logging/COLCON_IGNORE # -DPYTHON_SOABI=cpython-310-aarch64-linux-gnu -RUN MAKEFLAGS="-j6" colcon build \ +RUN MAKEFLAGS="-j6" ROS_ROOT=/opt/rk3576 colcon build \ --executor parallel \ --parallel-workers 6 \ --install-base ${TARGET_SYSROOT} \ @@ -44,7 +46,9 @@ RUN MAKEFLAGS="-j6" colcon build \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DBUILD_TESTING=OFF \ -DTRACETOOLS_DISABLED=ON \ - -DCV_BRIDGE_DISABLE_PYTHON=ON + -DCV_BRIDGE_DISABLE_PYTHON=ON \ + -DPython3_NumPy_INCLUDE_DI=/opt/rk3576/lib/python3.10/site-packages/numpy/core/include \ + -DPYTHON_SOABI=cpython-310-aarch64-linux-gnu # pybind11 python soabi issue WORKDIR ${TARGET_SYSROOT}/lib/python3.10/site-packages/rclpy @@ -62,7 +66,8 @@ WORKDIR ${TARGET_SYSROOT}/lib/python3.10/site-packages/rosidl_buffer RUN mv _rosidl_buffer_py.cpython-310-x86_64-linux-gnu.so _rosidl_buffer_py.cpython-310-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} # rust install @@ -102,4 +107,5 @@ FROM ${CC_PLATFORM_IMAGE} AS final ARG ROS_ROOT ENV ROS_ROOT=${ROS_ROOT} COPY --from=rmw_zenoh_builder ${TARGET_SYSROOT} ${ROS_ROOT} -WORKDIR /opt +ENV TARGET_SYSROOT=${ROS_ROOT} +WORKDIR /workspace diff --git a/cross_compile/vendor/extract_wheels.sh b/cross_compile/vendor/extract_wheels.sh new file mode 100644 index 0000000..007b33f --- /dev/null +++ b/cross_compile/vendor/extract_wheels.sh @@ -0,0 +1,31 @@ +#!/bin/bash +set -euo pipefail + +SITE_PACKAGES="${1:?usage: extract_wheels.sh }" +WHEELS_DIR="${2:?usage: extract_wheels.sh }" + +mkdir -p "$SITE_PACKAGES" + +for f in "$WHEELS_DIR"/*; do + case "$f" in + *.whl) + python3 -m zipfile -e "$f" "$SITE_PACKAGES/" + ;; + *.tar.gz|*.tar.bz2) + tmpdir=$(mktemp -d) + tar xf "$f" -C "$tmpdir" + for pkgdir in "$tmpdir"/*/; do + for inner in "$pkgdir"*/; do + if [ -f "${inner}__init__.py" ]; then + cp -r "$inner" "$SITE_PACKAGES/" + fi + done + find "$pkgdir" -maxdepth 1 -name "*.py" -exec cp {} "$SITE_PACKAGES/" \; + done + rm -rf "$tmpdir" + ;; + esac +done + +echo "Extraction done. Contents of $SITE_PACKAGES:" +ls "$SITE_PACKAGES" \ No newline at end of file diff --git a/cross_compile/vendor_packages/asio_vendor/CMakeLists.txt b/cross_compile/vendor/packages/asio_vendor/CMakeLists.txt similarity index 97% rename from cross_compile/vendor_packages/asio_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/asio_vendor/CMakeLists.txt index 1eedc55..88c0b56 100644 --- a/cross_compile/vendor_packages/asio_vendor/CMakeLists.txt +++ b/cross_compile/vendor/packages/asio_vendor/CMakeLists.txt @@ -13,7 +13,7 @@ include(FetchContent) FetchContent_Declare( asio_vendor GIT_REPOSITORY https://github.com/chriskohlhoff/asio.git - GIT_TAG asio-1-36-0 + GIT_TAG asio-1-28-1 GIT_SHALLOW TRUE ) diff --git a/cross_compile/vendor_packages/asio_vendor/package.xml b/cross_compile/vendor/packages/asio_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/asio_vendor/package.xml rename to cross_compile/vendor/packages/asio_vendor/package.xml diff --git a/cross_compile/vendor_packages/ceres_vendor/CMakeLists.txt b/cross_compile/vendor/packages/ceres_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/ceres_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/ceres_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/ceres_vendor/package.xml b/cross_compile/vendor/packages/ceres_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/ceres_vendor/package.xml rename to cross_compile/vendor/packages/ceres_vendor/package.xml diff --git a/cross_compile/vendor_packages/console_bridge_vendor/CMakeLists.txt b/cross_compile/vendor/packages/console_bridge_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/console_bridge_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/console_bridge_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/console_bridge_vendor/package.xml b/cross_compile/vendor/packages/console_bridge_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/console_bridge_vendor/package.xml rename to cross_compile/vendor/packages/console_bridge_vendor/package.xml diff --git a/cross_compile/vendor_packages/eigen3_vendor/CMakeLists.txt b/cross_compile/vendor/packages/eigen3_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/eigen3_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/eigen3_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/eigen3_vendor/package.xml b/cross_compile/vendor/packages/eigen3_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/eigen3_vendor/package.xml rename to cross_compile/vendor/packages/eigen3_vendor/package.xml diff --git a/cross_compile/vendor_packages/flann_vendor/CMakeLists.txt b/cross_compile/vendor/packages/flann_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/flann_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/flann_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/flann_vendor/package.xml b/cross_compile/vendor/packages/flann_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/flann_vendor/package.xml rename to cross_compile/vendor/packages/flann_vendor/package.xml diff --git a/cross_compile/vendor_packages/geographiclib_vendor/CMakeLists.txt b/cross_compile/vendor/packages/geographiclib_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/geographiclib_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/geographiclib_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/geographiclib_vendor/package.xml b/cross_compile/vendor/packages/geographiclib_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/geographiclib_vendor/package.xml rename to cross_compile/vendor/packages/geographiclib_vendor/package.xml diff --git a/cross_compile/vendor_packages/gflags_vendor/CMakeLists.txt b/cross_compile/vendor/packages/gflags_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/gflags_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/gflags_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/gflags_vendor/package.xml b/cross_compile/vendor/packages/gflags_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/gflags_vendor/package.xml rename to cross_compile/vendor/packages/gflags_vendor/package.xml diff --git a/cross_compile/vendor_packages/glog_vendor/CMakeLists.txt b/cross_compile/vendor/packages/glog_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/glog_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/glog_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/glog_vendor/package.xml b/cross_compile/vendor/packages/glog_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/glog_vendor/package.xml rename to cross_compile/vendor/packages/glog_vendor/package.xml diff --git a/cross_compile/vendor_packages/json_vendor/CMakeLists.txt b/cross_compile/vendor/packages/json_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/json_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/json_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/json_vendor/package.xml b/cross_compile/vendor/packages/json_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/json_vendor/package.xml rename to cross_compile/vendor/packages/json_vendor/package.xml diff --git a/cross_compile/vendor_packages/liblz4_vendor/CMakeLists.txt b/cross_compile/vendor/packages/liblz4_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/liblz4_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/liblz4_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/liblz4_vendor/package.xml b/cross_compile/vendor/packages/liblz4_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/liblz4_vendor/package.xml rename to cross_compile/vendor/packages/liblz4_vendor/package.xml diff --git a/cross_compile/vendor_packages/libyaml_vendor/CMakeLists.txt b/cross_compile/vendor/packages/libyaml_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/libyaml_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/libyaml_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/libyaml_vendor/package.xml b/cross_compile/vendor/packages/libyaml_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/libyaml_vendor/package.xml rename to cross_compile/vendor/packages/libyaml_vendor/package.xml diff --git a/cross_compile/vendor_packages/mimick_vendor/CMakeLists.txt b/cross_compile/vendor/packages/mimick_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/mimick_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/mimick_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/mimick_vendor/package.xml b/cross_compile/vendor/packages/mimick_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/mimick_vendor/package.xml rename to cross_compile/vendor/packages/mimick_vendor/package.xml diff --git a/cross_compile/vendor_packages/openblas_vendor/CMakeLists.txt b/cross_compile/vendor/packages/openblas_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/openblas_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/openblas_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/openblas_vendor/package.xml b/cross_compile/vendor/packages/openblas_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/openblas_vendor/package.xml rename to cross_compile/vendor/packages/openblas_vendor/package.xml diff --git a/cross_compile/vendor_packages/opencv_vendor/CMakeLists.txt b/cross_compile/vendor/packages/opencv_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/opencv_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/opencv_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/opencv_vendor/package.xml b/cross_compile/vendor/packages/opencv_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/opencv_vendor/package.xml rename to cross_compile/vendor/packages/opencv_vendor/package.xml diff --git a/cross_compile/vendor_packages/orocos_kdl_vendor/CMakeLists.txt b/cross_compile/vendor/packages/orocos_kdl_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/orocos_kdl_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/orocos_kdl_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/orocos_kdl_vendor/package.xml b/cross_compile/vendor/packages/orocos_kdl_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/orocos_kdl_vendor/package.xml rename to cross_compile/vendor/packages/orocos_kdl_vendor/package.xml diff --git a/cross_compile/vendor_packages/pcl_vendor/CMakeLists.txt b/cross_compile/vendor/packages/pcl_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/pcl_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/pcl_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/pcl_vendor/package.xml b/cross_compile/vendor/packages/pcl_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/pcl_vendor/package.xml rename to cross_compile/vendor/packages/pcl_vendor/package.xml diff --git a/cross_compile/vendor_packages/pybind11_vendor/CMakeLists.txt b/cross_compile/vendor/packages/pybind11_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/pybind11_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/pybind11_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/pybind11_vendor/package.xml b/cross_compile/vendor/packages/pybind11_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/pybind11_vendor/package.xml rename to cross_compile/vendor/packages/pybind11_vendor/package.xml diff --git a/cross_compile/vendor_packages/spdlog_vendor/CMakeLists.txt b/cross_compile/vendor/packages/spdlog_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/spdlog_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/spdlog_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/spdlog_vendor/package.xml b/cross_compile/vendor/packages/spdlog_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/spdlog_vendor/package.xml rename to cross_compile/vendor/packages/spdlog_vendor/package.xml diff --git a/cross_compile/vendor_packages/suitesparse_vendor/CMakeLists.txt b/cross_compile/vendor/packages/suitesparse_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/suitesparse_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/suitesparse_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/suitesparse_vendor/package.xml b/cross_compile/vendor/packages/suitesparse_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/suitesparse_vendor/package.xml rename to cross_compile/vendor/packages/suitesparse_vendor/package.xml diff --git a/cross_compile/vendor_packages/system_vendor_packages/CMakeLists.txt b/cross_compile/vendor/packages/system_vendor_packages/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/system_vendor_packages/CMakeLists.txt rename to cross_compile/vendor/packages/system_vendor_packages/CMakeLists.txt diff --git a/cross_compile/vendor_packages/system_vendor_packages/package.xml b/cross_compile/vendor/packages/system_vendor_packages/package.xml similarity index 100% rename from cross_compile/vendor_packages/system_vendor_packages/package.xml rename to cross_compile/vendor/packages/system_vendor_packages/package.xml diff --git a/cross_compile/vendor_packages/tinyxml2_vendor/CMakeLists.txt b/cross_compile/vendor/packages/tinyxml2_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/tinyxml2_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/tinyxml2_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/tinyxml2_vendor/package.xml b/cross_compile/vendor/packages/tinyxml2_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/tinyxml2_vendor/package.xml rename to cross_compile/vendor/packages/tinyxml2_vendor/package.xml diff --git a/cross_compile/vendor_packages/uncrustify_vendor/CMakeLists.txt b/cross_compile/vendor/packages/uncrustify_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/uncrustify_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/uncrustify_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/uncrustify_vendor/package.xml b/cross_compile/vendor/packages/uncrustify_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/uncrustify_vendor/package.xml rename to cross_compile/vendor/packages/uncrustify_vendor/package.xml diff --git a/cross_compile/vendor_packages/yaml_cpp_vendor/CMakeLists.txt b/cross_compile/vendor/packages/yaml_cpp_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/yaml_cpp_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/yaml_cpp_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/yaml_cpp_vendor/package.xml b/cross_compile/vendor/packages/yaml_cpp_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/yaml_cpp_vendor/package.xml rename to cross_compile/vendor/packages/yaml_cpp_vendor/package.xml diff --git a/cross_compile/vendor_packages/zlib_vendor/CMakeLists.txt b/cross_compile/vendor/packages/zlib_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/zlib_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/zlib_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/zlib_vendor/package.xml b/cross_compile/vendor/packages/zlib_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/zlib_vendor/package.xml rename to cross_compile/vendor/packages/zlib_vendor/package.xml diff --git a/cross_compile/vendor_packages/zstd_vendor/CMakeLists.txt b/cross_compile/vendor/packages/zstd_vendor/CMakeLists.txt similarity index 100% rename from cross_compile/vendor_packages/zstd_vendor/CMakeLists.txt rename to cross_compile/vendor/packages/zstd_vendor/CMakeLists.txt diff --git a/cross_compile/vendor_packages/zstd_vendor/package.xml b/cross_compile/vendor/packages/zstd_vendor/package.xml similarity index 100% rename from cross_compile/vendor_packages/zstd_vendor/package.xml rename to cross_compile/vendor/packages/zstd_vendor/package.xml diff --git a/cross_compile/vendor_packages/vendor_packages.Dockerfile b/cross_compile/vendor/vendor_packages.Dockerfile similarity index 67% rename from cross_compile/vendor_packages/vendor_packages.Dockerfile rename to cross_compile/vendor/vendor_packages.Dockerfile index 05d3ed4..a13cfea 100644 --- a/cross_compile/vendor_packages/vendor_packages.Dockerfile +++ b/cross_compile/vendor/vendor_packages.Dockerfile @@ -2,7 +2,7 @@ ARG CC_PLATFORM_IMAGE FROM ${CC_PLATFORM_IMAGE} AS system_packages -COPY vendor_packages workspace/src/ +COPY vendor/packages workspace/src/ RUN cd workspace \ && colcon build \ @@ -16,15 +16,14 @@ RUN cd workspace \ -DBUILD_TESTING=OFF \ -DCMAKE_TOOLCHAIN_FILE=${CC_TOOLCHAIN_FILE} - FROM ${CC_PLATFORM_IMAGE} AS ceres_vendor -COPY vendor_packages/eigen3_vendor workspace/src/eigen3_vendor +COPY vendor/packages/eigen3_vendor workspace/src/eigen3_vendor # COPY vendor_packages/gflags_vendor workspace/src/gflags_vendor # COPY vendor_packages/glog_vendor workspace/src/glog_vendor # COPY vendor_packages/openblas_vendor workspace/src/openblas_vendor # COPY vendor_packages/suitesparse_vendor workspace/src/suitesparse_vendor -COPY vendor_packages/ceres_vendor workspace/src/ceres_vendor +COPY vendor/packages/ceres_vendor workspace/src/ceres_vendor RUN cd workspace \ && colcon build \ @@ -40,7 +39,7 @@ RUN cd workspace \ FROM ${CC_PLATFORM_IMAGE} AS opencv_vendor -COPY vendor_packages/opencv_vendor workspace/src/opencv_vendor +COPY vendor/packages/opencv_vendor workspace/src/opencv_vendor RUN cd workspace \ && colcon build \ @@ -67,10 +66,10 @@ RUN tar -zxf boost_1_83_0.tar.gz \ FROM ${CC_PLATFORM_IMAGE} AS pcl_vendor -COPY vendor_packages/eigen3_vendor workspace/src/eigen3_vendor -COPY vendor_packages/liblz4_vendor workspace/src/liblz4_vendor -COPY vendor_packages/flann_vendor workspace/src/flann_vendor -COPY vendor_packages/pcl_vendor workspace/src/pcl_vendor +COPY vendor/packages/eigen3_vendor workspace/src/eigen3_vendor +COPY vendor/packages/liblz4_vendor workspace/src/liblz4_vendor +COPY vendor/packages/flann_vendor workspace/src/flann_vendor +COPY vendor/packages/pcl_vendor workspace/src/pcl_vendor COPY --from=boost ${TARGET_SYSROOT} ${TARGET_SYSROOT} @@ -101,12 +100,22 @@ RUN git clone --depth=1 https://github.com/janbar/openssl-cmake.git \ && make -j$(($(nproc) / 2)) && make install \ && rm -rf /tmp +# ffi +FROM ${CC_PLATFORM_IMAGE} AS ffi_builder +RUN git clone --depth=1 https://github.com/libffi/libffi.git \ + && cd libffi \ + && ./autogen.sh \ + && ./configure --host=aarch64-none-linux-gnu --build=x86_64-linux-gnu --disable-docs --prefix=${TARGET_SYSROOT} \ + && make -j$(nproc) && make install + # Python 3.12 FROM ${CC_PLATFORM_IMAGE} AS python_builder WORKDIR /tmp COPY --from=ssl_builder ${TARGET_SYSROOT} ${TARGET_SYSROOT} +COPY --from=system_packages ${TARGET_SYSROOT} ${TARGET_SYSROOT} +COPY --from=ffi_builder ${TARGET_SYSROOT} ${TARGET_SYSROOT} # COPY vendor_packages/Python-3.10.12.tar.xz . RUN wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tar.xz \ @@ -121,37 +130,65 @@ ENV CC=aarch64-none-linux-gnu-gcc \ RANLIB=aarch64-none-linux-gnu-ranlib \ HOSTARCH=aarch64-none-linux-gnu \ BUILDARCH=x86_64-linux-gnu - -# export CC=aarch64-none-linux-gnu-gcc -# export CXX=aarch64-none-linux-gnu-g++ -# export AR=aarch64-none-linux-gnu-ar -# export RANLIB=aarch64-none-linux-gnu-ranlib -# export HOSTARCH=aarch64-none-linux-gnu -# export BUILDARCH=x86_64-linux-gn -RUN CFLAGS="-fPIC" LDFLAGS="-fPIC" ./configure \ +ENV CPPFLAGS="-I${TARGET_SYSROOT}/include" \ + LDFLAGS="-L${TARGET_SYSROOT}/lib -Wl,-rpath-link=${TARGET_SYSROOT}/lib" \ + CFLAGS="-fPIC" \ + PKG_CONFIG_PATH="" \ + PKG_CONFIG_LIBDIR="${TARGET_SYSROOT}/lib/pkgconfig" \ + PKG_CONFIG_SYSROOT_DIR="${TARGET_SYSROOT}" + +RUN ./configure \ --host=aarch64-none-linux-gnu \ --build=x86_64-linux-gnu \ --prefix=${TARGET_SYSROOT} \ - --with-build-python=python3.10 \ + --enable-shared \ --disable-ipv6 \ --enable-optimizations \ --with-openssl=${TARGET_SYSROOT} \ ac_cv_file__dev_ptmx=yes \ ac_cv_file__dev_ptc=yes \ - && make -j$(($(nproc) / 2)) && make install + && make -j$(($(nproc) / 2)) \ + && make install # https://github.com/benfogle/crossenv # cross compile python packages WORKDIR /tmp -# /opt/python3.10/venv/build/bin/pip install 'setuptools==68.2.2' wheel + +COPY vendor/extract_wheels.sh /tmp/extract_wheels.sh + +# python packages +RUN pip download --no-deps -d /wheels \ + empy==3.3.4 \ + lark \ + pyyaml \ + catkin_pkg \ + setuptools \ + packaging \ + pyparsing \ + argcomplete \ + osrf-pycommon \ + typing-extensions \ + psutil + +# python packages with c extension +RUN pip download \ + --no-deps \ + --only-binary=:all: \ + --python-version 310 \ + --implementation cp \ + --abi cp310 \ + --platform manylinux2014_aarch64 \ + -d /wheels \ + psutil + +RUN chmod +x /tmp/extract_wheels.sh && \ + /tmp/extract_wheels.sh "${TARGET_SYSROOT}/lib/python3.10/site-packages" /wheels + RUN python3 -m pip install crossenv \ && python3 -m crossenv ${TARGET_SYSROOT}/bin/python3 venv \ && . venv/bin/activate \ - && pip -v install numpy==1.21.5 lark==1.1.1 packaging typing-extensions --prefix=${TARGET_SYSROOT} \ - && ./venv/build/bin/pip install 'setuptools==68.2.2' wheel \ - && pip -v install empy==3.3.4 pyyaml psutil argcomplete --prefix=${TARGET_SYSROOT} - + && pip -v install numpy==1.21.5 --prefix=${TARGET_SYSROOT} FROM ${CC_PLATFORM_IMAGE} AS final