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

Cross-platform build (arm64 build from x86_64 host) fails with run_dev.sh

Open
#144 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

In previous versions (pre Isaac-ROS 3) of the run_dev.sh script, I could change the PLATFORM arg from being the default "$(uname -m)" to be configured by param for either x86_64 or aarch64 and the build was successful for the full set of layers: {platform}.ros2_humble.realsense.user.isaac... (where the "isaac" layer is our own added Dockerfile)
However, with the new run_dev process which uses the build_image_layers.sh script, when trying to set the PLATFORM to be aarch64 on my x86 host, I get the following error:

Launching Isaac ROS Dev container with image key aarch64.ros2_humble.realsense.user.isaac: /home/$USER/workspaces/isaac_ros-dev
Building aarch64.ros2_humble.realsense.user.isaac base as image: isaac_ros_dev-aarch64
Building layered image for key aarch64.ros2_humble.realsense.user.isaac as isaac_ros_dev-aarch64
Using configured docker search paths: /home/$USER/workspaces/src/isaac_ros_common/scripts/../docker
WARNING: Skipping remote registry check for prebuilt images
Resolved the following 5 Dockerfiles for target image: aarch64.ros2_humble.realsense.user.isaac
/home/$USER/workspaces/Dockerfile.isaac
/home/$USER/workspaces/src/isaac_ros_common/scripts/../docker/Dockerfile.user
/home/$USER/workspaces/src/isaac_ros_common/scripts/../docker/Dockerfile.realsense
/home/$USER/workspaces/src/isaac_ros_common/scripts/../docker/Dockerfile.ros2_humble
/home/$USER/workspaces/src/isaac_ros_common/scripts/../docker/Dockerfile.aarch64
Building /home/$USER/workspaces/src/isaac_ros_common/scripts/../docker/Dockerfile.aarch64 as image: aarch64-image with base: 
[+] Building 3.0s (26/26) FINISHED                                                                                                                    docker:default
 => [internal] load build definition from Dockerfile.aarch64                                                                                                    0.0s
 => => transferring dockerfile: 8.30kB                                                                                                                          0.0s
 => [internal] load metadata for nvcr.io/nvidia/l4t-cuda:12.2.12-devel                                                                                          2.9s
 => [internal] load .dockerignore                                                                                                                               0.0s
 => => transferring context: 2B                                                                                                                                 0.0s
 => [stage-0  1/22] FROM nvcr.io/nvidia/l4t-cuda:12.2.12-devel@sha256:f9c4057f9c5dde81bf9d17be0eb89724fcfe2f709b3fbd1c8d9359b221b2686e                          0.0s
 => CACHED [stage-0  2/22] RUN mkdir -p /opt/nvidia/isaac_ros_dev_base && dpkg-query -W | sort > /opt/nvidia/isaac_ros_dev_base/aarch64-start-packages.csv      0.0s
 => CACHED [stage-0  3/22] RUN --mount=type=cache,target=/var/cache/apt apt-get update && apt-get install -y         software-properties-common && add-apt-rep  0.0s
 => CACHED [stage-0  4/22] RUN --mount=type=cache,target=/var/cache/apt apt-get update && apt-get install -y     apt-utils     bash-completion     build-essen  0.0s
 => CACHED [stage-0  5/22] RUN --mount=type=cache,target=/var/cache/apt     wget -qO - https://isaac.download.nvidia.com/isaac-ros/repos.key | apt-key add - &  0.0s
 => CACHED [stage-0  6/22] RUN --mount=type=cache,target=/var/cache/apt     apt-key adv --fetch-keys https://repo.download.nvidia.com/jetson/jetson-ota-public  0.0s
 => CACHED [stage-0  7/22] RUN --mount=type=cache,target=/var/cache/apt apt-get update && apt-get install -y     python3-dev     python3-distutils     python3  0.0s
 => CACHED [stage-0  8/22] RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1                                                          0.0s
 => CACHED [stage-0  9/22] RUN --mount=type=cache,target=/var/cache/apt apt-get update && apt-get install -y     ffmpeg     gfortran     graphicsmagick-libmag  0.0s
 => CACHED [stage-0 10/22] RUN python3 -m pip install -U     Cython     pymongo     wheel     scikit-learn     ninja     networkx     "numpy<2"     numpy-quat  0.0s
 => CACHED [stage-0 11/22] RUN update-alternatives --install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-14 14                                        0.0s
 => CACHED [stage-0 12/22] RUN --mount=type=cache,target=/var/cache/apt apt-get update && apt-get install -y --no-install-recommends     cuda-cudart-12-2       0.0s
 => CACHED [stage-0 13/22] RUN --mount=type=cache,target=/var/cache/apt mkdir -p /lib/firmware && apt-get update && apt-get install -y     libnvvpi3     tenso  0.0s
 => CACHED [stage-0 14/22] RUN mkdir -p /opt/nvidia/tao && cd /opt/nvidia/tao &&     wget --content-disposition 'https://api.ngc.nvidia.com/v2/resources/org/n  0.0s
 => CACHED [stage-0 15/22] RUN python3 -m pip install --no-cache         https://developer.download.nvidia.com/compute/redist/jp/v60dp/pytorch/torch-2.2.0a0+6  0.0s
 => CACHED [stage-0 16/22] RUN --mount=type=cache,target=/var/cache/apt apt-get update && apt-get install -y --no-install-recommends     libb64-0d     libre2-  0.0s
 => CACHED [stage-0 17/22] RUN  --mount=type=cache,target=/var/cache/apt     cd /opt     && wget https://github.com/triton-inference-server/server/releases/do  0.0s
 => CACHED [stage-0 18/22] RUN --mount=type=cache,target=/var/cache/apt     wget -O /tmp/boost.tar.gz     https://boostorg.jfrog.io/artifactory/main/release/1  0.0s
 => CACHED [stage-0 19/22] RUN --mount=type=cache,target=/var/cache/apt     cd /tmp &&     wget https://github.com/CVCUDA/CV-CUDA/releases/download/v0.5.0-bet  0.0s
 => CACHED [stage-0 20/22] RUN --mount=type=cache,target=/var/cache/apt apt-add-repository ppa:mosquitto-dev/mosquitto-ppa && apt-get update && apt-get instal  0.0s
 => CACHED [stage-0 21/22] RUN python3 -m pip install -U     jetson-stats                                                                                       0.0s
 => CACHED [stage-0 22/22] RUN mkdir -p /opt/nvidia/isaac_ros_dev_base && dpkg-query -W | sort > /opt/nvidia/isaac_ros_dev_base/aarch64-end-packages.csv        0.0s
 => exporting to image                                                                                                                                          0.0s
 => => exporting layers                                                                                                                                         0.0s
 => => writing image sha256:c6caaf7f0026ecb080840e07ca0fe04f36ea8b43455282d3f623c7e4ef36092c                                                                    0.0s
 => => naming to docker.io/library/aarch64-image                                                                                                                0.0s
