NVIDIA-ISAAC-ROS / isaac_ros_common

Common utilities, packages, scripts, Dockerfiles, and testing infrastructure for Isaac ROS packages.
https://developer.nvidia.com/isaac-ros-gems
Other
197 stars 140 forks source link

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

Open akupferb opened 2 months ago

akupferb commented 2 months ago

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
akupferb commented 2 months ago

My forked repo for isaac-ros-common can be found here, with the added params to modify the PLATFORM build.