NVIDIA-ISAAC-ROS / NVIDIA-ISAAC-ROS/isaac_ros_common

[Cross Compile] Is it possible to build for jetson(aarch64) images on x86_64 machine?

Open
#86 2 comments 2 reactions 1 assignee View on GitHub

@hemalshahNV is already working on this.

Since Jul 31, 2023.

enhancement
Dominant language
C++
Stars
317
Forks
227
PR merge metrics
No merged PRs in 30d

Description

I would like to build a docker container on my x86_64 pc for Jetson aarch64. I tried the following this https://medium.com/@Smartcow_ai/building-arm64-based-docker-containers-for-nvidia-jetson-devices-on-an-x86-based-host-d72cfa535786 and installed QEMU, binfmt_static and then registered using,
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes.
But when I ran run_dev.sh by changing the PLATFORM to aarch64, the aarc64 base image is getting pulled, but later for the next layers it throws an error,

[+] Building 2.1s (3/3) FINISHED                                                                                                  docker:default
 => [internal] load .dockerignore                                                                                                           0.0s
 => => transferring context: 2B                                                                                                             0.0s
 => [internal] load build definition from Dockerfile.exec_depends                                                                           0.0s
 => => transferring dockerfile: 1.49kB                                                                                                      0.0s
 => ERROR [internal] load metadata for docker.io/library/aarch64-ros2_humble-image:latest                                                   2.1s
------
 > [internal] load metadata for docker.io/library/aarch64-ros2_humble-image:latest:
------
Dockerfile.exec_depends:2
--------------------
   1 |     ARG BASE_IMAGE
   2 | >>> FROM ${BASE_IMAGE}
   3 |     
   4 |     RUN apt-get update && mkdir -p ${ROS_ROOT}/src && cd ${ROS_ROOT} \
--------------------
ERROR: failed to solve: aarch64-ros2_humble-image: pull access denied, the repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
Failed to build base image: isaac_ros_dev-aarch64, aborting.

But, I already have the aarch64-ros2_humble-image:latest in my local and I was able to run the aarch64-based container on my x86_64 pc. docker images | grep ros output,

isaac_ros_dev-x86_64                                                                  latest                           fc66a048f618   43 minutes ago   29.5GB
aarch64-ros2_humble-image                                                             latest                           7a882c8d683b   2 months ago     18.8GB
x86_64-ros2_humble-image                                                              latest                           3c59bab3ee0b   2 months ago     28GB

So, I am wondering if is it possible to cross-compile just by changing the PLATFORM variable in run_dev.sh or if am I missing something.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.