From c767b13b24e269adbc93db5074ef331f693af091 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Tue, 16 Mar 2021 16:55:58 -0400 Subject: git update hook: gracefully error on completely broken .SRCINFO I've seen this happen a bunch of times now. Someone cannot push to the AUR, and the error report is some traceback with a KeyError which is difficult to understand without context: remote: Traceback (most recent call last): remote: File "/srv/http/aurweb/aur.git/hooks/update", line 33, in remote: sys.exit(load_entry_point('aurweb==5.0.0', 'console_scripts', 'aurweb-git-update')()) remote: File "/usr/lib/python3.9/site-packages/aurweb-5.0.0-py3.9.egg/aurweb/git/update.py", line 306, in main remote: KeyError: 'pkgbase' Eventually it turns out that their .SRCINFO file is... badly corrupted. Generally, they managed to accidentally commit an *empty* file instead of a .SRCINFO, and in all cases, the problem was on the very first lookup for 'pkgbase'. Point people to the actual failing commit, and have a nicely formatted message indicating that the .SRCINFO is completely invalid. Signed-off-by: Eli Schwartz --- aurweb/git/update.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/aurweb/git/update.py b/aurweb/git/update.py index 929b254e..3c9c3785 100755 --- a/aurweb/git/update.py +++ b/aurweb/git/update.py @@ -303,7 +303,11 @@ def main(): # noqa: C901 error['line'], err)) exit(1) - metadata_pkgbase = metadata['pkgbase'] + try: + metadata_pkgbase = metadata['pkgbase'] + except KeyError as e: + die_commit('invalid .SRCINFO, does not contain a pkgbase (is the file empty?)', + str(commit.id)) if not re.match(repo_regex, metadata_pkgbase): die_commit('invalid pkgbase: {:s}'.format(metadata_pkgbase), str(commit.id)) -- cgit v1.2.3-24-g4f1b