product list: convert to a proper table

[?]
May 12, 2016, 6:43 PM
RHMUFX4RC7WJP7I6KQO776VQB6Y7PPPZ35ZFCF6O5GZKBD2BKRAQC

Dependencies

  • [2] W5NB3GQL Restore the links to the contents pages
  • [3] TPSX6J6W Show links on products of type "doc"
  • [4] T5BIOVJE Add support for tracking custom metrics
  • [5] KBIHF2RL product-list: Handle channel along with "file".
  • [6] E3X3C5LK Replace ugly link with nice small buttons
  • [7] YVVIXELL Make channels a product type instead of subtype.
  • [8] NUIKDEHL * A quick hack to list the contents of various types of files (RPM,
  • [9] ADP54EI4 Fix the spacing around some <h3> headers
  • [10] LL36GPHA added help, removed nix closure from 'failed build with output' productlist
  • [11] K22TMPH5 Make the info tables less compressed
  • [12] 3PNG7NIB Remove trailing whitespace
  • [13] JREZM2S2 Add channel as a product type.
  • [14] GDCB4LBP Always show the links related to the build product.
  • [15] 4RHAHTL6
  • [16] SMM4HQTP * Put actions related to builds under /build (e.g. /log/<buildid>
  • [17] A4ZMBK7D * Icon for ISOs.
  • [18] VVDQKVNL
  • [19] MAOFG2TD * Allow omitting the product number if there is only one product in a
  • [20] 74VYRQ6W Add an icon for binary distributions
  • [21] OW6XV2YS * Allow a view result to be saved as a release.
  • [22] GPRYAAFP hydra: change icon for positive failures
  • [23] 3ZAJ2ZRP Use popovers for the product list help/details
  • [24] GS4SFHCP templates: Use uri_for to reference static paths.
  • [25] HQ54SEMS Add more spacing between products
  • [26] Y35C6GHH * One-click installs.
  • [27] JFZNAYJX * Showing releases.
  • [28] XJFHFZCA * Provide some redirects to build products by type so that we can for
  • [29] 6KIJX24R Get rid of unnecessary [%- and -%] tags
  • [30] OEPUOUNB Using twitter bootstrap for more consistent looks for Hydra
  • [31] RRCGVQLW Revert sorting build products
  • [32] MFHM3RLC * Add an icon for PDFs.
  • [33] ELABMHJI * hydra: layout changes
  • [34] M3WSK4CB
  • [35] PMNWRTGJ Add multiple output support
  • [*] J5UVLXOK * Start of a basic Catalyst web interface.

Change contents

  • replacement in src/root/product-list.tt at line 22
    [6.3131][6.409:439]()
    <table class="productList">
    [6.3131]
    [6.3158]
    <table class="table table-striped">
    <tr>
    <th>Icon</th>
    <th>Type</th>
    <th>Link</th>
    <th>Actions</th>
    </tr>
  • edit in src/root/product-list.tt at line 46
    [6.99][6.99:137]()
    <a href="[% contents %]">
  • replacement in src/root/product-list.tt at line 47
    [6.2359][6.206:301](),[6.206][6.206:301](),[6.301][6.463:713]()
    Failed build produced output. Click here to inspect the output.
    </a>
    [% WRAPPER makePopover title="Help" classes="btn-mini" %]
    <p>If you have Nix installed on your machine, this failed build output and
    all its dependencies can be unpacked into your local Nix store by doing:</p>
    [6.2359]
    [6.31266]
    </td>
    <td>
    Error
    </td>
    <td>
    <a href="[% contents %]">
    Failed build produced output. Click here to inspect the output.
    </a>
    </td>
    <td>
    [% WRAPPER makePopover title="Help" classes="btn-mini" %]
    <p>If you have Nix installed on your machine, this failed build output and
    all its dependencies can be unpacked into your local Nix store by doing:</p>
  • replacement in src/root/product-list.tt at line 61
    [6.31267][6.714:820]()
    <pre><span class="shell-prompt">$ </span>curl [% uri %] | gunzip | nix-store --import</pre>
    [6.31267]
    [6.31268]
    <pre><span class="shell-prompt">$ </span>curl [% uri %] | gunzip | nix-store --import</pre>
  • replacement in src/root/product-list.tt at line 63
    [6.31269][6.821:940]()
    <p>The build output can then be found in the path <tt>[% product.path %]</tt>.</p>
    [% END %]
    [6.31269]
    [6.301]
    <p>The build output can then be found in the path <tt>[% product.path %]</tt>.</p>
    [% END %]
  • edit in src/root/product-list.tt at line 71
    [6.411][6.411:551]()
    [% uri = c.uri_for('/build' build.id 'nix' 'pkg' "${build.nixname}-${build.system}.nixpkg") %]
    <a href="[% uri %]">
  • replacement in src/root/product-list.tt at line 72
    [6.2449][6.621:714](),[6.621][6.621:714](),[6.714][6.941:1011](),[6.1011][6.873:1332](),[6.8030][6.873:1332](),[6.873][6.873:1332]()
    One-click install of Nix package <tt>[% build.nixname %]</tt>
    </a>
    [% WRAPPER makePopover title="Help" classes="btn-mini" %]
    <p>If you have Nix installed on your machine, you can
    install this package and all its dependencies automatically
    by clicking on the link above. This requires that you have
    the <tt>application/nix-package</tt> MIME type associated
    with the <tt>nix-install-package</tt> program in your web
    browser. Alternatively, you can install it from the
    command-line:</p>
    [6.2449]
    [6.31272]
    </td>
    <td>
    One-Click install
    </td>
    <td>
    [% uri = c.uri_for('/build' build.id 'nix' 'pkg' "${build.nixname}-${build.system}.nixpkg") %]
    <a href="[% uri %]">
    <tt>[% build.nixname %]</tt>
    </a>
    </td>
    <td>
    [% WRAPPER makePopover title="Help" classes="btn-mini" %]
    <p>If you have Nix installed on your machine, you can
    install this package and all its dependencies automatically
    by clicking on the link above. This requires that you have
    the <tt>application/nix-package</tt> MIME type associated
    with the <tt>nix-install-package</tt> program in your web
    browser. Alternatively, you can install it from the
    command-line:</p>
  • replacement in src/root/product-list.tt at line 92
    [6.31273][6.1012:1127]()
    <pre><span class="shell-prompt">$ </span>nix-install-package --non-interactive --url [% uri %]</pre>
    [6.31273]
    [6.31274]
    <pre><span class="shell-prompt">$ </span>nix-install-package --non-interactive --url [% uri %]</pre>
  • replacement in src/root/product-list.tt at line 94
    [6.31275][6.1443:1590](),[6.1443][6.1443:1590](),[6.1590][6.1128:1223](),[6.1223][2.0:71]()
    <p>If you get an error message “Permission denied”, you
    should make sure that you have sufficient access rights to
    the Nix store, e.g., run the command as <tt>root</tt>.</p>
    [% END %]
    <a class="btn btn-mini" href="[% contents %]">Contents</a>
    [6.31275]
    [6.1717]
    <p>If you get an error message “Permission denied”, you
    should make sure that you have sufficient access rights to
    the Nix store, e.g., run the command as <tt>root</tt>.</p>
    [% END %]
    <a class="btn btn-mini" href="[% contents %]">Contents</a>
  • edit in src/root/product-list.tt at line 103
    [6.740][6.31280:31281](),[6.31281][6.15527:15635](),[6.15635][6.804:883](),[6.804][6.804:883](),[6.883][6.31282:31283](),[6.31283][6.896:929](),[6.896][6.896:929]()
    [% filename = build.nixname _ (product.subtype ? "-" _ product.subtype : "") _ ".closure.gz" %]
    [% uri = c.uri_for('/build' build.id 'nix' 'closure' filename ) %]
    <a href="[% uri %]">
  • replacement in src/root/product-list.tt at line 104
    [6.2539][6.999:1078](),[6.999][6.999:1078](),[6.1078][6.31284:31285](),[6.31285][6.1224:1294](),[6.1294][6.1211:1391](),[6.8082][6.1211:1391](),[6.1211][6.1211:1391]()
    Nix closure of path <tt>[% product.path %]</tt>
    </a>
    [% WRAPPER makePopover title="Help" classes="btn-mini" %]
    <p>If you have Nix installed on your machine, this build and
    all its dependencies can be unpacked into your local Nix
    store by doing:</p>
    [6.2539]
    [6.31286]
    </td>
    <td>
    Nix closure
    </td>
    <td>
    [% filename = build.nixname _ (product.subtype ? "-" _ product.subtype : "") _ ".closure.gz" %]
    [% uri = c.uri_for('/build' build.id 'nix' 'closure' filename ) %]
  • replacement in src/root/product-list.tt at line 112
    [6.31287][6.1295:1404]()
    <pre><span class="shell-prompt">$ </span>gunzip &lt; [% filename %] | nix-store --import</pre>
    [6.31287]
    [6.31288]
    <a href="[% uri %]">
    <tt>[% product.path %]</tt>
    </a>
    </td>
    <td>
    [% WRAPPER makePopover title="Help" classes="btn-mini" %]
    <p>If you have Nix installed on your machine, this build and
    all its dependencies can be unpacked into your local Nix
    store by doing:</p>
  • replacement in src/root/product-list.tt at line 122
    [6.31289][6.1476:1539](),[6.1476][6.1476:1539]()
    <p>or to download and unpack in one command:</p>
    [6.31289]
    [6.31290]
    <pre><span class="shell-prompt">$ </span>gunzip &lt; [% filename %] | nix-store --import</pre>
  • replacement in src/root/product-list.tt at line 124
    [6.31291][6.1405:1511]()
    <pre><span class="shell-prompt">$ </span>curl [% uri %] | gunzip | nix-store --import</pre>
    [6.31291]
    [6.31292]
    <p>or to download and unpack in one command:</p>
  • replacement in src/root/product-list.tt at line 126
    [6.31293][6.1621:1762](),[6.1621][6.1621:1762]()
    <p>The package can then be found in the path <tt>[%
    product.path %]</tt>. You’ll probably also want to do</p>
    [6.31293]
    [6.31294]
    <pre><span class="shell-prompt">$ </span>curl [% uri %] | gunzip | nix-store --import</pre>
  • replacement in src/root/product-list.tt at line 128
    [6.31295][6.1512:1603]()
    <pre><span class="shell-prompt">$ </span>nix-env -i [% product.path %]</pre>
    [6.31295]
    [6.31296]
    <p>The package can then be found in the path <tt>[%
    product.path %]</tt>. You’ll probably also want to do</p>
  • replacement in src/root/product-list.tt at line 131
    [6.31297][6.1829:1912](),[6.1829][6.1829:1912]()
    <p>to actually install the package in your Nix user environment.</p>
    [6.31297]
    [6.31298]
    <pre><span class="shell-prompt">$ </span>nix-env -i [% product.path %]</pre>
  • replacement in src/root/product-list.tt at line 133
    [6.31299][6.1917:2169](),[6.1917][6.1917:2169](),[6.2169][6.1604:1626]()
    <p>If you get the error message “imported
    archive lacks a signature”, you should make sure that you have
    sufficient access rights to the Nix store, e.g., run the
    command as <tt>root</tt>.</p>
    [% END %]
    [6.31299]
    [6.31300]
    <p>to actually install the package in your Nix user environment.</p>
  • edit in src/root/product-list.tt at line 135
    [6.31301]
    [6.2193]
    <p>If you get the error message “imported
    archive lacks a signature”, you should make sure that you have
    sufficient access rights to the Nix store, e.g., run the
    command as <tt>root</tt>.</p>
    [% END %]
  • replacement in src/root/product-list.tt at line 147
    [6.607][6.607:620](),[6.620][6.2427:2456](),[6.2529][6.2427:2456](),[6.2456][6.4497:4571](),[6.4497][6.4497:4571](),[6.4571][6.2540:2677](),[6.2677][6.4689:4716](),[6.4689][6.4689:4716](),[6.4716][6.2678:2796](),[6.2796][6.0:28](),[6.4815][6.0:28](),[6.28][6.2797:2929](),[6.141][6.4815:4842](),[6.2929][6.4815:4842](),[6.4815][6.4815:4842](),[6.4842][6.2930:3054](),[6.3054][6.0:27](),[6.4947][6.0:27](),[6.27][6.3055:3183](),[6.3183][6.0:35](),[6.136][6.0:35](),[6.35][6.3184:3334](),[6.136][6.4947:4976](),[6.165][6.4947:4976](),[6.166][6.4947:4976](),[6.3334][6.4947:4976](),[6.4947][6.4947:4976](),[6.4976][5.38:85]()
    <td>
    <a href="[% uri %]">
    [% SWITCH product.subtype %]
    [% CASE "source-dist" %]
    <img src="[% c.uri_for("/static/images/source-dist.png") %]" alt="Source" /> Source distribution <tt>[% product.name %]</tt>
    [% CASE "rpm" %]
    <img src="[% c.uri_for("/static/images/rpm.png") %]" alt="RPM" /> RPM package <tt>[% product.name %]</tt>
    [% CASE "srpm" %]
    <img src="[% c.uri_for("/static/images/rpm.png") %]" alt="Source RPM" /> Source RPM package <tt>[% product.name %]</tt>
    [% CASE "deb" %]
    <img src="[% c.uri_for("/static/images/debian.png") %]" alt="RPM" /> Debian package <tt>[% product.name %]</tt>
    [% CASE "iso" %]
    <img src="[% c.uri_for("/static/images/iso.png") %]" alt="ISO" /> ISO-9660 CD/DVD image <tt>[% product.name %]</tt>
    [% CASE "binary-dist" %]
    <img src="[% c.uri_for("/static/images/binary-dist.png") %]" alt="Binary distribution" /> Binary distribution <tt>[% product.name %]</tt>
    [% CASE DEFAULT %]
    [% IF product.type == "channel" %]
    [6.607]
    [5.85]
    [% SWITCH product.subtype %]
    [% CASE "source-dist" %]
    <td>
    <img src="[% c.uri_for("/static/images/source-dist.png") %]" alt="Source" />
    </td>
    <td>Source distribution</td>
    [% CASE "rpm" %]
    <td>
    <img src="[% c.uri_for("/static/images/rpm.png") %]" alt="RPM" />
    </td>
    <td>RPM package</td>
    [% CASE "srpm" %]
    <td>
    <img src="[% c.uri_for("/static/images/rpm.png") %]" alt="Source RPM" />
    </td>
    <td>Source RPM package</td>
    [% CASE "deb" %]
    <td>
    <img src="[% c.uri_for("/static/images/debian.png") %]" alt="DEB" />
    </td>
    <td>Debian package</td>
    [% CASE "iso" %]
    <td>
    <img src="[% c.uri_for("/static/images/iso.png") %]" alt="ISO" />
    </td>
    <td>ISO-9660 CD/DVD image</td>
    [% CASE "binary-dist" %]
    <td>
    <img src="[% c.uri_for("/static/images/binary-dist.png") %]" alt="Binary distribution" />
    </td>
    <td>Binary distribution</td>
    [% CASE DEFAULT %]
    [% IF product.type == "channel" %]
    <td>
  • replacement in src/root/product-list.tt at line 182
    [5.173][5.173:242]()
    Channel expression tarball <tt>[% product.name %]</tt>
    [5.173]
    [5.242]
    </td>
    <td>
    Channel expression tarball
  • replacement in src/root/product-list.tt at line 186
    [5.331][5.331:462]()
    [% ELSE %]
    File <tt>[% product.name %]</tt> of type <tt>[% product.subtype %]</tt>
    [% END %]
    [5.331]
    [6.5060]
    </td>
    [% ELSE %]
    <td>File</td>
    <td>[% product.subtype %]</td>
  • edit in src/root/product-list.tt at line 191
    [6.5080][6.5080:5093](),[6.5093][6.1627:1733](),[6.1733][3.534:579](),[3.579][6.5536:5665](),[6.1355][6.5536:5665](),[6.5536][6.5536:5665](),[6.5665][6.32:200](),[6.200][6.5815:5911](),[6.5815][6.5815:5911]()
    </a>
    [% WRAPPER makePopover title="Details" classes="btn-mini" %]
    <table class="info-table">
    [% INCLUDE renderProductLinks %]
    <tr><th>File size:</th><td>[% product.filesize %] bytes ([% mibs(product.filesize / (1024 * 1024)) %] MiB)</td></tr>
    <tr><th>SHA-1 hash:</th><td><tt>[% product.sha1hash %]</tt></td></tr>
    <tr><th>SHA-256 hash:</th><td><tt>[% product.sha256hash %]</tt></td></tr>
    <tr><th>Full path:</th><td><tt>[% product.path %]</tt></td></tr>
    </table>
  • replacement in src/root/product-list.tt at line 192
    [6.1752][2.72:139]()
    <a class="btn btn-mini" href="[% contents %]">Contents</a>
    [6.1752]
    [6.630]
    <td>
    <a href="[% uri %]">
    <tt>[% product.name %]</tt>
    </a>
    </td>
    <td>
    [% WRAPPER makePopover title="Details" classes="btn-mini" %]
    <table class="info-table">
    [% INCLUDE renderProductLinks %]
    <tr><th>File size:</th><td>[% product.filesize %] bytes ([% mibs(product.filesize / (1024 * 1024)) %] MiB)</td></tr>
    <tr><th>SHA-1 hash:</th><td><tt>[% product.sha1hash %]</tt></td></tr>
    <tr><th>SHA-256 hash:</th><td><tt>[% product.sha256hash %]</tt></td></tr>
    <tr><th>Full path:</th><td><tt>[% product.path %]</tt></td></tr>
    </table>
    [% END %]
    <a class="btn btn-mini" href="[% contents %]">Contents</a>
  • edit in src/root/product-list.tt at line 215
    [6.697][6.2532:2561](),[6.2577][6.2532:2561]()
    <a href="[% uri %]">
  • edit in src/root/product-list.tt at line 216
    [6.3417][6.6105:6338](),[6.6105][6.6105:6338]()
    [% SWITCH product.subtype %]
    [% CASE "coverage" %]
    Code coverage analysis report
    [% CASE DEFAULT %]
    Report of type <tt>[% product.subtype %]</tt>
    [% END %]
    </a>
  • edit in src/root/product-list.tt at line 217
    [6.712]
    [6.712]
    [% SWITCH product.subtype %]
    [% CASE "coverage" %]
    <td>Code coverage</td>
    <td>
    <a href="[% uri %]">
    Analysis report
    </a>
    </td>
    [% CASE DEFAULT %]
    <td>Report</td>
    <td>
    <a href="[% uri %]">
    <tt>[% product.subtype %]</tt>
    </a>
    </td>
    [% END %]
    <td></td>
  • edit in src/root/product-list.tt at line 240
    [6.765][6.2562:2591](),[6.2618][6.2562:2591]()
    <a href="[% uri %]">
  • edit in src/root/product-list.tt at line 245
    [6.260]
    [6.6518]
    </td>
    <td>
    Documentation
    </td>
    <td>
    <a href="[% uri %]">
  • replacement in src/root/product-list.tt at line 259
    [6.6695][6.6695:6760]()
    Documentation of type <tt>[% product.subtype %]</tt>
    [6.6695]
    [6.6760]
    [% product.subtype %]
  • replacement in src/root/product-list.tt at line 262
    [6.6793][3.580:768]()
    [% WRAPPER makePopover title="Details" classes="btn-mini" %]
    <table class="info-table">
    [% INCLUDE renderProductLinks %]
    </table>
    [% END %]
    [6.6793]
    [6.766]
    </td>
    <td>
    [% WRAPPER makePopover title="Details" classes="btn-mini" %]
    <table class="info-table">
    [% INCLUDE renderProductLinks %]
    </table>
    [% END %]
  • replacement in src/root/product-list.tt at line 276
    [6.833][6.107:175]()
    Something of type <tt>[% product.type %]</tt> [% product %]
    [6.833]
    [6.834]
    <tt>[% product.type %]</tt>
    </td>
    <td>
    </td>
    <td>
    [% product %]
    </td>
    <td>
  • edit in src/root/static/css/hydra.css at line 27
    [6.1][6.1:81](),[6.81][4.9284:9287]()
    table.productList {
    border-collapse: separate;
    border-spacing: 0em 1em;
    }