Building /home/$USER/workspaces/src/isaac_ros_common/scripts/../docker/Dockerfile.ros2_humble as image: ros2_humble-image with base: aarch64-image
[+] Building 1.4s (2/2) FINISHED                                                                                                                      docker:default
 => [internal] load build definition from Dockerfile.ros2_humble                                                                                                0.0s
 => => transferring dockerfile: 13.51kB                                                                                                                         0.0s
 => WARN: InvalidDefaultArgInFrom: Default value for ARG $BASE_IMAGE results in empty or invalid base image name (line 10)                                      0.0s
 => ERROR [internal] load metadata for docker.io/library/aarch64-image:latest                                                                                   1.4s
------
 > [internal] load metadata for docker.io/library/aarch64-image:latest:
------
Dockerfile.ros2_humble:10
--------------------
   8 |     
   9 |     ARG BASE_IMAGE
  10 | >>> FROM $BASE_IMAGE
  11 |     
  12 |     # Store list of packages (must be first)
--------------------
ERROR: failed to solve: aarch64-image: failed to resolve source metadata for docker.io/library/aarch64-image:latest: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed

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.

Research direction

Start with run_dev.sh and build_image_layers.sh, then trace how the aarch64 image built from Dockerfile.aarch64 is passed as BASE_IMAGE to Dockerfile.ros2_humble. Reproduce the x86_64-host to aarch64 build and inspect the generated image names and Docker build arguments. Done means the full layered aarch64 image, including the custom Dockerfile.isaac layer, builds successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, shell
Domain
build-system, infrastructure
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.