NVIDIA-ISAAC-ROS / NVIDIA-ISAAC-ROS/isaac_ros_common
Cross-platform build (arm64 build from x86_64 host) fails with run_dev.sh
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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