From d236f924eab0464670f17b8177b86533a83406a1 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Wed, 27 Jul 2022 23:09:18 +0200 Subject: [PATCH] support/scripts/pkg-stats: add better checking in check_package_get_latest_version_by_guess() The 'rtl8723ds' name, when queried from release-monitoring.org at https://release-monitoring.org/api/projects/?pattern=rtl8723ds returns one project, with one "stable_versions" array, which is empty. This was not expected by the pkg-stats code, causing an exception: Task exception was never retrieved future: exception=IndexError('list index out of range')> Traceback (most recent call last): File "/home/thomas/projets/buildroot/./support/scripts/pkg-stats", line 566, in check_package_latest_version_get if await check_package_get_latest_version_by_guess(session, pkg): File "/home/thomas/projets/buildroot/./support/scripts/pkg-stats", line 544, in check_package_get_latest_version_by_guess projects[0]['stable_versions'][0], IndexError: list index out of range This commit therefore improves the checks done on the results received from release-monitoring.org to avoid this issue. Signed-off-by: Thomas Petazzoni (cherry picked from commit f1e3b2bb01903faf7595ed3151140bbf767681e0) Signed-off-by: Peter Korsgaard --- support/scripts/pkg-stats | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats index 7da06096ef..06c309565b 100755 --- a/support/scripts/pkg-stats +++ b/support/scripts/pkg-stats @@ -536,12 +536,17 @@ async def check_package_get_latest_version_by_guess(session, pkg, retry=True): projects = [p for p in data['projects'] if p['name'] == pkg.name and 'stable_versions' in p] projects.sort(key=lambda x: x['id']) - if len(projects) > 0: - check_package_latest_version_set_status(pkg, - RM_API_STATUS_FOUND_BY_PATTERN, - projects[0]['stable_versions'][0], - projects[0]['id']) - return True + if len(projects) == 0: + return False + + if len(projects[0]['stable_versions']) == 0: + return False + + check_package_latest_version_set_status(pkg, + RM_API_STATUS_FOUND_BY_PATTERN, + projects[0]['stable_versions'][0], + projects[0]['id']) + return True except (aiohttp.ClientError, asyncio.TimeoutError): if retry: