[calm - Cygwin server-side packaging maintenance script] branch master, updated. 20230209-109-g21a8e6b

Jon Turney jturney@sourceware.org
Sat May 4 15:34:51 GMT 2024




https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=21a8e6b6e8ae03f326c5832f13e00f63c48d4147

commit 21a8e6b6e8ae03f326c5832f13e00f63c48d4147
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sat May 4 16:28:17 2024 +0100

    Wind the obsolete package exipry threshold age forward

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=8729295b9b205c2db2a6bb0981f2d50f504a3462

commit 8729295b9b205c2db2a6bb0981f2d50f504a3462
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Thu May 2 18:41:53 2024 +0100

    Include arch into package summary versions table

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=ded3a9940351cb51f84d76e544308f0e38debdcc

commit ded3a9940351cb51f84d76e544308f0e38debdcc
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Thu May 2 13:38:56 2024 +0100

    Simplify the way arch_re is made
    
    (There's actually a thinko in the previous implementation, as it doesn't
    add the '-' in the right place if the ARCHES list has more than one
    element.)

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=10400e31a8eae916b65edaecfac3b32b26aeede2

commit 10400e31a8eae916b65edaecfac3b32b26aeede2
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Wed May 1 19:23:56 2024 +0100

    Improve fix-requires-by-linkage tool
    
    * allow to only consider packages which already have some dependency
    * also consider loadable modules built with .so extension

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=eb276adc82952e8509a489f6b893166e4dc87ac8

commit eb276adc82952e8509a489f6b893166e4dc87ac8
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sun Apr 28 21:20:52 2024 +0100

    Include obsoletes: in the set of valid things to depends: on
    
    It's OK to depends: on something which only exists as an obsoletes: on
    some package, after the original package providing it has been removed.


Diff:
---
 calm/fix-requires-by-linkage.py                    |  6 ++-
 calm/package.py                                    | 19 ++++++----
 calm/past_mistakes.py                              |  4 +-
 calm/pkg2html.py                                   | 43 +++++++++++-----------
 test/testdata/htdocs.expected/summary/arc-src.html |  9 ++---
 test/testdata/htdocs.expected/summary/arc.html     |  9 ++---
 .../htdocs.expected/summary/base-cygwin.html       | 11 ++----
 .../htdocs.expected/summary/corrupt-src.html       |  9 ++---
 test/testdata/htdocs.expected/summary/corrupt.html |  9 ++---
 .../htdocs.expected/summary/cygwin-debuginfo.html  | 13 +++----
 .../htdocs.expected/summary/cygwin-devel.html      | 13 +++----
 .../htdocs.expected/summary/cygwin-src.html        | 13 +++----
 test/testdata/htdocs.expected/summary/cygwin.html  | 13 +++----
 .../htdocs.expected/summary/keychain-src.html      | 11 ++----
 .../testdata/htdocs.expected/summary/keychain.html | 11 ++----
 .../htdocs.expected/summary/libdns_sd-devel.html   |  9 ++---
 .../htdocs.expected/summary/libdns_sd1.html        |  9 ++---
 .../htdocs.expected/summary/mDNSResponder-src.html |  9 ++---
 .../htdocs.expected/summary/mDNSResponder.html     |  9 ++---
 .../htdocs.expected/summary/obs-a-src.html         |  9 ++---
 test/testdata/htdocs.expected/summary/obs-a.html   |  9 ++---
 .../htdocs.expected/summary/obs-b-src.html         |  9 ++---
 test/testdata/htdocs.expected/summary/obs-b.html   |  9 ++---
 .../htdocs.expected/summary/openssh-src.html       |  9 ++---
 test/testdata/htdocs.expected/summary/openssh.html |  9 ++---
 .../per-version-replacement-hint-only-src.html     |  9 ++---
 .../summary/per-version-replacement-hint-only.html |  9 ++---
 .../htdocs.expected/summary/per-version-src.html   | 11 ++----
 .../htdocs.expected/summary/per-version.html       | 11 ++----
 .../summary/perl-Net-SMTP-SSL-src.html             | 13 +++----
 .../htdocs.expected/summary/perl-Net-SMTP-SSL.html | 13 +++----
 .../htdocs.expected/summary/rpm-doc-src.html       |  9 ++---
 test/testdata/htdocs.expected/summary/rpm-doc.html | 11 ++----
 .../htdocs.expected/summary/staleversion-src.html  | 19 ++++------
 .../htdocs.expected/summary/staleversion.html      | 19 ++++------
 .../htdocs.expected/summary/test-c-src.html        |  9 ++---
 test/testdata/htdocs.expected/summary/test-c.html  |  9 ++---
 .../htdocs.expected/summary/test-d-src.html        |  9 ++---
 test/testdata/htdocs.expected/summary/test-d.html  |  9 ++---
 .../htdocs.expected/summary/test-e-src.html        |  9 ++---
 test/testdata/htdocs.expected/summary/test-e.html  |  9 ++---
 .../htdocs.expected/summary/testpackage-src.html   |  9 ++---
 .../htdocs.expected/summary/testpackage.html       |  9 ++---
 43 files changed, 185 insertions(+), 294 deletions(-)

diff --git a/calm/fix-requires-by-linkage.py b/calm/fix-requires-by-linkage.py
index 0f1136f..62a2c33 100644
--- a/calm/fix-requires-by-linkage.py
+++ b/calm/fix-requires-by-linkage.py
@@ -59,6 +59,9 @@ def fix_one_hint(args, dirpath, hintfile, tf):
         if args.requires in requires:
             return
 
