summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/reproducible_common.py127
-rwxr-xr-xbin/reproducible_html_notes.py168
2 files changed, 187 insertions, 108 deletions
diff --git a/bin/reproducible_common.py b/bin/reproducible_common.py
index 874598d3..dd8b19f9 100755
--- a/bin/reproducible_common.py
+++ b/bin/reproducible_common.py
@@ -65,86 +65,95 @@ log.debug("REPRODUCIBLE_JSON:\t" + REPRODUCIBLE_JSON)
log.debug("JENKINS_URL:\t\t" + JENKINS_URL)
log.debug("REPRODUCIBLE_URL:\t" + REPRODUCIBLE_URL)
+
+tab = ' '
+
html_header = Template("""<!DOCTYPE html>
-<html>\n<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<link href="/userContent/static/style.css" type="text/css" rel="stylesheet" />
-<title>$page_title</title>\n</head>
-<body>
-""")
-html_footer = Template("""<hr /><p style="font-size:0.9em;">There is more
-information <a href="%s/userContent/about.html">about jenkins.debian.net</a>
-and about <a href="https://wiki.debian.org/ReproducibleBuilds"> reproducible
-builds of Debian</a> available elsewhere. Last update: $date.
-Copyright 2014-%s <a href="mailto:holger@layer-acht.org">Holger Levsen</a>,
-GPL-2 licensed. The weather icons are public domain and have been taken from
-the <a href=http://tango.freedesktop.org/Tango_Icon_Library target=_blank>Tango
-Icon Library</a>.</p>
-</body></html>""" % (JENKINS_URL, datetime.datetime.now().strftime('%Y')))
-
-html_head_page = Template("""<header>
-<h2>$page_title</h2>
-<p>$count_total packages have been attempted to be build so far, that's
-$percent_total% of $amount source packages in Debian sid
-currently. Out of these, $count_good packagea ($percent_good%)
-<a href="https://wiki.debian.org/ReproducibleBuilds">could be built
-reproducible!</a></p>
-<ul>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <link href="/userContent/static/style.css" type="text/css" rel="stylesheet" />
+ <title>$page_title</title>
+ </head>
+ <body>""")
+html_footer = Template("""
+ <hr />
+ <p style="font-size:0.9em;">
+ There is more information <a href="%s/userContent/about.html">about
+ jenkins.debian.net</a> and about
+ <a href="https://wiki.debian.org/ReproducibleBuilds"> reproducible builds
+ of Debian</a> available elsewhere. Last update: $date.
+ Copyright 2014-%s <a href="mailto:holger@layer-acht.org">Holger Levsen</a>,
+ GPL-2 licensed. The weather icons are public domain and have been taken
+ from the <a href=http://tango.freedesktop.org/Tango_Icon_Library target=_blank>
+ Tango Icon Library</a>.
+ </p>
+ </body>
+</html>""" % (JENKINS_URL, datetime.datetime.now().strftime('%Y')))
+
+html_head_page = Template((tab*2).join("""
+<header>
+ <h2>$page_title</h2>
+ <p>$count_total packages have been attempted to be build so far, that's
+ $percent_total% of $amount source packages in Debian sid
+ currently. Out of these, $count_good packagea ($percent_good%)
+ <a href="https://wiki.debian.org/ReproducibleBuilds">could be built
+ reproducible!</a></p>
+ <ul>
<li>Have a look at:</li>
<li>
- <a href="/userContent/index_reproducible.html" target="_parent">
- <img src="/userContent/static/weather-clear.png"
- alt="reproducible icon" /></a>
+ <a href="/userContent/index_reproducible.html" target="_parent">
+ <img src="/userContent/static/weather-clear.png" alt="reproducible icon" />
+ </a>
</li>
<li>
- <a href="/userContent/index_FTBR_with_buildinfo.html" target="_parent">
- <img src="/userContent/static/weather-showers-scattered.png"
- alt="FTBR_with_buildinfo icon" /></a>
+ <a href="/userContent/index_FTBR_with_buildinfo.html" target="_parent">
+ <img src="/userContent/static/weather-showers-scattered.png" alt="FTBR_with_buildinfo icon" />
+ </a>
</li>
<li>
- <a href="/userContent/index_FTBR.html" target="_parent">
+ <a href="/userContent/index_FTBR.html" target="_parent">
<img src="/userContent/static/weather-showers.png" alt="FTBR icon" />
- </a>
+ </a>
</li>
<li>
- <a href="/userContent/index_FTBFS.html" target="_parent">
+ <a href="/userContent/index_FTBFS.html" target="_parent">
<img src="/userContent/static/weather-storm.png" alt="FTBFS icon" />
- </a>
+ </a>
</li>
<li>
- <a href="/userContent/index_404.html" target="_parent">
- <img src="/userContent/static/weather-severe-alert.png"
- alt="404 icon" /></a>
+ <a href="/userContent/index_404.html" target="_parent">
+ <img src="/userContent/static/weather-severe-alert.png" alt="404 icon" />
+ </a>
</li>
<li>
- <a href="/userContent/index_not_for_us.html" target="_parent">
- <img src="/userContent/static/weather-few-clouds-night.png"
- alt="not_for_us icon" /></a>
+ <a href="/userContent/index_not_for_us.html" target="_parent">
+ <img src="/userContent/static/weather-few-clouds-night.png" alt="not_for_us icon" />
+ </a>
</li>
<li>
- <a href="/userContent/index_blacklisted.html" target="_parent">
- <img src="/userContent/static/error.png" alt="blacklisted icon" />
- </a>
+ <a href="/userContent/index_blacklisted.html" target="_parent">
+ <img src="/userContent/static/error.png" alt="blacklisted icon" />
+ </a>
</li>
- <li><a href="/userContent/index_issues.html">issues</a></li
- <li><li><a href="/userContent/index_notes.html">packages with notes</a></li></li>
+ <li><a href="/userContent/index_issues.html">issues</a></li>
+ <li><a href="/userContent/index_notes.html">packages with notes</a></li>
<li><a href="/userContent/index_scheduled.html">currently scheduled</a></li>
- <li><a href="/userContent/index_last_24h.html">packages tested in the last
- 24h</a></li>
- <li><a href="/userContent/index_last_48h.html">packages tested in the last
- 48h</a></li>
- <li><a href="/userContent/index_all_abc.html">all tested packages (sorted
- alphabetically)</a></li>
- <li><a href="/userContent/index_dd-list.html">maintainers of unreproducible
- packages</a></li>
+ <li><a href="/userContent/index_last_24h.html">packages tested in the last 24h</a></li>
+ <li><a href="/userContent/index_last_48h.html">packages tested in the last 48h</a></li>
+ <li><a href="/userContent/index_all_abc.html">all tested packages (sorted alphabetically)</a></li>
+ <li><a href="/userContent/index_dd-list.html">maintainers of unreproducible packages</a></li>
<li><a href="/userContent/index_stats.html">stats</a></li>
<li><a href="/userContent/index_pkg_sets.html">package sets stats</a></li>
-</ul></header>""")
-
-html_foot_page = Template("""
-<p style="font-size:0.9em;">A package name displayed with a bold font is an
-indication that this package has a note. Visited packages are linked in green,
-those which have not been visited are linked in blue.</p>""")
+ </ul>
+</header>""".splitlines(keepends=True)))
+
+html_foot_page = Template((tab*2).join("""
+<p style="font-size:0.9em;">
+ A package name displayed with a bold font is an indication that this
+ package has a note. Visited packages are linked in green, those which
+ have not been visited are linked in blue.
+</p>""".splitlines(keepends=True)))
url2html = re.compile(r'((mailto\:|((ht|f)tps?)\://|file\:///){1}\S+)')
diff --git a/bin/reproducible_html_notes.py b/bin/reproducible_html_notes.py
index e7b28d07..99505ad7 100755
--- a/bin/reproducible_html_notes.py
+++ b/bin/reproducible_html_notes.py
@@ -13,58 +13,127 @@ from reproducible_common import *
NOTES = 'packages.yml'
ISSUES = 'issues.yml'
-note_html = Template("""<table class="body">
-<tr>
+note_html = Template((tab*2).join("""
+<table class="body">
+ <tr>
<td>Version annotated:</td>
<td>$version</td>
-</tr>
-$infos
-<tr>
+ </tr>
+ $infos
+ <tr>
<td colspan="2">&nbsp;</td>
-</tr>
-<tr>
+ </tr>
+ <tr>
<td colspan="2" style="text-align:right; font-size:0.9em;">
- <p>Notes are stored in <a href="https://anonscm.debian.org/cgit/reproducible/notes.git">notes.git</a>.</p>
+ <p>
+ Notes are stored in <a href="https://anonscm.debian.org/cgit/reproducible/notes.git">notes.git</a>.
+ </p>
</td>
-</tr>
-</table>""")
-note_issues_html = Template("<tr><td>Identified issues:</td><td>$issues</td></tr>")
-note_bugs_html = Template("<tr><td>Bugs noted:</td><td>$bugs</td></tr>")
-note_comments_html = Template("<tr><td>Comments:</td><td>$comments</td></tr>")
-
-note_issue_html_url = Template("""<tr><td>URL</td>
- <td><a href="$url" target="_blank">$url</a></td></tr>""")
-note_issue_html_desc = Template("""<tr><td>Description</td>
- <td>$description</td></tr>""")
-note_issue_html = Template("""<table class="body">
+ </tr>
+</table>""".splitlines(keepends=True)))
+note_issues_html = Template((tab*3).join("""
<tr>
- <td>Identifier:</td>
- <td><a href="%s/${issue}_issue.html" target="_parent">$issue</a>
-</tr>
-$issue_info
-</table>
-""" % ISSUES_URI)
+ <td>
+ Identified issues:
+ </td>
+ <td>
+ $issues
+ </td>
+</tr>""".splitlines(keepends=True)))
+note_bugs_html = Template((tab*4).join("""
+<tr>
+ <td>
+ Bugs noted:
+ </td>
+ <td>
+ $bugs
+ </td>
+</tr>""".splitlines(keepends=True)))
+note_comments_html = Template((tab*3).join("""
+<tr>
+ <td>
+ Comments:
+ </td>
+ <td>
+ $comments
+ </td>
+</tr>""".splitlines(keepends=True)))
-issue_html_url = Template("""<tr><td>URL:</td><td><a href="$url">$url</a>
- </td></tr>""")
-issue_html = Template("""<table class="body">
+note_issue_html_url = Template((tab*6).join("""
<tr>
- <td>Identifier:</td>
- <th>$issue</th>
-</tr>
-$urls
+ <td>
+ URL
+ </td>
+ <td>
+ <a href="$url" target="_blank">$url</a>
+ </td>
+</tr>""".splitlines(keepends=True)))
+note_issue_html_desc = Template((tab*6).join("""
<tr>
- <td>Description:</td>
- <td>$description</td>
-</tr>
+ <td>
+ Description
+ </td>
+ <td>
+ $description
+ </td>
+</tr>""".splitlines(keepends=True)))
+note_issue_html = Template((tab*5).join(("""
+<table class="body">
+ <tr>
+ <td>
+ Identifier:
+ </td>
+ <td>
+ <a href="%s/${issue}_issue.html" target="_parent">$issue</a>
+ </td>
+ </tr>
+ $issue_info
+</table>
+""" % ISSUES_URI).splitlines(keepends=True)))
+
+issue_html_url = Template((tab*4).join("""
<tr>
- <td>Packages known to be affected by this issue:</td>
- <td>$affected_pkgs</td>
-</tr>
-<tr><td colspan="2">&nbsp;</td></tr>
-<tr><td colspan="2" style="text-align:right; font-size:0.9em;">
-<p>Notes are stored in <a href="https://anonscm.debian.org/cgit/reproducible/notes.git">notes.git</a>.</p>
-</td></tr></table>""")
+ <td>
+ URL:
+ </td>
+ <td>
+ <a href="$url">$url</a>
+ </td>
+</tr>""".splitlines(keepends=True)))
+issue_html = Template((tab*3).join("""
+<table class="body">
+ <tr>
+ <td>
+ Identifier:
+ </td>
+ <th>
+ $issue
+ </th>
+ </tr>
+ $urls
+ <tr>
+ <td>
+ Description:
+ </td>
+ <td>
+ $description
+ </td>
+ </tr>
+ <tr>
+ <td>
+ Packages known to be affected by this issue:
+ </td>
+ <td>
+$affected_pkgs
+ </td>
+ </tr>
+ <tr><td colspan="2">&nbsp;</td></tr>
+ <tr>
+ <td colspan="2" style="text-align:right; font-size:0.9em;">
+ <p>Notes are stored in <a href="https://anonscm.debian.org/cgit/reproducible/notes.git">notes.git</a>.</p>
+ </td>
+ </tr>
+</table>""".splitlines(keepends=True)))
def load_notes():
@@ -156,7 +225,7 @@ def gen_html_issue(issue):
# add affected packages:
affected = ''
for pkg in sorted(issues_count[issue]):
- affected += '<a href="%s/%s.html" class="noted">%s</a>\n' % (
+ affected += tab*6 + '<a href="%s/%s.html" class="noted">%s</a>\n' % (
RB_PKG_URI, pkg, pkg)
# check for description:
try:
@@ -216,13 +285,14 @@ def iterate_over_issues(issues):
i = i + 1
def index_issues(issues):
- html = '<table class="body">'
- html += '<tr><th>Identified issues</th></tr>'
+ templ = "\n<table class=\"body\">\n" + tab + "<tr>\n" + tab*2 + "<th>\n" \
+ + tab*3 + "Identified issues\n" + tab*2 + "</th>\n" + tab + "</tr>\n"
+ html = (tab*2).join(templ.splitlines(keepends=True))
for issue in sorted(issues):
- html += '<tr><td><a href="' + ISSUES_URI + '/' + issue + \
- '_issue.html">' + issue + '</a></td></tr>'
- html += '</table>'
- html += '<p>Notes are stored in <a href="https://anonscm.debian.org/cgit/reproducible/notes.git">notes.git</a>.</p>'
+ html += tab*3 + '<tr><td><a href="' + ISSUES_URI + '/' + issue + \
+ '_issue.html">' + issue + '</a></td></tr>\n'
+ html += tab*2 + '</table>\n'
+ html += tab*2 + '<p>Notes are stored in <a href="https://anonscm.debian.org/cgit/reproducible/notes.git">notes.git</a>.</p>'
title = 'Overview of known issues related to reproducible builds'
destfile = BASE + '/userContent/index_issues.html'
desturl = REPRODUCIBLE_URL + '/userContent/index_issues.html'