From bb7134c3b8859c05f48bbf6460d56e5b27eae4df Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Tue, 3 Jun 2025 08:08:48 +0200 Subject: [PATCH 1/7] update template dependencies lists Signed-off-by: Mikael Arguedas --- .../docker_images/create_ros_core_image.Dockerfile.em | 2 +- .../docker_images_ros2/create_ros_core_image.Dockerfile.em | 2 +- .../docker_images_ros2/devel/create_ros_image.Dockerfile.em | 3 ++- .../docker_images_ros2/nightly/create_ros_image.Dockerfile.em | 3 ++- .../ros1_bridge/create_ros_ros1_bridge_image.Dockerfile.em | 2 +- .../docker_images_ros2/testing/create_ros_image.Dockerfile.em | 3 ++- 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/docker_templates/templates/docker_images/create_ros_core_image.Dockerfile.em b/docker_templates/templates/docker_images/create_ros_core_image.Dockerfile.em index 50d1ffe..adf073d 100644 --- a/docker_templates/templates/docker_images/create_ros_core_image.Dockerfile.em +++ b/docker_templates/templates/docker_images/create_ros_core_image.Dockerfile.em @@ -28,8 +28,8 @@ @ @{ template_dependencies = [ - 'curl', 'ca-certificates', + 'curl', 'dirmngr', 'gnupg2', ] diff --git a/docker_templates/templates/docker_images_ros2/create_ros_core_image.Dockerfile.em b/docker_templates/templates/docker_images_ros2/create_ros_core_image.Dockerfile.em index 422d87c..9dd6818 100644 --- a/docker_templates/templates/docker_images_ros2/create_ros_core_image.Dockerfile.em +++ b/docker_templates/templates/docker_images_ros2/create_ros_core_image.Dockerfile.em @@ -28,8 +28,8 @@ @ @{ template_dependencies = [ - 'curl', 'ca-certificates', + 'curl', 'dirmngr', 'gnupg2', ] diff --git a/docker_templates/templates/docker_images_ros2/devel/create_ros_image.Dockerfile.em b/docker_templates/templates/docker_images_ros2/devel/create_ros_image.Dockerfile.em index 69607db..6e4dabc 100644 --- a/docker_templates/templates/docker_images_ros2/devel/create_ros_image.Dockerfile.em +++ b/docker_templates/templates/docker_images_ros2/devel/create_ros_image.Dockerfile.em @@ -13,9 +13,10 @@ FROM $FROM_IMAGE ))@ @{ template_dependencies = [ + 'ca-certificates', + 'curl', 'dirmngr', 'gnupg2', - 'lsb-release', ] # add 'python3-pip' to 'template_dependencies' if pip dependencies are declared if 'pip3_install' in locals(): diff --git a/docker_templates/templates/docker_images_ros2/nightly/create_ros_image.Dockerfile.em b/docker_templates/templates/docker_images_ros2/nightly/create_ros_image.Dockerfile.em index 5508ea6..29df060 100644 --- a/docker_templates/templates/docker_images_ros2/nightly/create_ros_image.Dockerfile.em +++ b/docker_templates/templates/docker_images_ros2/nightly/create_ros_image.Dockerfile.em @@ -20,11 +20,12 @@ ))@ @{ template_dependencies = [ + 'ca-certificates', 'cmake', + 'curl', 'dirmngr', 'git', 'gnupg2', - 'lsb-release', 'wget', ] # add 'python3-pip' to 'template_dependencies' if pip dependencies are declared diff --git a/docker_templates/templates/docker_images_ros2/ros1_bridge/create_ros_ros1_bridge_image.Dockerfile.em b/docker_templates/templates/docker_images_ros2/ros1_bridge/create_ros_ros1_bridge_image.Dockerfile.em index 2c1563d..ddb6325 100644 --- a/docker_templates/templates/docker_images_ros2/ros1_bridge/create_ros_ros1_bridge_image.Dockerfile.em +++ b/docker_templates/templates/docker_images_ros2/ros1_bridge/create_ros_ros1_bridge_image.Dockerfile.em @@ -15,8 +15,8 @@ ))@ @{ template_dependencies = [ - 'curl', 'ca-certificates', + 'curl', ] # add 'python3-pip' to 'template_dependencies' if pip dependencies are declared if 'pip3_install' in locals(): diff --git a/docker_templates/templates/docker_images_ros2/testing/create_ros_image.Dockerfile.em b/docker_templates/templates/docker_images_ros2/testing/create_ros_image.Dockerfile.em index 3b80535..0383379 100644 --- a/docker_templates/templates/docker_images_ros2/testing/create_ros_image.Dockerfile.em +++ b/docker_templates/templates/docker_images_ros2/testing/create_ros_image.Dockerfile.em @@ -13,9 +13,10 @@ FROM $FROM_IMAGE ))@ @{ template_dependencies = [ + 'ca-certificates', + 'curl', 'dirmngr', 'gnupg2', - 'lsb-release', ] # add 'python3-pip' to 'template_dependencies' if pip dependencies are declared if 'pip3_install' in locals(): From 90ec90c54aa31cb2f94f0594bbbebad9dda68491 Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Tue, 3 Jun 2025 08:09:06 +0200 Subject: [PATCH 2/7] fixup snippet arguments Signed-off-by: Mikael Arguedas --- .../docker_images_ros2/devel/create_ros_image.Dockerfile.em | 6 ++---- .../nightly/create_ros_image.Dockerfile.em | 6 ++---- .../testing/create_ros_image.Dockerfile.em | 6 ++---- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/docker_templates/templates/docker_images_ros2/devel/create_ros_image.Dockerfile.em b/docker_templates/templates/docker_images_ros2/devel/create_ros_image.Dockerfile.em index 6e4dabc..cd485a7 100644 --- a/docker_templates/templates/docker_images_ros2/devel/create_ros_image.Dockerfile.em +++ b/docker_templates/templates/docker_images_ros2/devel/create_ros_image.Dockerfile.em @@ -33,9 +33,7 @@ if 'pip3_install' in locals(): 'snippet/setup_ros_sources.Dockerfile.em', os_name=os_name, os_code_name=os_code_name, - ros2distro_name='rolling', - rosdistro_name='', - ros_version=ros_version, + ros_distro='rolling', ))@ # setup environment @@ -44,7 +42,7 @@ ENV LC_ALL=C.UTF-8 @(TEMPLATE( 'snippet/install_ros_bootstrap_tools.Dockerfile.em', - ros_version=ros_version, + ros_distro='rolling', ))@ @[if 'ros2_repo_packages' in locals()]@ diff --git a/docker_templates/templates/docker_images_ros2/nightly/create_ros_image.Dockerfile.em b/docker_templates/templates/docker_images_ros2/nightly/create_ros_image.Dockerfile.em index 29df060..2f70cde 100644 --- a/docker_templates/templates/docker_images_ros2/nightly/create_ros_image.Dockerfile.em +++ b/docker_templates/templates/docker_images_ros2/nightly/create_ros_image.Dockerfile.em @@ -43,14 +43,12 @@ if 'pip3_install' in locals(): 'snippet/setup_ros_sources.Dockerfile.em', os_name=os_name, os_code_name=os_code_name, - ros2distro_name=ros2distro_name, - rosdistro_name='', - ros_version=ros_version, + ros_distro=ros2distro_name, ))@ @(TEMPLATE( 'snippet/install_ros_bootstrap_tools.Dockerfile.em', - ros_version=ros_version, + ros_distro=ros2distro_name, ))@ # setup environment diff --git a/docker_templates/templates/docker_images_ros2/testing/create_ros_image.Dockerfile.em b/docker_templates/templates/docker_images_ros2/testing/create_ros_image.Dockerfile.em index 0383379..33a1a7c 100644 --- a/docker_templates/templates/docker_images_ros2/testing/create_ros_image.Dockerfile.em +++ b/docker_templates/templates/docker_images_ros2/testing/create_ros_image.Dockerfile.em @@ -33,15 +33,13 @@ if 'pip3_install' in locals(): 'snippet/setup_ros_sources.Dockerfile.em', os_name=os_name, os_code_name=os_code_name, - ros2distro_name='rolling', - rosdistro_name='', - ros_version=ros_version, + ros_distro='rolling', testing_repo=True, ))@ @(TEMPLATE( 'snippet/install_ros_bootstrap_tools.Dockerfile.em', - ros_version=ros_version, + ros_distro='rolling', ))@ # setup environment From cd3112dbbbcdb6cd5cfd672a8f8891073ff1e5c8 Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Tue, 3 Jun 2025 08:10:48 +0200 Subject: [PATCH 3/7] declare new requests dependency Signed-off-by: Mikael Arguedas --- setup.py | 1 + stdeb.cfg | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index e729d86..f73fec2 100644 --- a/setup.py +++ b/setup.py @@ -27,6 +27,7 @@ install_requires = [ 'empy', 'pyyaml', + 'requests', 'rosdistro', 'ros_buildfarm', ] diff --git a/stdeb.cfg b/stdeb.cfg index bc5f0b8..ec494cc 100644 --- a/stdeb.cfg +++ b/stdeb.cfg @@ -1,5 +1,5 @@ [DEFAULT] Depends: python-argparse, python-collections, python-empy, python-yaml -Depends3: python3-argparse, python3-collections, python3-empy, python3-yaml +Depends3: python3-argparse, python3-collections, python3-empy, python3-requests, python3-yaml Suite: trusty utopic vivid wily xenial yakkety zesty artful Setup-Env-Vars: SKIP_PYTHON_MODULES=1 From 0fea88d5d4484f1907b48258d333073e3113c926 Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Tue, 3 Jun 2025 08:15:16 +0200 Subject: [PATCH 4/7] add back support for snapshots repo Signed-off-by: Mikael Arguedas --- .../snippet/setup_ros_sources.Dockerfile.em | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em b/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em index ac3f0a0..57581a5 100644 --- a/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em +++ b/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em @@ -11,7 +11,8 @@ ros_version = int(dist_info['distribution_type'][-1]) from docker_templates.eol_distro import isDistroEOL -if isDistroEOL(ros_distro_status=dist_info['distribution_status'], os_distro_name=os_code_name): +is_distro_eol = isDistroEOL(ros_distro_status=dist_info['distribution_status'], os_distro_name=os_code_name) +if is_distro_eol: repo_url = os.path.join( 'http://snapshots.ros.org', str(ros_distro), @@ -47,10 +48,25 @@ except Exception as e: temp_filename = f"/tmp/ros{apt_suffix}-apt-source.deb" }@ -# Setup ROS Apt sources +@[if is_distro_eol]@ +# setup keys +RUN set -eux; \ + key='@(repo_key)'; \ + export GNUPGHOME="$(mktemp -d)"; \ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \ + mkdir -p /usr/share/keyrings; \ + gpg --batch --export "$key" > /usr/share/keyrings/ros@(ros_version)-@(source_suffix)-archive-keyring.gpg; \ + gpgconf --kill all; \ + rm -rf "$GNUPGHOME" + +# setup sources.list +RUN echo "deb [ signed-by=/usr/share/keyrings/ros@(ros_version)-@(source_suffix)-archive-keyring.gpg ] @(repo_url) @(os_code_name) main" > /etc/apt/sources.list.d/ros@(ros_version)-@(source_suffix).list +@[else]@ +# Setup ROS APT sources RUN curl -L -s -o @(temp_filename) @(fetch_url) \ && echo "@(file_256checksum) @(temp_filename)" | sha256sum --strict --check \ && apt-get update \ && apt-get install @(temp_filename) \ && rm -f @(temp_filename) \ && rm -rf /var/lib/apt/lists/* +@[end if]@ From 30e8f7afe575a337b0c4e47da6fb3bbd98752e6e Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Tue, 3 Jun 2025 08:17:10 +0200 Subject: [PATCH 5/7] var names Signed-off-by: Mikael Arguedas --- .../templates/snippet/setup_ros_sources.Dockerfile.em | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em b/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em index 57581a5..488390b 100644 --- a/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em +++ b/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em @@ -32,14 +32,14 @@ else: repo_url = f'http://packages.ros.org/ros{apt_suffix}/ubuntu' # Get the latest tag -r = requests.get('https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest') -tag_name = r.json().get('tag_name') +ros_apt_source_latest = requests.get('https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest') +tag_name = ros_apt_source_latest.json().get('tag_name') # Get the latest version and compute the checksum fetch_url = f"https://github.com/ros-infrastructure/ros-apt-source/releases/download/{tag_name}/ros{apt_suffix}-apt-source_{tag_name}.{os_code_name}_all.deb" try: - r = requests.get(fetch_url) - hashobj = hashlib.sha256(r.content) + ros_apt_source_deb = requests.get(fetch_url) + hashobj = hashlib.sha256(ros_apt_source_deb.content) file_256checksum = hashobj.hexdigest() except Exception as e: file_256checksum = f"ERROR Failed to compute checksum for {fetch_url} do not accept image. Exception: {e}" From d4ad3f38f7eeb6bb5d151adb41f853104a9c9610 Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Tue, 3 Jun 2025 08:23:11 +0200 Subject: [PATCH 6/7] retrieve ros-apt-source info onfly if distro non EOL Signed-off-by: Mikael Arguedas --- .../snippet/setup_ros_sources.Dockerfile.em | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em b/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em index 488390b..7cb54e1 100644 --- a/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em +++ b/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em @@ -31,21 +31,21 @@ else: source_suffix = 'testing' repo_url = f'http://packages.ros.org/ros{apt_suffix}/ubuntu' -# Get the latest tag -ros_apt_source_latest = requests.get('https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest') -tag_name = ros_apt_source_latest.json().get('tag_name') + # Get the latest tag + ros_apt_source_latest = requests.get('https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest') + tag_name = ros_apt_source_latest.json().get('tag_name') -# Get the latest version and compute the checksum -fetch_url = f"https://github.com/ros-infrastructure/ros-apt-source/releases/download/{tag_name}/ros{apt_suffix}-apt-source_{tag_name}.{os_code_name}_all.deb" -try: - ros_apt_source_deb = requests.get(fetch_url) - hashobj = hashlib.sha256(ros_apt_source_deb.content) - file_256checksum = hashobj.hexdigest() -except Exception as e: - file_256checksum = f"ERROR Failed to compute checksum for {fetch_url} do not accept image. Exception: {e}" + # Get the latest version and compute the checksum + fetch_url = f"https://github.com/ros-infrastructure/ros-apt-source/releases/download/{tag_name}/ros{apt_suffix}-apt-source_{tag_name}.{os_code_name}_all.deb" + try: + ros_apt_source_deb = requests.get(fetch_url) + hashobj = hashlib.sha256(ros_apt_source_deb.content) + file_256checksum = hashobj.hexdigest() + except Exception as e: + file_256checksum = f"ERROR Failed to compute checksum for {fetch_url} do not accept image. Exception: {e}" -# Temp filename for simplicity of embedding -temp_filename = f"/tmp/ros{apt_suffix}-apt-source.deb" + # Temp filename for simplicity of embedding + temp_filename = f"/tmp/ros{apt_suffix}-apt-source.deb" }@ @[if is_distro_eol]@ From c457473d1e39040b947e6bfa69cac6c7124af8c9 Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Sat, 7 Jun 2025 09:54:20 +0200 Subject: [PATCH 7/7] revert comment change to rreduce diff for past images Signed-off-by: Mikael Arguedas --- .../templates/snippet/setup_ros_sources.Dockerfile.em | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em b/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em index 7cb54e1..8ebdcfa 100644 --- a/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em +++ b/docker_templates/templates/snippet/setup_ros_sources.Dockerfile.em @@ -62,7 +62,7 @@ RUN set -eux; \ # setup sources.list RUN echo "deb [ signed-by=/usr/share/keyrings/ros@(ros_version)-@(source_suffix)-archive-keyring.gpg ] @(repo_url) @(os_code_name) main" > /etc/apt/sources.list.d/ros@(ros_version)-@(source_suffix).list @[else]@ -# Setup ROS APT sources +# Setup ROS Apt sources RUN curl -L -s -o @(temp_filename) @(fetch_url) \ && echo "@(file_256checksum) @(temp_filename)" | sha256sum --strict --check \ && apt-get update \