+    if args.only and args.only not in requires:
+        return
+
     # check if this package installs executables linked to the specified DLL,
     # and if so, add to the requires, if not already present
     exe = False
@@ -69,7 +72,7 @@ def fix_one_hint(args, dirpath, hintfile, tf):
                 if not m.isfile():
                     continue
 
-                if re.search(r'\.(exe|dll)$', m.name):
+                if re.search(r'\.(exe|dll|so)$', m.name):
                     logging.info('Found executable %s' % m.name)
                     a.extract(m)
 
@@ -141,6 +144,7 @@ if __name__ == "__main__":
     parser.add_argument('-v', '--verbose', action='count', dest='verbose', help='verbose output', default=0)
     parser.add_argument('--releasearea', action='store', metavar='DIR', help="release directory (default: " + relarea_default + ")", default=relarea_default, dest='relarea')
     parser.add_argument('--replace', action='store', metavar='DEPATOM', help="replace existing DEPATOM if present")
+    parser.add_argument('--only', action='store', metavar='DEPATOM', help="only operate on packages with existing DEPATOM")
     (args) = parser.parse_args()
 
     if args.verbose:
diff --git a/calm/package.py b/calm/package.py
index 712f9b5..98fdd34 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -469,11 +469,8 @@ def read_one_package(packages, p, basedir, files, kind, strict):
         if kind == Kind.source:
             arch_re = r'(-src)'
         else:
-            # XXX: we might also need to handle ARCHIVED_ARCHES, so this works
-            # for mksetupini invoked on an x86 repo with new packages made by
-            # future versions of cygport which generate arch-tagged packages (it
-            # might be better if we had an idea what the valid arches are here)
-            arch_re = r'(-' + '|'.join(common_constants.ARCHES) + r'|)'
+            # archtag is either missing, or the appropriate one for the path
+            arch_re = r'(-' + rp.arch + r'|)'
 
         # warn if filename doesn't follow P-V-R naming convention
         #
@@ -486,7 +483,6 @@ def read_one_package(packages, p, basedir, files, kind, strict):
         else:
             v = match.group(1)
             r = match.group(2)
-            arch_tag = match.group(3)
 
             # historically, V can contain a '-' (since we can use the fact
             # we already know P to split unambiguously), but this is a bad
@@ -541,10 +537,16 @@ def read_one_package(packages, p, basedir, files, kind, strict):
             t.mtime = os.path.getmtime(rp.abspath(basedir))
             t.sha512 = sha512_file(rp.abspath(basedir))
 
+            # record the arch_tag (or what it would have been, if not omitted)
+            if kind == Kind.source:
+                t.arch = 'src'
+            else:
+                t.arch = rp.arch
+
             tars[vr] = t
 
             # it's an error to not have a corresponding pvr.hint in the same directory
-            hint_fn = '%s-%s%s.hint' % (p, vr, arch_tag)
+            hint_fn = '%s-%s%s.hint' % (p, vr, match.group(3))
             hrp = RepoPath(rp.arch, rp.path, hint_fn)
             if hrp not in files:
                 logging.error("package %s has packages for version %s, but no %s" % (p, vr, hint_fn))
