From 5ab20b5d66c76a111c3c67b2df658aae34abab02 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 21 Mar 2023 17:23:01 +0100 Subject: [PATCH 01/16] Remove dead code hacks are no longer needed as hooks for DockerHub are no longer used --- docker_templates/folders.py | 38 ------------------------------------- 1 file changed, 38 deletions(-) diff --git a/docker_templates/folders.py b/docker_templates/folders.py index 720d890..c19b7e0 100644 --- a/docker_templates/folders.py +++ b/docker_templates/folders.py @@ -37,21 +37,6 @@ def populate_path(data, path): shutil.copy(templates['images'], path) -def populate_hooks(data, path): - if not os.path.exists(path): - os.makedirs(path) - for hook_name, hook_tempate in data['hook_names'].items(): - tags = ' '.join([data['release_name'] + '-' + data['tag_name']]) - hookfile = interpret_tempate( - hook_tempate, - {'tags': tags, 'release_name': data['release_name']}, - AltTemplate) - hookfile_path = os.path.join(path, hook_name) - with open(hookfile_path, 'w') as f: - f.write(hookfile) - os.chmod(hookfile_path, 0o744) - - def populate_paths(manifest, args, create_dockerfiles): # For each release for release_name, release_data in manifest['release_names'].items(): @@ -72,26 +57,3 @@ def populate_paths(manifest, args, create_dockerfiles): if args.auto: # Run the dockerfile generation script create_dockerfiles.main(('dir', '-d' + dockerfolder_dir)) - - # Hacks to add hook scripts for osrf repos - if 'hacks' in manifest: - # For each release - for release_name, release_data in manifest['hacks'].items(): - # For each os supported - for os_name, os_data in release_data['os_names'].items(): - # For each os distro supported - for os_code_name, os_code_data in os_data['os_code_names'].items(): - if os_code_data['tag_names'] is None: - continue - # For each tag supported: - for tag_name, tag_data in os_code_data['tag_names'].items(): - hooksfolder_dir = os.path.join( - release_name, os_name, - os_code_name, - tag_name, - 'hooks') - tag_data['release_name'] = release_name - tag_data['os_name'] = os_name - tag_data['os_code_name'] = os_code_name - tag_data['tag_name'] = tag_name - populate_hooks(tag_data, hooksfolder_dir) From b202524afecc8d093c596c238516e9fe8bfbf408 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 21 Mar 2023 18:42:54 +0100 Subject: [PATCH 02/16] Pass archs directly to os_code_data to expand later via profile.yaml.em --- docker_templates/folders.py | 1 + 1 file changed, 1 insertion(+) diff --git a/docker_templates/folders.py b/docker_templates/folders.py index c19b7e0..6dbfb12 100644 --- a/docker_templates/folders.py +++ b/docker_templates/folders.py @@ -51,6 +51,7 @@ def populate_paths(manifest, args, create_dockerfiles): os_code_data['release_name'] = release_name os_code_data['os_name'] = os_name os_code_data['os_code_name'] = os_code_name + os_code_data['archs'] = os_code_data['archs'] populate_path(data=os_code_data, path=dockerfolder_dir) From 1e440e121641e0781b5bc6b90b2fc3134c854614 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 21 Mar 2023 18:44:57 +0100 Subject: [PATCH 03/16] Refactor interpret_tempate to use empy --- docker_templates/folders.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/docker_templates/folders.py b/docker_templates/folders.py index 6dbfb12..f2f3afd 100644 --- a/docker_templates/folders.py +++ b/docker_templates/folders.py @@ -2,20 +2,33 @@ import shutil import string +try: + from cStringIO import StringIO +except ImportError: + from io import StringIO +from em import Interpreter + class AltTemplate(string.Template): delimiter = '@' idpattern = r'[a-z][_a-z0-9]*' -def interpret_tempate(tempate, data, tempate_class=string.Template): - # Read image perams using platform perams - with open(tempate, 'r') as f: - value = tempate_class(f.read()) +def interpret_tempate(tempate, data): - value = value.substitute(data) + output = StringIO() + try: + interpreter = Interpreter(output=output) + interpreter.file(open(tempate, 'r'), locals=data) + output = output.getvalue() + except Exception as e: + print("Error processing %s" % tempate) + raise + finally: + interpreter.shutdown() + interpreter = None - return value + return output def populate_path(data, path): From 1c1c069c555063018a1c6fbd3b85152fd5ffb3d3 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 21 Mar 2023 20:49:40 +0100 Subject: [PATCH 04/16] Add new copy_and_install_package_list template --- .../copy_and_install_package_list.Dockerfile.em | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em diff --git a/docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em b/docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em new file mode 100644 index 0000000..6b976c1 --- /dev/null +++ b/docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em @@ -0,0 +1,11 @@ +@[if packages]@ +# copy @group packages +ARG TARGETARCH +COPY $TARGETARCH/@(package_type).txt /opt/@(group)/ + +# install @group packages +RUN apt-get update \ + && xargs -a /opt/@(group)/@(package_type).txt \ + apt-get install -y --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* +@[end if] From 7190df8505fe30156d4b8c96ddc49dfecd9f45c2 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 21 Mar 2023 20:50:20 +0100 Subject: [PATCH 05/16] Swtich to using new template --- .../docker_images_ros2/create_ros_core_image.Dockerfile.em | 5 +++-- .../docker_images_ros2/create_ros_image.Dockerfile.em | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) 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 d59182f..89e4ba7 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 @@ -65,8 +65,9 @@ RUN pip3 install -U \ @[end if]@ @ @(TEMPLATE( - 'snippet/label_and_install_package_list.Dockerfile.em', - group='ros2', + 'snippet/copy_and_install_package_list.Dockerfile.em', + group='ros', + package_type='ros2_packages', packages=ros2_packages, ))@ @[if 'entrypoint_name' in locals()]@ diff --git a/docker_templates/templates/docker_images_ros2/create_ros_image.Dockerfile.em b/docker_templates/templates/docker_images_ros2/create_ros_image.Dockerfile.em index afb121d..6ead5cb 100644 --- a/docker_templates/templates/docker_images_ros2/create_ros_image.Dockerfile.em +++ b/docker_templates/templates/docker_images_ros2/create_ros_image.Dockerfile.em @@ -53,8 +53,9 @@ RUN pip3 install -U \ @[end if]@ @[if 'ros2_packages' in locals()]@ @(TEMPLATE( - 'snippet/label_and_install_package_list.Dockerfile.em', - group='ros2', + 'snippet/copy_and_install_package_list.Dockerfile.em', + group='ros', + package_type='ros2_packages', packages=ros2_packages, ))@ @[end if]@ From a0f7d3ef1a1f0466b3d132e737d45375be1d6c98 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 21 Mar 2023 20:53:41 +0100 Subject: [PATCH 06/16] Loop over archs --- docker_templates/packages.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/docker_templates/packages.py b/docker_templates/packages.py index 7529eaf..5fbb1bc 100644 --- a/docker_templates/packages.py +++ b/docker_templates/packages.py @@ -21,6 +21,13 @@ from docker_templates.eol_distro import isDistroEOL +DockerToAptArchLookup = { + 'amd64': 'amd64', + 'arm32v7':'armhf', + 'arm64v8':'arm64', + 'i386':'i386' +} + # TODO: think of a better version pattern like # r'\d(?!Version\:\s)(.+)(?=(~\w+\n))' but works without a trailing ~ version_pattern = r'(?<=Version: )\d+\.\d+\.\d+\-\d+' @@ -147,7 +154,10 @@ def expandPackages(data): package_index_url_template = indexUrlTemplateLookup[package_type + '_snapshots'] else: package_index_url_template = indexUrlTemplateLookup[package_type] - package_index_url = package_index_url_template.substitute(data) - package_index = getPackageIndex(data, package_index_url) - package_versions = getPackageVersions(data, package_index, data[package_type], package_type) - data[package_type] = package_versions + data['archs'] = {i : dict() for i in data['archs']} + for arch in data['archs']: + data['arch'] = DockerToAptArchLookup[arch] + package_index_url = package_index_url_template.substitute(data) + package_index = getPackageIndex(data, package_index_url) + package_versions = getPackageVersions(data, package_index, data[package_type], package_type) + data['archs'][arch][package_type] = package_versions From c6ffe8720662b270efd74aee7764848efc608d6c Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 21 Mar 2023 20:55:16 +0100 Subject: [PATCH 07/16] Capture entire package version identifier --- docker_templates/packages.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/docker_templates/packages.py b/docker_templates/packages.py index 5fbb1bc..4b796b9 100644 --- a/docker_templates/packages.py +++ b/docker_templates/packages.py @@ -28,9 +28,7 @@ 'i386':'i386' } -# TODO: think of a better version pattern like -# r'\d(?!Version\:\s)(.+)(?=(~\w+\n))' but works without a trailing ~ -version_pattern = r'(?<=Version: )\d+\.\d+\.\d+\-\d+' +version_pattern = r'(?<=Version: ).*\n' sha256_pattern = r'(?<=SHA256: )[0-9a-f]{64}' @@ -49,9 +47,9 @@ } packageVersionTemplateLookup = { - 'gazebo_packages': string.Template('=$package_version*'), - 'ros_packages': string.Template('=$package_version*'), - 'ros2_packages': string.Template('=$package_version*'), + 'gazebo_packages': string.Template('=$package_version'), + 'ros_packages': string.Template('=$package_version'), + 'ros2_packages': string.Template('=$package_version'), } packageNameTemplateLookup = { From 46a5dbbcc2c17d4e154a4229a2fdaf3801686f47 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 21 Mar 2023 20:55:59 +0100 Subject: [PATCH 08/16] Create lockfiles for new template --- docker_templates/create.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docker_templates/create.py b/docker_templates/create.py index e879c4a..1f24c26 100644 --- a/docker_templates/create.py +++ b/docker_templates/create.py @@ -21,6 +21,8 @@ from ros_buildfarm.templates import get_template_path from ros_buildfarm.templates import expand_template, get_wrapper_scripts +from docker_templates.packages import indexUrlTemplateLookup + default_template_prefix_path = ros_buildfarm.templates.template_prefix_path def expand_template_prefix_path(template_packages): @@ -44,9 +46,24 @@ def create_files(data, verbose=False): # generate Dockerfile create_dockerfile(template_name, data, dockerfile_dir, verbose) + create_lockfiles(data) + if 'entrypoint_name' in data: create_entrypoint(data) +def create_lockfiles(data): + dockerfile_dir = data['dockerfile_dir'] + for arch_name, arch_data in data['archs'].items(): + arch_path = os.path.join(dockerfile_dir, arch_name) + if not os.path.exists(arch_path): + os.makedirs(arch_path) + for package_type, package_list in arch_data.items(): + lockfile_path = os.path.join(arch_path, package_type + '.txt') + with open(lockfile_path, 'w') as h: + for package in package_list: + line = f"{package['name']}{package['version']}" + h.write(line) + def create_entrypoint(data): # find entrypoint path entrypoint_name = data['entrypoint_name'] From 5d699ddef8ef381f3413a5f263f64dda15d7d897 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 21 Mar 2023 21:01:24 +0100 Subject: [PATCH 09/16] Swtich to using new template for ros1 --- .../docker_images/create_ros_core_image.Dockerfile.em | 3 ++- .../templates/docker_images/create_ros_image.Dockerfile.em | 3 ++- 2 files changed, 4 insertions(+), 2 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 1fec499..2ac21ca 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 @@ -52,8 +52,9 @@ ENV LC_ALL C.UTF-8 ENV ROS_DISTRO @rosdistro_name @(TEMPLATE( - 'snippet/label_and_install_package_list.Dockerfile.em', + 'snippet/copy_and_install_package_list.Dockerfile.em', group='ros', + package_type='ros_packages', packages=ros_packages, ))@ @[if 'entrypoint_name' in locals()]@ diff --git a/docker_templates/templates/docker_images/create_ros_image.Dockerfile.em b/docker_templates/templates/docker_images/create_ros_image.Dockerfile.em index 32d4246..6afc781 100644 --- a/docker_templates/templates/docker_images/create_ros_image.Dockerfile.em +++ b/docker_templates/templates/docker_images/create_ros_image.Dockerfile.em @@ -36,8 +36,9 @@ RUN rosdep init && \ @[if 'ros_packages' in locals()]@ @[ if ros_packages]@ @(TEMPLATE( - 'snippet/label_and_install_package_list.Dockerfile.em', + 'snippet/copy_and_install_package_list.Dockerfile.em', group='ros', + package_type='ros_packages', packages=ros_packages, ))@ @[ end if]@ From 3f5f6a63d445dfddf012d824298d26696fbd256a Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 21 Mar 2023 21:35:31 +0100 Subject: [PATCH 10/16] Cached package indexs over runtime as requesting them is slow --- docker_templates/packages.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/docker_templates/packages.py b/docker_templates/packages.py index 4b796b9..90e9566 100644 --- a/docker_templates/packages.py +++ b/docker_templates/packages.py @@ -21,6 +21,8 @@ from docker_templates.eol_distro import isDistroEOL +_cached_package_indexs = {} + DockerToAptArchLookup = { 'amd64': 'amd64', 'arm32v7':'armhf', @@ -61,10 +63,15 @@ def getPackageIndex(data, package_index_url): """Get current online package index""" - # Download package index - req = urllib.request.Request(package_index_url) - with urllib.request.urlopen(req) as response: - package_index = gzip.decompress(response.read()).decode('utf-8') + global _cached_package_indexs + if package_index_url in _cached_package_indexs: + package_index = _cached_package_indexs[package_index_url] + else: + # Download package index + req = urllib.request.Request(package_index_url) + with urllib.request.urlopen(req) as response: + package_index = gzip.decompress(response.read()).decode('utf-8') + _cached_package_indexs[package_index_url] = package_index return package_index From 4ed6033fd6107af6e47abd40f2b370698dcca21d Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Wed, 22 Mar 2023 00:07:43 +0100 Subject: [PATCH 11/16] skip if package not foud for arch Signed-off-by: Mikael Arguedas --- docker_templates/packages.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker_templates/packages.py b/docker_templates/packages.py index 90e9566..e777bfe 100644 --- a/docker_templates/packages.py +++ b/docker_templates/packages.py @@ -88,6 +88,8 @@ def getPackageInfo(package_pattern, package_index): # Parse for package info matchs = re.search(package_pattern, package_index) + if matchs is None: + return None package_info = matchs.group(0) return package_info @@ -122,6 +124,8 @@ def getPackageVersions(data, package_index, packages, package_type): package_pattern = getPackagePattern(data, package_pattern_template, package) package_name = package_name_template.substitute(data, package=package) package_info = getPackageInfo(package_pattern, package_index) + if package_info is None: + continue package_sha256 = getPackageSHA256(package_info) if data['version'] != False: From 4b089c89983f30002e99f874e941cad7841477e9 Mon Sep 17 00:00:00 2001 From: Mikael Arguedas Date: Wed, 22 Mar 2023 00:11:58 +0100 Subject: [PATCH 12/16] support having both ros_packages and ros2_packages Signed-off-by: Mikael Arguedas --- docker_templates/packages.py | 2 +- .../create_ros_ros1_bridge_image.Dockerfile.em | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docker_templates/packages.py b/docker_templates/packages.py index e777bfe..74d698a 100644 --- a/docker_templates/packages.py +++ b/docker_templates/packages.py @@ -139,6 +139,7 @@ def getPackageVersions(data, package_index, packages, package_type): return package_versions def expandPackages(data): + data["archs"] = {i: dict() for i in data["archs"]} for package_type in indexUrlTemplateLookup: if package_type in data: # determine if distro is eol and apply the appropriate index URL template @@ -163,7 +164,6 @@ def expandPackages(data): package_index_url_template = indexUrlTemplateLookup[package_type + '_snapshots'] else: package_index_url_template = indexUrlTemplateLookup[package_type] - data['archs'] = {i : dict() for i in data['archs']} for arch in data['archs']: data['arch'] = DockerToAptArchLookup[arch] package_index_url = package_index_url_template.substitute(data) 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 b5fe50f..f0ef1d5 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 @@ -47,15 +47,17 @@ ENV ROS2_DISTRO @ros2distro_name @[if 'ros_packages' in locals()]@ @(TEMPLATE( - 'snippet/label_and_install_package_list.Dockerfile.em', + 'snippet/copy_and_install_package_list.Dockerfile.em', group='ros', + package_type='ros_packages', packages=ros_packages, ))@ @[end if]@ @[if 'ros2_packages' in locals()]@ @(TEMPLATE( - 'snippet/label_and_install_package_list.Dockerfile.em', - group='ros2', + 'snippet/copy_and_install_package_list.Dockerfile.em', + group='ros', + package_type='ros2_packages', packages=ros2_packages, ))@ @[end if]@ From 555d832a12c5ca68bd2be3a72ad47928060bf938 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Wed, 22 Mar 2023 14:16:20 +0100 Subject: [PATCH 13/16] Flip directory and file names for lockfiles to reduce the number of directories --- docker_templates/create.py | 8 ++++---- .../snippet/copy_and_install_package_list.Dockerfile.em | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docker_templates/create.py b/docker_templates/create.py index 1f24c26..b6f1a80 100644 --- a/docker_templates/create.py +++ b/docker_templates/create.py @@ -54,11 +54,11 @@ def create_files(data, verbose=False): def create_lockfiles(data): dockerfile_dir = data['dockerfile_dir'] for arch_name, arch_data in data['archs'].items(): - arch_path = os.path.join(dockerfile_dir, arch_name) - if not os.path.exists(arch_path): - os.makedirs(arch_path) for package_type, package_list in arch_data.items(): - lockfile_path = os.path.join(arch_path, package_type + '.txt') + lockfile_dir = os.path.join(dockerfile_dir, package_type) + if not os.path.exists(lockfile_dir): + os.makedirs(lockfile_dir) + lockfile_path = os.path.join(lockfile_dir, arch_name + '.txt') with open(lockfile_path, 'w') as h: for package in package_list: line = f"{package['name']}{package['version']}" diff --git a/docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em b/docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em index 6b976c1..6d60dc2 100644 --- a/docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em +++ b/docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em @@ -1,7 +1,7 @@ @[if packages]@ # copy @group packages ARG TARGETARCH -COPY $TARGETARCH/@(package_type).txt /opt/@(group)/ +COPY @(package_type)/$TARGETARCH.txt /opt/@(group)/@(package_type).txt # install @group packages RUN apt-get update \ From 940c9306a33baeadf05a6a20f046b093589592f5 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Wed, 22 Mar 2023 14:18:39 +0100 Subject: [PATCH 14/16] Change target destentation for COPY to /etc/apt to avoid polluting the /opt folder --- .../snippet/copy_and_install_package_list.Dockerfile.em | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em b/docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em index 6d60dc2..2b879d6 100644 --- a/docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em +++ b/docker_templates/templates/snippet/copy_and_install_package_list.Dockerfile.em @@ -1,11 +1,11 @@ @[if packages]@ # copy @group packages ARG TARGETARCH -COPY @(package_type)/$TARGETARCH.txt /opt/@(group)/@(package_type).txt +COPY @(package_type)/$TARGETARCH.txt /etc/apt/@(group)/@(package_type).txt # install @group packages RUN apt-get update \ - && xargs -a /opt/@(group)/@(package_type).txt \ + && xargs -a /etc/apt/@(group)/@(package_type).txt \ apt-get install -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* @[end if] From 90aac736cf12cf18608cdd28b58a1e58608dee55 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Wed, 22 Mar 2023 14:30:19 +0100 Subject: [PATCH 15/16] Avoid writing lockfile if package_list is empt so Dockerfile build fails for archs with no packages --- docker_templates/create.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docker_templates/create.py b/docker_templates/create.py index b6f1a80..cfa0c0d 100644 --- a/docker_templates/create.py +++ b/docker_templates/create.py @@ -59,10 +59,11 @@ def create_lockfiles(data): if not os.path.exists(lockfile_dir): os.makedirs(lockfile_dir) lockfile_path = os.path.join(lockfile_dir, arch_name + '.txt') - with open(lockfile_path, 'w') as h: - for package in package_list: - line = f"{package['name']}{package['version']}" - h.write(line) + if package_list: + with open(lockfile_path, 'w') as h: + for package in package_list: + line = f"{package['name']}{package['version']}" + h.write(line) def create_entrypoint(data): # find entrypoint path From a02e623c7eb1c4b7e86bce18339f45da56ad5641 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Wed, 22 Mar 2023 14:33:33 +0100 Subject: [PATCH 16/16] Debugging: add commented out debug printout --- docker_templates/packages.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker_templates/packages.py b/docker_templates/packages.py index 74d698a..1bec5da 100644 --- a/docker_templates/packages.py +++ b/docker_templates/packages.py @@ -16,6 +16,7 @@ import string import re import urllib.request +# import json import rosdistro @@ -139,6 +140,9 @@ def getPackageVersions(data, package_index, packages, package_type): return package_versions def expandPackages(data): + # print("################################################################") + # print(json.dumps(data,sort_keys=True, indent=4)) + # print("################################################################") data["archs"] = {i: dict() for i in data["archs"]} for package_type in indexUrlTemplateLookup: if package_type in data: