Compare commits
2 Commits
e1bd9618bd
...
ea0313a66d
| Author | SHA1 | Date | |
|---|---|---|---|
| ea0313a66d | |||
| 31d7fab23a |
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
SITE_PACKAGES="${1:?usage: extract_wheels.sh <site-packages-dir> <wheels-dir>}"
|
||||
WHEELS_DIR="${2:?usage: extract_wheels.sh <site-packages-dir> <wheels-dir>}"
|
||||
|
||||
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"
|
||||
+1
-1
@@ -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
|
||||
)
|
||||
|
||||
+61
-24
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user