@@ -759,6 +761,7 @@ def validate_packages(args, packages, valid_provides_extra=None, missing_obsolet
     for p in packages:
         valid_requires.add(p)
         for hints in packages[p].version_hints.values():
+            valid_requires.update(hints.get('obsoletes', []))
             valid_requires.update(hints.get('provides', []))
 
             # reset computed package state
@@ -1712,7 +1715,7 @@ def mark_fn(packages, po, v, certain_age, obs_threshold, vault_requests):
 #
 
 SO_AGE_THRESHOLD_YEARS = 5
-OBSOLETE_AGE_THRESHOLD_YEARS = 10
+OBSOLETE_AGE_THRESHOLD_YEARS = 8
 
 
 def stale_packages(packages, vault_requests):
diff --git a/calm/past_mistakes.py b/calm/past_mistakes.py
index b9ffec9..338095f 100644
--- a/calm/past_mistakes.py
+++ b/calm/past_mistakes.py
@@ -277,6 +277,7 @@ old_style_obsolete_by = {
     'at-spi2-atk': 'libatk-bridge2.0_0',
     'idle3': 'idle39',
     'lighttpd-mod_trigger_b4_dl': 'lighttpd',
+    'octave-octcdf': 'octave-netcdf',
     'python-gi-common': 'python3-gi',
     'python-pyatspi-common': 'python3-pyatspi',
     'qt-gstreamer': 'libQtGStreamer1_0_0',
@@ -293,11 +294,10 @@ old_style_obsolete_by = {
     'python3-.*': '',
     # these packages probably should be marked as self-destruct?
     'mate-utils': '',
-    'octave-octcdf': '',
     'python-twisted-debuginfo': '',
     'texlive-collection-htmlxml': '',
     'vte2.91': '',
-    'w32api': '',
     # self-destruct, or need to start to exist
     'cron-debuginfo': '',
+    'w32api': '',
 }
diff --git a/calm/pkg2html.py b/calm/pkg2html.py
index 86a41df..979914b 100755
--- a/calm/pkg2html.py
+++ b/calm/pkg2html.py
@@ -50,6 +50,7 @@ import string
 import sys
 import textwrap
 import time
+import types
 from typing import NamedTuple
 
 import markdown
@@ -322,35 +323,35 @@ def update_package_listings(args, packages):
                         if not v.startswith('<p>'):
                             v = '<p>' + v + '</p>'
                         print('<tr><td><p><span class="detail">%s</span>:</p></td><td>%s</td></tr>' % (d, v), file=f)
-                    print('</table>', file=f)
+                    print('</table><br>', file=f)
 
-                    # output per-arch package versions table
-                    print('<ul>', file=f)
+                    # output package versions table
+                    versions_table = []
                     for arch in sorted(packages):
                         if p in packages[arch]:
 
-                            print('<li><span class="detail">%s</span></li>' % arch, file=f)
-
-                            print('<table class="pkgtable">', file=f)
-                            print('<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>', file=f)
-
-                            def tar_line(pn, p, v, arch, f):
-                                size = int(math.ceil(p.tar(v).size / 1024))
+                            def tar_line(pn, p, v, arch):
+                                item = types.SimpleNamespace()
+                                item.version = v
+                                item.size = int(math.ceil(p.tar(v).size / 1024))
                                 if p.kind == package.Kind.binary:
-                                    name = v
                                     target = "%s-%s" % (p.orig_name, v)
                                 else:
-                                    name = v + ' (source)'
                                     target = "%s-%s-src" % (p.orig_name, v)
-                                test = 'test' if 'test' in p.version_hints[v] else 'stable'
-                                ts = tsformat(p.tar(v).mtime)
-                                print('<tr><td>%s</td><td class="right">%d KiB</td><td>%s</td><td>[<a href="../%s/%s/%s">list of files</a>]</td><td>%s</td></tr>' % (name, size, ts, arch, pn, target, test), file=f)
-
-                            for version in sorted(packages[arch][p].versions(), key=lambda v: SetupVersion(v)):
-                                tar_line(p, packages[arch][p], version, arch, f)
-
-                            print('</table><br>', file=f)
-                    print('</ul>', file=f)
+                                item.link = "../%s/%s/%s" % (arch, pn, target)
+                                item.status = 'test' if 'test' in p.version_hints[v] else 'stable'
+                                item.ts = tsformat(p.tar(v).mtime)
+                                item.arch = p.tar(v).arch
+                                return item
+
+                            for version in packages[arch][p].versions():
+                                versions_table.append(tar_line(p, packages[arch][p], version, arch))
+
+                    print('<table class="pkgtable">', file=f)
+                    print('<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>', file=f)
+                    for i in sorted(versions_table, key=lambda i: (SetupVersion(i.version), i.arch)):
+                        print('<tr><td>%s</td><td>%s</td><td class="right">%d KiB</td><td>%s</td><td>[<a href="%s">list of files</a>]</td><td>%s</td></tr>' % (i.version, i.arch, i.size, i.ts, i.link, i.status), file=f)
+                    print('</table><br>', file=f)
 
                     print(textwrap.dedent('''\
                     </div>
diff --git a/test/testdata/htdocs.expected/summary/arc-src.html b/test/testdata/htdocs.expected/summary/arc-src.html
index 439b271..9e95ab4 100755
--- a/test/testdata/htdocs.expected/summary/arc-src.html
+++ b/test/testdata/htdocs.expected/summary/arc-src.html
@@ -23,14 +23,11 @@ the best of packing, squeezing, or crunching is used.</p></td></tr>
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Jari Aalto
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>4.32.7-10 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/arc-src/arc-4.32.7-10-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>4.32.7-10</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/arc-src/arc-4.32.7-10-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/arc.html b/test/testdata/htdocs.expected/summary/arc.html
index 595e278..6d3b765 100644
--- a/test/testdata/htdocs.expected/summary/arc.html
+++ b/test/testdata/htdocs.expected/summary/arc.html
@@ -23,14 +23,11 @@ the best of packing, squeezing, or crunching is used.</p></td></tr>
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Jari Aalto
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>4.32.7-10</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/arc/arc-4.32.7-10">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>4.32.7-10</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/arc/arc-4.32.7-10">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/base-cygwin.html b/test/testdata/htdocs.expected/summary/base-cygwin.html
index 4eceb2f..f7c8f7c 100644
--- a/test/testdata/htdocs.expected/summary/base-cygwin.html
+++ b/test/testdata/htdocs.expected/summary/base-cygwin.html
@@ -20,15 +20,12 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Corinna Vinschen
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>3.6-1</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/base-cygwin/base-cygwin-3.6-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>3.8-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/base-cygwin/base-cygwin-3.8-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>3.6-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/base-cygwin/base-cygwin-3.6-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>3.8-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/base-cygwin/base-cygwin-3.8-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/corrupt-src.html b/test/testdata/htdocs.expected/summary/corrupt-src.html
index 0d9f881..8dc69c2 100755
--- a/test/testdata/htdocs.expected/summary/corrupt-src.html
+++ b/test/testdata/htdocs.expected/summary/corrupt-src.html
@@ -18,14 +18,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>2.0.0-1 (source)</td><td class="right">354 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/corrupt-src/corrupt-2.0.0-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>2.0.0-1</td><td>src</td><td class="right">354 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/corrupt-src/corrupt-2.0.0-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/corrupt.html b/test/testdata/htdocs.expected/summary/corrupt.html
index 08442ea..0507405 100644
--- a/test/testdata/htdocs.expected/summary/corrupt.html
+++ b/test/testdata/htdocs.expected/summary/corrupt.html
@@ -18,14 +18,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>2.0.0-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/corrupt/corrupt-2.0.0-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>2.0.0-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/corrupt/corrupt-2.0.0-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/cygwin-debuginfo.html b/test/testdata/htdocs.expected/summary/cygwin-debuginfo.html
index 9d017df..594761c 100644
--- a/test/testdata/htdocs.expected/summary/cygwin-debuginfo.html
+++ b/test/testdata/htdocs.expected/summary/cygwin-debuginfo.html
@@ -21,16 +21,13 @@ cygwin package with gdb.</p></td></tr>
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Corinna Vinschen, Yaakov Selkowitz
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>2.2.0-1</td><td class="right">1 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/cygwin-debuginfo/cygwin-debuginfo-2.2.0-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>2.2.1-1</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/cygwin-debuginfo/cygwin-debuginfo-2.2.1-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>2.3.0-0.3</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/cygwin-debuginfo/cygwin-debuginfo-2.3.0-0.3">list of files</a>]</td><td>test</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>2.2.0-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/cygwin-debuginfo/cygwin-debuginfo-2.2.0-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>2.2.1-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/cygwin-debuginfo/cygwin-debuginfo-2.2.1-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>2.3.0-0.3</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/cygwin-debuginfo/cygwin-debuginfo-2.3.0-0.3">list of files</a>]</td><td>test</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/cygwin-devel.html b/test/testdata/htdocs.expected/summary/cygwin-devel.html
index c4e6b59..9120025 100644
--- a/test/testdata/htdocs.expected/summary/cygwin-devel.html
+++ b/test/testdata/htdocs.expected/summary/cygwin-devel.html
@@ -19,16 +19,13 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Corinna Vinschen, Yaakov Selkowitz
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>2.2.0-1</td><td class="right">1 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/cygwin-devel/cygwin-devel-2.2.0-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>2.2.1-1</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/cygwin-devel/cygwin-devel-2.2.1-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>2.3.0-0.3</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/cygwin-devel/cygwin-devel-2.3.0-0.3">list of files</a>]</td><td>test</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>2.2.0-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/cygwin-devel/cygwin-devel-2.2.0-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>2.2.1-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/cygwin-devel/cygwin-devel-2.2.1-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>2.3.0-0.3</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/cygwin-devel/cygwin-devel-2.3.0-0.3">list of files</a>]</td><td>test</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/cygwin-src.html b/test/testdata/htdocs.expected/summary/cygwin-src.html
index 9ad7b0d..84bb91d 100755
--- a/test/testdata/htdocs.expected/summary/cygwin-src.html
+++ b/test/testdata/htdocs.expected/summary/cygwin-src.html
@@ -20,16 +20,13 @@
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
 <tr><td><p><span class="detail">packaging repository</span>:</p></td><td><p><a href="/cgit/cygwin-packages/cygwin/">cygwin.git</a></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>2.2.0-1 (source)</td><td class="right">1 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/cygwin-src/cygwin-2.2.0-1-src">list of files</a>]</td><td>stable</td></tr>
-<tr><td>2.2.1-1 (source)</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/cygwin-src/cygwin-2.2.1-1-src">list of files</a>]</td><td>stable</td></tr>
-<tr><td>2.3.0-0.3 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/cygwin-src/cygwin-2.3.0-0.3-src">list of files</a>]</td><td>test</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>2.2.0-1</td><td>src</td><td class="right">1 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/cygwin-src/cygwin-2.2.0-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><td>2.2.1-1</td><td>src</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/cygwin-src/cygwin-2.2.1-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><td>2.3.0-0.3</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/cygwin-src/cygwin-2.3.0-0.3-src">list of files</a>]</td><td>test</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/cygwin.html b/test/testdata/htdocs.expected/summary/cygwin.html
index fd9801b..3b956b2 100644
--- a/test/testdata/htdocs.expected/summary/cygwin.html
+++ b/test/testdata/htdocs.expected/summary/cygwin.html
@@ -20,16 +20,13 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Corinna Vinschen, Yaakov Selkowitz
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>2.2.0-1</td><td class="right">1 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/cygwin/cygwin-2.2.0-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>2.2.1-1</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/cygwin/cygwin-2.2.1-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>2.3.0-0.3</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/cygwin/cygwin-2.3.0-0.3">list of files</a>]</td><td>test</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>2.2.0-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/cygwin/cygwin-2.2.0-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>2.2.1-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/cygwin/cygwin-2.2.1-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>2.3.0-0.3</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/cygwin/cygwin-2.3.0-0.3">list of files</a>]</td><td>test</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/keychain-src.html b/test/testdata/htdocs.expected/summary/keychain-src.html
index 6a7b984..908685c 100755
--- a/test/testdata/htdocs.expected/summary/keychain-src.html
+++ b/test/testdata/htdocs.expected/summary/keychain-src.html
@@ -26,15 +26,12 @@ necessary</p></td></tr>
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Jari Aalto
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>2.6.8-1 (source)</td><td class="right">36 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/keychain-src/keychain-2.6.8-1-src">list of files</a>]</td><td>stable</td></tr>
-<tr><td>2.7.1-1 (source)</td><td class="right">132 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/keychain-src/keychain-2.7.1-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>2.6.8-1</td><td>src</td><td class="right">36 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/keychain-src/keychain-2.6.8-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><td>2.7.1-1</td><td>src</td><td class="right">132 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/keychain-src/keychain-2.7.1-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/keychain.html b/test/testdata/htdocs.expected/summary/keychain.html
index 91f916b..436ddb0 100644
--- a/test/testdata/htdocs.expected/summary/keychain.html
+++ b/test/testdata/htdocs.expected/summary/keychain.html
@@ -27,15 +27,12 @@ necessary</p></td></tr>
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Jari Aalto
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>2.6.8-1</td><td class="right">30 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/keychain/keychain-2.6.8-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>2.7.1-1</td><td class="right">32 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/keychain/keychain-2.7.1-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>2.6.8-1</td><td>x86_64</td><td class="right">30 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/keychain/keychain-2.6.8-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>2.7.1-1</td><td>x86_64</td><td class="right">32 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/keychain/keychain-2.7.1-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/libdns_sd-devel.html b/test/testdata/htdocs.expected/summary/libdns_sd-devel.html
index 14b43b7..31bc9e5 100644
--- a/test/testdata/htdocs.expected/summary/libdns_sd-devel.html
+++ b/test/testdata/htdocs.expected/summary/libdns_sd-devel.html
@@ -21,14 +21,11 @@ industry standard IP protocols.</p></td></tr>
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Yaakov Selkowitz
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>379.32.1-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/libdns_sd-devel/libdns_sd-devel-379.32.1-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>379.32.1-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/libdns_sd-devel/libdns_sd-devel-379.32.1-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/libdns_sd1.html b/test/testdata/htdocs.expected/summary/libdns_sd1.html
index d099261..74f71b2 100644
--- a/test/testdata/htdocs.expected/summary/libdns_sd1.html
+++ b/test/testdata/htdocs.expected/summary/libdns_sd1.html
@@ -21,14 +21,11 @@ industry standard IP protocols.</p></td></tr>
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Yaakov Selkowitz
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>379.32.1-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/libdns_sd1/libdns_sd1-379.32.1-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>379.32.1-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/libdns_sd1/libdns_sd1-379.32.1-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/mDNSResponder-src.html b/test/testdata/htdocs.expected/summary/mDNSResponder-src.html
index 38ccab9..05db800 100755
--- a/test/testdata/htdocs.expected/summary/mDNSResponder-src.html
+++ b/test/testdata/htdocs.expected/summary/mDNSResponder-src.html
@@ -20,14 +20,11 @@ industry standard IP protocols.</p></td></tr>
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Yaakov Selkowitz
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>379.32.1-1 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/mDNSResponder-src/mDNSResponder-379.32.1-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>379.32.1-1</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/mDNSResponder-src/mDNSResponder-379.32.1-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/mDNSResponder.html b/test/testdata/htdocs.expected/summary/mDNSResponder.html
index 3c304de..ba4c9ec 100644
--- a/test/testdata/htdocs.expected/summary/mDNSResponder.html
+++ b/test/testdata/htdocs.expected/summary/mDNSResponder.html
@@ -21,14 +21,11 @@ industry standard IP protocols.</p></td></tr>
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Yaakov Selkowitz
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>379.32.1-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/mDNSResponder/mDNSResponder-379.32.1-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>379.32.1-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/mDNSResponder/mDNSResponder-379.32.1-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/obs-a-src.html b/test/testdata/htdocs.expected/summary/obs-a-src.html
index 74467e2..de4a680 100755
--- a/test/testdata/htdocs.expected/summary/obs-a-src.html
+++ b/test/testdata/htdocs.expected/summary/obs-a-src.html
@@ -18,14 +18,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0-1 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/obs-a-src/obs-a-1.0-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0-1</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/obs-a-src/obs-a-1.0-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/obs-a.html b/test/testdata/htdocs.expected/summary/obs-a.html
index 298db09..774c985 100644
--- a/test/testdata/htdocs.expected/summary/obs-a.html
+++ b/test/testdata/htdocs.expected/summary/obs-a.html
@@ -19,14 +19,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/obs-a/obs-a-1.0-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0-1</td><td>noarch</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/obs-a/obs-a-1.0-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/obs-b-src.html b/test/testdata/htdocs.expected/summary/obs-b-src.html
index 877fcf9..9b2e61b 100755
--- a/test/testdata/htdocs.expected/summary/obs-b-src.html
+++ b/test/testdata/htdocs.expected/summary/obs-b-src.html
@@ -18,14 +18,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0-1 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/obs-b-src/obs-b-1.0-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0-1</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/obs-b-src/obs-b-1.0-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/obs-b.html b/test/testdata/htdocs.expected/summary/obs-b.html
index e56bbc1..623cebd 100644
--- a/test/testdata/htdocs.expected/summary/obs-b.html
+++ b/test/testdata/htdocs.expected/summary/obs-b.html
@@ -19,14 +19,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/obs-b/obs-b-1.0-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0-1</td><td>noarch</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/obs-b/obs-b-1.0-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/openssh-src.html b/test/testdata/htdocs.expected/summary/openssh-src.html
index 9ac2ab1..c8eb895 100755
--- a/test/testdata/htdocs.expected/summary/openssh-src.html
+++ b/test/testdata/htdocs.expected/summary/openssh-src.html
@@ -20,14 +20,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Corinna Vinschen
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>7.2p2-1 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/openssh-src/openssh-7.2p2-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>7.2p2-1</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/openssh-src/openssh-7.2p2-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/openssh.html b/test/testdata/htdocs.expected/summary/openssh.html
index 75f3bc2..812ae7d 100644
--- a/test/testdata/htdocs.expected/summary/openssh.html
+++ b/test/testdata/htdocs.expected/summary/openssh.html
@@ -21,14 +21,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Corinna Vinschen
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>7.2p2-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/openssh/openssh-7.2p2-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>7.2p2-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/openssh/openssh-7.2p2-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/per-version-replacement-hint-only-src.html b/test/testdata/htdocs.expected/summary/per-version-replacement-hint-only-src.html
index 110add2..078fa31 100755
--- a/test/testdata/htdocs.expected/summary/per-version-replacement-hint-only-src.html
+++ b/test/testdata/htdocs.expected/summary/per-version-replacement-hint-only-src.html
@@ -18,14 +18,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0-1 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/per-version-replacement-hint-only-src/per-version-replacement-hint-only-1.0-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0-1</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/per-version-replacement-hint-only-src/per-version-replacement-hint-only-1.0-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/per-version-replacement-hint-only.html b/test/testdata/htdocs.expected/summary/per-version-replacement-hint-only.html
index fce022f..e9bd68a 100644
--- a/test/testdata/htdocs.expected/summary/per-version-replacement-hint-only.html
+++ b/test/testdata/htdocs.expected/summary/per-version-replacement-hint-only.html
@@ -19,14 +19,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/per-version-replacement-hint-only/per-version-replacement-hint-only-1.0-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/per-version-replacement-hint-only/per-version-replacement-hint-only-1.0-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/per-version-src.html b/test/testdata/htdocs.expected/summary/per-version-src.html
index 3703449..f99713c 100755
--- a/test/testdata/htdocs.expected/summary/per-version-src.html
+++ b/test/testdata/htdocs.expected/summary/per-version-src.html
@@ -18,15 +18,12 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>4.0-1 (source)</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/per-version-src/per-version-4.0-1-src">list of files</a>]</td><td>stable</td></tr>
-<tr><td>4.8-1 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/per-version-src/per-version-4.8-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>4.0-1</td><td>src</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/per-version-src/per-version-4.0-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><td>4.8-1</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/per-version-src/per-version-4.8-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/per-version.html b/test/testdata/htdocs.expected/summary/per-version.html
index 2fdd500..a16b0bb 100644
--- a/test/testdata/htdocs.expected/summary/per-version.html
+++ b/test/testdata/htdocs.expected/summary/per-version.html
@@ -19,15 +19,12 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>4.0-1</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/per-version/per-version-4.0-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>4.8-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/per-version/per-version-4.8-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>4.0-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/per-version/per-version-4.0-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>4.8-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/per-version/per-version-4.8-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/perl-Net-SMTP-SSL-src.html b/test/testdata/htdocs.expected/summary/perl-Net-SMTP-SSL-src.html
index ec4255c..faff410 100755
--- a/test/testdata/htdocs.expected/summary/perl-Net-SMTP-SSL-src.html
+++ b/test/testdata/htdocs.expected/summary/perl-Net-SMTP-SSL-src.html
@@ -19,16 +19,13 @@ its network operations in order to support encrypted connections.</p></td></tr>
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey, Yaakov Selkowitz
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.01-1 (source)</td><td class="right">3 KiB</td><td>2016-09-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL-src/perl-Net-SMTP-SSL-1.01-1-src">list of files</a>]</td><td>stable</td></tr>
-<tr><td>1.02-1 (source)</td><td class="right">3 KiB</td><td>2016-10-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL-src/perl-Net-SMTP-SSL-1.02-1-src">list of files</a>]</td><td>stable</td></tr>
-<tr><td>1.03-1 (source)</td><td class="right">3 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL-src/perl-Net-SMTP-SSL-1.03-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.01-1</td><td>src</td><td class="right">3 KiB</td><td>2016-09-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL-src/perl-Net-SMTP-SSL-1.01-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><td>1.02-1</td><td>src</td><td class="right">3 KiB</td><td>2016-10-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL-src/perl-Net-SMTP-SSL-1.02-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><td>1.03-1</td><td>src</td><td class="right">3 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL-src/perl-Net-SMTP-SSL-1.03-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/perl-Net-SMTP-SSL.html b/test/testdata/htdocs.expected/summary/perl-Net-SMTP-SSL.html
index 0f42fb3..2237ceb 100644
--- a/test/testdata/htdocs.expected/summary/perl-Net-SMTP-SSL.html
+++ b/test/testdata/htdocs.expected/summary/perl-Net-SMTP-SSL.html
@@ -19,16 +19,13 @@ its network operations in order to support encrypted connections.</p></td></tr>
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey, Yaakov Selkowitz
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.01-1</td><td class="right">4 KiB</td><td>2016-09-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.01-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>1.02-1</td><td class="right">4 KiB</td><td>2016-10-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.02-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>1.03-1</td><td class="right">4 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.01-1</td><td>noarch</td><td class="right">4 KiB</td><td>2016-09-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.01-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>1.02-1</td><td>noarch</td><td class="right">4 KiB</td><td>2016-10-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.02-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>1.03-1</td><td>noarch</td><td class="right">4 KiB</td><td>2016-11-01 00:00</td><td>[<a href="../x86_64/perl-Net-SMTP-SSL/perl-Net-SMTP-SSL-1.03-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/rpm-doc-src.html b/test/testdata/htdocs.expected/summary/rpm-doc-src.html
index fe14c1b..ae1ffa3 100755
--- a/test/testdata/htdocs.expected/summary/rpm-doc-src.html
+++ b/test/testdata/htdocs.expected/summary/rpm-doc-src.html
@@ -15,14 +15,11 @@
 <tr><td><p><span class="detail">description</span>:</p></td><td><p>Obsolete package for RPM package management system manual pages (extra text to so repr is not one line)</p></td></tr>
 <tr><td><p><span class="detail">categories</span>:</p></td><td><p>_obsolete</p></td></tr>
 <tr><td><p><span class="detail">install package(s)</span>:</p></td><td><p><a href="rpm-doc.html">rpm-doc</a></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>4.1-2 (source)</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/rpm-doc-src/rpm-doc-4.1-2-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>4.1-2</td><td>src</td><td class="right">1 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/rpm-doc-src/rpm-doc-4.1-2-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/rpm-doc.html b/test/testdata/htdocs.expected/summary/rpm-doc.html
index 7f18d06..85dd47b 100644
--- a/test/testdata/htdocs.expected/summary/rpm-doc.html
+++ b/test/testdata/htdocs.expected/summary/rpm-doc.html
@@ -15,15 +15,12 @@
 <tr><td><p><span class="detail">description</span>:</p></td><td><p>Obsolete package for RPM package management system manual pages (extra text to so repr is not one line)</p></td></tr>
 <tr><td><p><span class="detail">categories</span>:</p></td><td><p>_obsolete</p></td></tr>
 <tr><td><p><span class="detail">source package</span>:</p></td><td><p><a href="rpm-doc-src.html">rpm-doc</a></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>4.1-2</td><td class="right">50 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/rpm-doc/rpm-doc-4.1-2">list of files</a>]</td><td>stable</td></tr>
-<tr><td>999-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/rpm-doc/rpm-doc-999-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>4.1-2</td><td>x86_64</td><td class="right">50 KiB</td><td>2016-11-02 00:00</td><td>[<a href="../x86_64/rpm-doc/rpm-doc-4.1-2">list of files</a>]</td><td>stable</td></tr>
+<tr><td>999-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/rpm-doc/rpm-doc-999-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/staleversion-src.html b/test/testdata/htdocs.expected/summary/staleversion-src.html
index c5ef835..4437f2e 100755
--- a/test/testdata/htdocs.expected/summary/staleversion-src.html
+++ b/test/testdata/htdocs.expected/summary/staleversion-src.html
@@ -18,19 +18,16 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>240-1 (source)</td><td class="right">1 KiB</td><td>2017-04-07 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-240-1-src">list of files</a>]</td><td>stable</td></tr>
-<tr><td>242-0 (source)</td><td class="right">1 KiB</td><td>2017-04-08 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-242-0-src">list of files</a>]</td><td>stable</td></tr>
-<tr><td>243-0 (source)</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-243-0-src">list of files</a>]</td><td>stable</td></tr>
-<tr><td>250-0 (source)</td><td class="right">1 KiB</td><td>2017-04-10 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-250-0-src">list of files</a>]</td><td>stable</td></tr>
-<tr><td>251-0 (source)</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-251-0-src">list of files</a>]</td><td>test</td></tr>
-<tr><td>260-0 (source)</td><td class="right">1 KiB</td><td>2017-04-12 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-260-0-src">list of files</a>]</td><td>test</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>240-1</td><td>src</td><td class="right">1 KiB</td><td>2017-04-07 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-240-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><td>242-0</td><td>src</td><td class="right">1 KiB</td><td>2017-04-08 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-242-0-src">list of files</a>]</td><td>stable</td></tr>
+<tr><td>243-0</td><td>src</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-243-0-src">list of files</a>]</td><td>stable</td></tr>
+<tr><td>250-0</td><td>src</td><td class="right">1 KiB</td><td>2017-04-10 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-250-0-src">list of files</a>]</td><td>stable</td></tr>
+<tr><td>251-0</td><td>src</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-251-0-src">list of files</a>]</td><td>test</td></tr>
+<tr><td>260-0</td><td>src</td><td class="right">1 KiB</td><td>2017-04-12 00:00</td><td>[<a href="../x86_64/staleversion-src/staleversion-260-0-src">list of files</a>]</td><td>test</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/staleversion.html b/test/testdata/htdocs.expected/summary/staleversion.html
index 00e875a..d3f31f3 100644
--- a/test/testdata/htdocs.expected/summary/staleversion.html
+++ b/test/testdata/htdocs.expected/summary/staleversion.html
@@ -18,19 +18,16 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>240-1</td><td class="right">1 KiB</td><td>2017-04-07 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-240-1">list of files</a>]</td><td>stable</td></tr>
-<tr><td>242-0</td><td class="right">1 KiB</td><td>2017-04-08 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-242-0">list of files</a>]</td><td>stable</td></tr>
-<tr><td>243-0</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-243-0">list of files</a>]</td><td>stable</td></tr>
-<tr><td>250-0</td><td class="right">1 KiB</td><td>2017-04-10 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-250-0">list of files</a>]</td><td>stable</td></tr>
-<tr><td>251-0</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-251-0">list of files</a>]</td><td>test</td></tr>
-<tr><td>260-0</td><td class="right">1 KiB</td><td>2017-04-12 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-260-0">list of files</a>]</td><td>test</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>240-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2017-04-07 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-240-1">list of files</a>]</td><td>stable</td></tr>
+<tr><td>242-0</td><td>x86_64</td><td class="right">1 KiB</td><td>2017-04-08 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-242-0">list of files</a>]</td><td>stable</td></tr>
+<tr><td>243-0</td><td>x86_64</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-243-0">list of files</a>]</td><td>stable</td></tr>
+<tr><td>250-0</td><td>x86_64</td><td class="right">1 KiB</td><td>2017-04-10 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-250-0">list of files</a>]</td><td>stable</td></tr>
+<tr><td>251-0</td><td>x86_64</td><td class="right">1 KiB</td><td>2017-04-09 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-251-0">list of files</a>]</td><td>test</td></tr>
+<tr><td>260-0</td><td>x86_64</td><td class="right">1 KiB</td><td>2017-04-12 00:00</td><td>[<a href="../x86_64/staleversion/staleversion-260-0">list of files</a>]</td><td>test</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/test-c-src.html b/test/testdata/htdocs.expected/summary/test-c-src.html
index e53dfe1..098c371 100755
--- a/test/testdata/htdocs.expected/summary/test-c-src.html
+++ b/test/testdata/htdocs.expected/summary/test-c-src.html
@@ -18,14 +18,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0-1 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-c-src/test-c-1.0-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0-1</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-c-src/test-c-1.0-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/test-c.html b/test/testdata/htdocs.expected/summary/test-c.html
index 642cf13..1b5ffd9 100644
--- a/test/testdata/htdocs.expected/summary/test-c.html
+++ b/test/testdata/htdocs.expected/summary/test-c.html
@@ -20,14 +20,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-c/test-c-1.0-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0-1</td><td>noarch</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-c/test-c-1.0-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/test-d-src.html b/test/testdata/htdocs.expected/summary/test-d-src.html
index 81a7bdb..66f361d 100755
--- a/test/testdata/htdocs.expected/summary/test-d-src.html
+++ b/test/testdata/htdocs.expected/summary/test-d-src.html
@@ -18,14 +18,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0.42590-1 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-d-src/test-d-1.0.42590-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0.42590-1</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-d-src/test-d-1.0.42590-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/test-d.html b/test/testdata/htdocs.expected/summary/test-d.html
index 90ccc9e..29dedf5 100644
--- a/test/testdata/htdocs.expected/summary/test-d.html
+++ b/test/testdata/htdocs.expected/summary/test-d.html
@@ -19,14 +19,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0.42590-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-d/test-d-1.0.42590-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0.42590-1</td><td>noarch</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-d/test-d-1.0.42590-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/test-e-src.html b/test/testdata/htdocs.expected/summary/test-e-src.html
index 81e6a7f..798e28d 100755
--- a/test/testdata/htdocs.expected/summary/test-e-src.html
+++ b/test/testdata/htdocs.expected/summary/test-e-src.html
@@ -19,14 +19,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0-1 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-e-src/test-e-1.0-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0-1</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-e-src/test-e-1.0-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/test-e.html b/test/testdata/htdocs.expected/summary/test-e.html
index 4d742f8..63e16f2 100644
--- a/test/testdata/htdocs.expected/summary/test-e.html
+++ b/test/testdata/htdocs.expected/summary/test-e.html
@@ -19,14 +19,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>1.0-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-e/test-e-1.0-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>1.0-1</td><td>noarch</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/test-e/test-e-1.0-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/testpackage-src.html b/test/testdata/htdocs.expected/summary/testpackage-src.html
index 1ce0be6..1d8fd98 100755
--- a/test/testdata/htdocs.expected/summary/testpackage-src.html
+++ b/test/testdata/htdocs.expected/summary/testpackage-src.html
@@ -18,14 +18,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>0.1-1 (source)</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/testpackage-src/testpackage-0.1-1-src">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>0.1-1</td><td>src</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/testpackage-src/testpackage-0.1-1-src">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>
diff --git a/test/testdata/htdocs.expected/summary/testpackage.html b/test/testdata/htdocs.expected/summary/testpackage.html
index 896e12a..be934c8 100644
--- a/test/testdata/htdocs.expected/summary/testpackage.html
+++ b/test/testdata/htdocs.expected/summary/testpackage.html
@@ -18,14 +18,11 @@
 <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Blooey McFooey
 <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions.
 <a href="/problems.html#personal-email">Do not contact the maintainer(s) directly</a>.)</span></p></td></tr>
-</table>
-<ul>
-<li><span class="detail">x86_64</span></li>
+</table><br>
 <table class="pkgtable">
-<tr><th>Version</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
-<tr><td>0.1-1</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/testpackage/testpackage-0.1-1">list of files</a>]</td><td>stable</td></tr>
+<tr><th>Version</th><th>Arch</th><th>Package Size</th><th>Date</th><th>Files</th><th>Status</th></tr>
+<tr><td>0.1-1</td><td>x86_64</td><td class="right">1 KiB</td><td>2018-03-02 00:00</td><td>[<a href="../x86_64/testpackage/testpackage-0.1-1">list of files</a>]</td><td>stable</td></tr>
 </table><br>
-</ul>
 </div>
 </body>
 </html>



More information about the Cygwin-apps-cvs mailing list