[aur-dev] [PATCH 3/3] git-update: Make maximum blob size configurable

Lukas Fleischer lfleischer at archlinux.org
Fri Aug 5 10:04:29 UTC 2016


Support setting the maximum blob size in the configuration file.

Signed-off-by: Lukas Fleischer <lfleischer at archlinux.org>
---
 conf/config.proto           |  3 +++
 git-interface/git-update.py | 17 +++++++++++++++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/conf/config.proto b/conf/config.proto
index d5778a0..543c3ca 100644
--- a/conf/config.proto
+++ b/conf/config.proto
@@ -56,6 +56,9 @@ git-shell-cmd = /usr/bin/git-shell
 git-update-cmd = /srv/http/aurweb/git-interface/git-update.py
 ssh-cmdline = ssh aur at aur.archlinux.org
 
+[update]
+max-blob-size = 256000
+
 [aurblup]
 db-path = /srv/http/aurweb/aurblup/
 sync-dbs = core extra community multilib testing community-testing
diff --git a/git-interface/git-update.py b/git-interface/git-update.py
index 68f7387..7aace9b 100755
--- a/git-interface/git-update.py
+++ b/git-interface/git-update.py
@@ -25,6 +25,19 @@ notify_cmd = config.get('notifications', 'notify-cmd')
 repo_path = config.get('serve', 'repo-path')
 repo_regex = config.get('serve', 'repo-regex')
 
+max_blob_size = config.getint('update', 'max-blob-size')
+
+
+def size_humanize(num):
+    for unit in ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB']:
+        if abs(num) < 2048.0:
+            if isinstance(num, int):
+                return "{}{}".format(num, unit)
+            else:
+                return "{:.2f}{}".format(num, unit)
+        num /= 1024.0
+    return "{:.2f}{}".format(num, 'YiB')
+
 
 def extract_arch_fields(pkginfo, field):
     values = []
@@ -254,8 +267,8 @@ for commit in walker:
             die_commit("not a blob object: {:s}".format(treeobj),
                        str(commit.id))
 
-        if blob.size > 250000:
-            die_commit("maximum blob size (250kB) exceeded", str(commit.id))
+        if blob.size > max_blob_size:
+            die_commit("maximum blob size ({:s}) exceeded".format(size_humanize(max_blob_size)), str(commit.id))
 
     metadata_raw = repo[commit.tree['.SRCINFO'].id].data.decode()
     (metadata, errors) = srcinfo.parse.parse_srcinfo(metadata_raw)
-- 
2.9.2


More information about the aur-dev mailing list