From e0bdf18ebf19847d5aba94617abc9597f96657c8 Mon Sep 17 00:00:00 2001 From: Skgland Date: Fri, 18 Feb 2022 22:53:31 +0100 Subject: [PATCH 1/3] fix broken combined queues bors.rust-lang.org mentions > Homu provides a few simple ways to customize the queue's contents to fit your needs: > > * queue/rust+cargo will combine the queues of the rust and cargo repos (for example). but it appears 963762a1 broke this by early aborting to a 404 without checking this case --- homu/server.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/homu/server.py b/homu/server.py index c56a6c5..b5c4d5b 100644 --- a/homu/server.py +++ b/homu/server.py @@ -117,7 +117,10 @@ def result(repo_label, pull): @get('/queue/') def queue(repo_label): - if repo_label not in g.cfg['repo'] and repo_label != 'all': + + labels = repo_label.split('+') + if repo_label != 'all' \ + and any(label not in g.cfg['repo'] for label in labels): abort(404) logger = g.logger.getChild('queue') @@ -126,19 +129,20 @@ def queue(repo_label): single_repo_closed = None treeclosed_src = None + repo_url = None + if repo_label == 'all': labels = g.repos.keys() multiple = True - repo_url = None else: - labels = repo_label.split('+') multiple = len(labels) > 1 - if repo_label in g.repos and g.repos[repo_label].treeclosed >= 0: - single_repo_closed = g.repos[repo_label].treeclosed - treeclosed_src = g.repos[repo_label].treeclosed_src - repo_url = 'https://github.com/{}/{}'.format( - g.cfg['repo'][repo_label]['owner'], - g.cfg['repo'][repo_label]['name']) + if not multiple: + if repo_label in g.repos and g.repos[repo_label].treeclosed >= 0: + single_repo_closed = g.repos[repo_label].treeclosed + treeclosed_src = g.repos[repo_label].treeclosed_src + repo_url = 'https://github.com/{}/{}'.format( + g.cfg['repo'][repo_label]['owner'], + g.cfg['repo'][repo_label]['name']) states = [] for label in labels: From 0564d5bd8738888dcdf48f07afe49b683374635a Mon Sep 17 00:00:00 2001 From: Skgland Date: Fri, 18 Feb 2022 22:55:30 +0100 Subject: [PATCH 2/3] don't link to retry log when showing a queue for multiple repositories, as retry log currently can't handle that fixes #157 --- homu/html/queue.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/homu/html/queue.html b/homu/html/queue.html index 1e70044..b4d1d33 100644 --- a/homu/html/queue.html +++ b/homu/html/queue.html @@ -207,7 +207,9 @@

Homu queue - {% if repo_url %}{{repo_ + {% if not multiple %}

Open retry log

+ {% endif %} From 93058eff07715f0c8580a2debbcdd35027cad5d4 Mon Sep 17 00:00:00 2001 From: Skgland Date: Sun, 20 Feb 2022 17:58:50 +0100 Subject: [PATCH 3/3] slight cleanup --- homu/server.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/homu/server.py b/homu/server.py index b5c4d5b..2781372 100644 --- a/homu/server.py +++ b/homu/server.py @@ -118,10 +118,12 @@ def result(repo_label, pull): @get('/queue/') def queue(repo_label): - labels = repo_label.split('+') - if repo_label != 'all' \ - and any(label not in g.cfg['repo'] for label in labels): - abort(404) + if repo_label == 'all': + labels = g.repos.keys() + else: + labels = repo_label.split('+') + if any(label not in g.cfg['repo'] for label in labels): + abort(404) logger = g.logger.getChild('queue') @@ -130,19 +132,16 @@ def queue(repo_label): single_repo_closed = None treeclosed_src = None repo_url = None + multiple = len(labels) > 1 - if repo_label == 'all': - labels = g.repos.keys() - multiple = True - else: - multiple = len(labels) > 1 - if not multiple: - if repo_label in g.repos and g.repos[repo_label].treeclosed >= 0: - single_repo_closed = g.repos[repo_label].treeclosed - treeclosed_src = g.repos[repo_label].treeclosed_src - repo_url = 'https://github.com/{}/{}'.format( - g.cfg['repo'][repo_label]['owner'], - g.cfg['repo'][repo_label]['name']) + if not multiple: + if g.repos[repo_label].treeclosed >= 0: + single_repo_closed = g.repos[repo_label].treeclosed + treeclosed_src = g.repos[repo_label].treeclosed_src + + repo_url = 'https://github.com/{}/{}'.format( + g.cfg['repo'][repo_label]['owner'], + g.cfg['repo'][repo_label]['name']) states = [] for label in labels: