[aur-dev][PATCH] git update hook: gracefully error on completely broken .SRCINFO

Eli Schwartz eschwartz at archlinux.org
Tue Mar 16 21:05:10 UTC 2021

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 <module>
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 <eschwartz at archlinux.org>
 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))
-        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),

More information about the aur-dev mailing list