Skip to content

Commit d7d3a6e

Browse files
committed
Add diffoscope/log link to reproducible devel report
For these reports to be useful, show a direct link to diffoscope and the build logs. So our developers can more easily debug non reproducible packages.
1 parent 71e7724 commit d7d3a6e

File tree

1 file changed

+32
-3
lines changed

1 file changed

+32
-3
lines changed

devel/reports.py

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,25 @@
66
from django.template.defaultfilters import filesizeformat
77
from django.db import connection
88
from django.utils.timezone import now
9+
from django.utils.html import format_html
910
from main.models import Package, PackageFile, RebuilderdStatus
1011
from packages.models import Depend, PackageRelation
1112

1213
from .models import DeveloperKey
1314

1415

16+
# Helper object to be able to show links reports.
17+
class Linkify:
18+
def __init__(self, href, title, desc):
19+
self.href = href
20+
self.title = title
21+
self.desc = desc
22+
23+
def __str__(self):
24+
link = '<a href="%s" title="%s">%s</a>'
25+
return format_html(link % (self.href, self.title, self.desc))
26+
27+
1528
class DeveloperReport(object):
1629
def __init__(self,
1730
slug,
@@ -170,8 +183,22 @@ def non_existing_dependencies(packages):
170183

171184

172185
def non_reproducible_packages(packages):
173-
statuses = RebuilderdStatus.objects.filter(status=RebuilderdStatus.BAD).values('pkg__pkgname')
174-
return packages.filter(pkgname__in=statuses)
186+
pkgs = []
187+
statuses = RebuilderdStatus.objects.select_related().filter(status=RebuilderdStatus.BAD, pkg__pkgname__in=packages.values('pkgname'))
188+
189+
for status in statuses:
190+
pkg = status.pkg
191+
192+
# Diffoscope url
193+
url = f'https://reproducible.archlinux.org/api/v0/builds/{status.build_id}/diffoscope'
194+
pkg.diffoscope = Linkify(url, 'Diffoscope of package', 'diffoscope')
195+
196+
# Build log
197+
url = f'https://reproducible.archlinux.org/api/v0/builds/{status.build_id}/log'
198+
pkg.log = Linkify(url, 'Logs of package', 'log')
199+
pkgs.append(pkg)
200+
201+
return pkgs
175202

176203

177204
def orphan_dependencies(packages):
@@ -260,7 +287,9 @@ def orphan_dependencies(packages):
260287
'non-reproducible-packages',
261288
'Non Reproducible package',
262289
'Packages that are not reproducible on our reproducible.archlinux.org test environment',
263-
non_reproducible_packages)
290+
non_reproducible_packages,
291+
['diffoscope', 'log'],
292+
['diffoscope', 'log'])
264293

265294
REPORT_REQUIRED_ORPHAN = DeveloperReport(
266295
'required-orphan',

0 commit comments

Comments
 (0)