ros-tooling / cross_compile

A tool to build ROS and ROS2 workspaces for various targets
Apache License 2.0
186 stars 58 forks source link

Cannot cross compile latest releases for armhf #345

Open phildue opened 2 years ago

phildue commented 2 years ago

Description

When trying to build "foxy" or "galactic" for armhf, the compilation of various packages fails.

Expected Behavior

It should be possible to compile the latest ros2 distribution for armhf architecture, similar to aarch64.

Actual Behavior

clear and concise description of what actually happened. include copied logs whenever possible

To Reproduce

pip3 install ros_cross_compile
sudo apt install python3-rosinstall-generator
mkdir ws
cd ws
rosinstall_generator --deps --rosdistro galactic ros_base
ros_cross_compile $(pwd) --arch armhf --os ubuntu --rosdistro galactic --skip-rosdep-keys libopensplice67 console_bridge rosbag2_py urdfdom_headers fastcdr --colcon-defaults ./colcon.yaml --runtime-tag ros-galactic-base-armhf

colcon.yaml:

list:
build:
   event-handlers: ["console_direct+"]
INFO:Docker Client:Successfully tagged phil/armhf-ubuntu-galactic:latest
INFO:ros_cross_compile.sysroot_creator:Successfully created sysroot docker image: phil/armhf-ubuntu-galactic:latest
INFO:Docker Client:+ trap cleanup EXIT
INFO:Docker Client:+ mkdir -p /opt/ros/galactic
INFO:Docker Client:+ touch /opt/ros/galactic/setup.bash
INFO:Docker Client:+ set +ux
INFO:Docker Client:+ colcon build --mixin armhf-docker --build-base build_armhf --install-base install_armhf
INFO:Docker Client:Starting >>> ament_package
INFO:Docker Client:Starting >>> ament_lint
INFO:Docker Client:Starting >>> gtest_vendor
INFO:Docker Client:Starting >>> ament_cppcheck
INFO:Docker Client:Starting >>> fastcdr
INFO:Docker Client:Starting >>> iceoryx_utils
INFO:Docker Client:Starting >>> osrf_pycommon
INFO:Docker Client:Starting >>> osrf_testing_tools_cpp
INFO:Docker Client:Not searching for unused variables given on the command line.
INFO:Docker Client:-- Configuring Fast CDR
INFO:Docker Client:-- Version: 1.0.20
INFO:Docker Client:-- To change the version modify the file configure.ac
INFO:Docker Client:-- Configuring done
INFO:Docker Client:-- Generating done
INFO:Docker Client:-- Build files have been written to: /ros_ws/build_armhf/fastcdr
INFO:Docker Client:CMake Error at CMakeLists.txt:209 (add_library):
INFO:Docker Client:  No SOURCES given to target: iceoryx_platform
INFO:Docker Client:
INFO:Docker Client:
INFO:Docker Client:CMake Generate step failed.  Build files cannot be regenerated correctly.
INFO:Docker Client:Not searching for unused variables given on the command line.
INFO:Docker Client:-- Configuring done
INFO:Docker Client:--- stderr: iceoryx_utils
INFO:Docker Client:CMake Error at CMakeLists.txt:209 (add_library):
INFO:Docker Client:  No SOURCES given to target: iceoryx_platform
INFO:Docker Client:
INFO:Docker Client:
INFO:Docker Client:CMake Generate step failed.  Build files cannot be regenerated correctly.
INFO:Docker Client:---
INFO:Docker Client:Failed   <<< iceoryx_utils [12.6s, exited with code 1]
INFO:Docker Client:Not searching for unused variables given on the command line.
INFO:Docker Client:-- Could NOT find libdw (missing: LIBDW_LIBRARY LIBDW_INCLUDE_DIR)
INFO:Docker Client:-- Could NOT find libbfd (missing: LIBBFD_LIBRARY LIBBFD_INCLUDE_DIR LIBDL_LIBRARY)
INFO:Docker Client:-- Could NOT find libdwarf (missing: LIBDWARF_LIBRARY LIBDWARF_INCLUDE_DIR LIBELF_LIBRARY LIBELF_INCLUDE_DIR LIBDL_LIBRARY)
INFO:Docker Client:-- googletest version '1.10.0.1' selected, of versions: '1.10.0;1.10.0.1'
INFO:Docker Client:-- building googletest from '/ros_ws/src/osrf_testing_tools_cpp/vendor/google/googletest/release-1.10.0.1.tar.gz'...
INFO:Docker Client:Aborted  <<< gtest_vendor [13.0s]
INFO:Docker Client:Scanning dependencies of target fastcdr
INFO:Docker Client:[-42%] Building CXX object src/cpp/CMakeFiles/fastcdr.dir/Cdr.cpp.o
INFO:Docker Client:[-42%] Building CXX object src/cpp/CMakeFiles/fastcdr.dir/FastBuffer.cpp.o
INFO:Docker Client:[-42%] Building CXX object src/cpp/CMakeFiles/fastcdr.dir/exceptions/NotEnoughMemoryException.cpp.o
INFO:Docker Client:[-42%] Building CXX object src/cpp/CMakeFiles/fastcdr.dir/exceptions/Exception.cpp.o
INFO:Docker Client:[-42%] Building CXX object src/cpp/CMakeFiles/fastcdr.dir/exceptions/BadParamException.cpp.o
INFO:Docker Client:[-42%] Building CXX object src/cpp/CMakeFiles/fastcdr.dir/FastCdr.cpp.o
INFO:Docker Client:-- Configuring done
INFO:Docker Client:-- Generating done
INFO:Docker Client:-- Build files have been written to: /ros_ws/build_armhf/osrf_testing_tools_cpp/googletest-1.10.0.1-extracted
INFO:Docker Client:running egg_info
INFO:Docker Client:[-33%] Built target googletest
INFO:Docker Client:writing ../../build_armhf/osrf_pycommon/osrf_pycommon.egg-info/PKG-INFO
INFO:Docker Client:writing dependency_links to ../../build_armhf/osrf_pycommon/osrf_pycommon.egg-info/dependency_links.txt
INFO:Docker Client:writing requirements to ../../build_armhf/osrf_pycommon/osrf_pycommon.egg-info/requires.txt
INFO:Docker Client:writing top-level names to ../../build_armhf/osrf_pycommon/osrf_pycommon.egg-info/top_level.txt
INFO:Docker Client:reading manifest file '../../build_armhf/osrf_pycommon/osrf_pycommon.egg-info/SOURCES.txt'
INFO:Docker Client:reading manifest template 'MANIFEST.in'
INFO:Docker Client:adding license file 'LICENSE'
INFO:Docker Client:writing manifest file '../../build_armhf/osrf_pycommon/osrf_pycommon.egg-info/SOURCES.txt'
INFO:Docker Client:running build
INFO:Docker Client:running build_py
INFO:Docker Client:running install
INFO:Docker Client:running install_lib
INFO:Docker Client:running install_data
INFO:Docker Client:running install_egg_info
INFO:Docker Client:removing '/ros_ws/install_armhf/osrf_pycommon/lib/python3.8/site-packages/osrf_pycommon-0.2.1-py3.8.egg-info' (and everything under it)
INFO:Docker Client:Copying ../../build_armhf/osrf_pycommon/osrf_pycommon.egg-info to /ros_ws/install_armhf/osrf_pycommon/lib/python3.8/site-packages/osrf_pycommon-0.2.1-py3.8.egg-info
INFO:Docker Client:running install_scripts
INFO:Docker Client:CMake Error at cmake/osrf_testing_tools_cpp_extract_and_build_googletest.cmake:79 (add_subdirectory):
INFO:Docker Client:  The source directory
INFO:Docker Client:
INFO:Docker Client:    /ros_ws/build_armhf/osrf_testing_tools_cpp/googletest-1.10.0.1-extracted/googletest-1.10.0.1-src
INFO:Docker Client:
INFO:Docker Client:  does not contain a CMakeLists.txt file.
INFO:Docker Client:Call Stack (most recent call first):
INFO:Docker Client:  cmake/osrf_testing_tools_cpp_require_googletest.cmake:178 (osrf_testing_tools_cpp_extract_and_build_googletest)
INFO:Docker Client:  cmake/osrf_testing_tools_cpp_require_googletest.cmake:57 (_osrf_testing_tools_cpp_require_googletest)
INFO:Docker Client:  CMakeLists.txt:24 (osrf_testing_tools_cpp_require_googletest)
INFO:Docker Client:
INFO:Docker Client:
INFO:Docker Client:-- Configuring incomplete, errors occurred!
INFO:Docker Client:See also "/ros_ws/build_armhf/osrf_testing_tools_cpp/CMakeFiles/CMakeOutput.log".
INFO:Docker Client:See also "/ros_ws/build_armhf/osrf_testing_tools_cpp/CMakeFiles/CMakeError.log".
INFO:Docker Client:running egg_info
INFO:Docker Client:Aborted  <<< osrf_testing_tools_cpp [16.6s]
INFO:Docker Client:writing ../../build_armhf/ament_package/ament_package.egg-info/PKG-INFO
INFO:Docker Client:writing dependency_links to ../../build_armhf/ament_package/ament_package.egg-info/dependency_links.txt
INFO:Docker Client:writing top-level names to ../../build_armhf/ament_package/ament_package.egg-info/top_level.txt
INFO:Docker Client:writing list of installed files to '/ros_ws/build_armhf/osrf_pycommon/install.log'
INFO:Docker Client:reading manifest file '../../build_armhf/ament_package/ament_package.egg-info/SOURCES.txt'
INFO:Docker Client:/usr/local/lib/python3.8/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
INFO:Docker Client:  warnings.warn(
INFO:Docker Client:adding license file 'LICENSE'
INFO:Docker Client:writing manifest file '../../build_armhf/ament_package/ament_package.egg-info/SOURCES.txt'
INFO:Docker Client:running build
INFO:Docker Client:running build_py
INFO:Docker Client:running egg_info
INFO:Docker Client:writing ../../../build_armhf/ament_cppcheck/ament_cppcheck.egg-info/PKG-INFO
INFO:Docker Client:writing dependency_links to ../../../build_armhf/ament_cppcheck/ament_cppcheck.egg-info/dependency_links.txt
INFO:Docker Client:writing entry points to ../../../build_armhf/ament_cppcheck/ament_cppcheck.egg-info/entry_points.txt
INFO:Docker Client:writing requirements to ../../../build_armhf/ament_cppcheck/ament_cppcheck.egg-info/requires.txt
INFO:Docker Client:writing top-level names to ../../../build_armhf/ament_cppcheck/ament_cppcheck.egg-info/top_level.txt
INFO:Docker Client:reading manifest file '../../../build_armhf/ament_cppcheck/ament_cppcheck.egg-info/SOURCES.txt'
INFO:Docker Client:Aborted  <<< osrf_pycommon [17.0s]
INFO:Docker Client:running install
INFO:Docker Client:writing manifest file '../../../build_armhf/ament_cppcheck/ament_cppcheck.egg-info/SOURCES.txt'
INFO:Docker Client:running build
INFO:Docker Client:running build_py
INFO:Docker Client:running install_lib
INFO:Docker Client:running install
INFO:Docker Client:running install_data
INFO:Docker Client:running install_lib
INFO:Docker Client:running install_egg_info
INFO:Docker Client:removing '/ros_ws/install_armhf/ament_package/lib/python3.8/site-packages/ament_package-0.12.0-py3.8.egg-info' (and everything under it)
INFO:Docker Client:Copying ../../build_armhf/ament_package/ament_package.egg-info to /ros_ws/install_armhf/ament_package/lib/python3.8/site-packages/ament_package-0.12.0-py3.8.egg-info
INFO:Docker Client:running install_data
INFO:Docker Client:running install_egg_info
INFO:Docker Client:running install_scripts
INFO:Docker Client:removing '/ros_ws/install_armhf/ament_cppcheck/lib/python3.8/site-packages/ament_cppcheck-0.10.6-py3.8.egg-info' (and everything under it)
INFO:Docker Client:Copying ../../../build_armhf/ament_cppcheck/ament_cppcheck.egg-info to /ros_ws/install_armhf/ament_cppcheck/lib/python3.8/site-packages/ament_cppcheck-0.10.6-py3.8.egg-info
INFO:Docker Client:running install_scripts
INFO:Docker Client:running egg_info
INFO:Docker Client:writing ../../../build_armhf/ament_lint/ament_lint.egg-info/PKG-INFO
INFO:Docker Client:writing dependency_links to ../../../build_armhf/ament_lint/ament_lint.egg-info/dependency_links.txt
INFO:Docker Client:writing entry points to ../../../build_armhf/ament_lint/ament_lint.egg-info/entry_points.txt
INFO:Docker Client:writing requirements to ../../../build_armhf/ament_lint/ament_lint.egg-info/requires.txt
INFO:Docker Client:writing top-level names to ../../../build_armhf/ament_lint/ament_lint.egg-info/top_level.txt
INFO:Docker Client:Installing ament_cppcheck script to /ros_ws/install_armhf/ament_cppcheck/bin
INFO:Docker Client:writing list of installed files to '/ros_ws/build_armhf/ament_cppcheck/install.log'
INFO:Docker Client:/usr/local/lib/python3.8/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
INFO:Docker Client:  warnings.warn(
INFO:Docker Client:reading manifest file '../../../build_armhf/ament_lint/ament_lint.egg-info/SOURCES.txt'
INFO:Docker Client:writing manifest file '../../../build_armhf/ament_lint/ament_lint.egg-info/SOURCES.txt'
INFO:Docker Client:running build
INFO:Docker Client:running build_py
INFO:Docker Client:running install
INFO:Docker Client:running install_lib
INFO:Docker Client:running install_data
INFO:Docker Client:running install_egg_info
INFO:Docker Client:removing '/ros_ws/install_armhf/ament_lint/lib/python3.8/site-packages/ament_lint-0.10.6-py3.8.egg-info' (and everything under it)
INFO:Docker Client:Copying ../../../build_armhf/ament_lint/ament_lint.egg-info to /ros_ws/install_armhf/ament_lint/lib/python3.8/site-packages/ament_lint-0.10.6-py3.8.egg-info
INFO:Docker Client:running install_scripts
INFO:Docker Client:Aborted  <<< ament_cppcheck [17.8s]
INFO:Docker Client:writing list of installed files to '/ros_ws/build_armhf/ament_package/install.log'
INFO:Docker Client:/usr/local/lib/python3.8/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
INFO:Docker Client:  warnings.warn(
INFO:Docker Client:Aborted  <<< ament_package [18.3s]
INFO:Docker Client:writing list of installed files to '/ros_ws/build_armhf/ament_lint/install.log'
INFO:Docker Client:/usr/local/lib/python3.8/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
INFO:Docker Client:  warnings.warn(
INFO:Docker Client:Aborted  <<< ament_lint [18.3s]
INFO:Docker Client:[-42%] Linking CXX shared library libfastcdr.so
INFO:Docker Client:[-42%] Built target fastcdr
INFO:Docker Client:Aborted  <<< fastcdr [25.8s]
INFO:Docker Client:
INFO:Docker Client:Summary: 0 packages finished [47.3s]
INFO:Docker Client:  1 package failed: iceoryx_utils
INFO:Docker Client:  7 packages aborted: ament_cppcheck ament_lint ament_package fastcdr gtest_vendor osrf_pycommon osrf_testing_tools_cpp
INFO:Docker Client:  6 packages had stderr output: ament_cppcheck ament_lint ament_package iceoryx_utils osrf_pycommon osrf_testing_tools_cpp
INFO:Docker Client:  199 packages not processed
INFO:Docker Client:+ cleanup
INFO:Docker Client:+ chown -R 1000 .
Traceback (most recent call last):
  File "/home/phil/.local/bin/ros_cross_compile", line 8, in <module>
    sys.exit(main())
  File "/home/phil/.local/lib/python3.8/site-packages/ros_cross_compile/ros_cross_compile.py", line 237, in main
    cross_compile_pipeline(args, data_collector, platform)
  File "/home/phil/.local/lib/python3.8/site-packages/ros_cross_compile/ros_cross_compile.py", line 224, in cross_compile_pipeline
    stage(platform, docker_client, ros_workspace_dir, options, data_collector)
  File "/home/phil/.local/lib/python3.8/site-packages/ros_cross_compile/builders.py", line 71, in __call__
    run_emulated_docker_build(docker_client, platform, ros_workspace_dir)
  File "/home/phil/.local/lib/python3.8/site-packages/ros_cross_compile/builders.py", line 40, in run_emulated_docker_build
    docker_client.run_container(
  File "/home/phil/.local/lib/python3.8/site-packages/ros_cross_compile/docker_client.py", line 139, in run_container
    raise docker.errors.ContainerError(
docker.errors.ContainerError: Command '' in image 'phil/armhf-ubuntu-galactic:latest' returned non-zero exit status 1: See above ^

System (please complete the following information)

Additional context

For aarch64 it works fine.

phildue commented 2 years ago

Please not that this works fine when compiling the same packages directly on an ARM device