index : checker | |
Archlinux32 consistency checker | gitolite user |
summaryrefslogtreecommitdiff |
-rwxr-xr-x | bin/check | 9 | ||||
-rwxr-xr-x | bin/genhtml | 15 | ||||
-rwxr-xr-x | bin/setup | 8 | ||||
-rwxr-xr-x | bin/update | 4 | ||||
-rw-r--r-- | conf/default.conf | 3 | ||||
-rw-r--r-- | html/static/archnav32.png | bin | 0 -> 5508 bytes | |||
-rw-r--r-- | html/static/archweb.css | 876 | ||||
-rw-r--r-- | html/static/favicon.ico | bin | 0 -> 501 bytes | |||
-rw-r--r-- | templates/footer.m4 | 31 | ||||
-rw-r--r-- | templates/header.m4 | 26 | ||||
-rw-r--r-- | templates/summary.m4 | 17 | ||||
-rw-r--r-- | templates/table.m4 (renamed from templates/main.m4) | 9 |
@@ -21,15 +21,18 @@ nof_checked_out_packages=`find "${packages_dir}" -type f -name PKGBUILD | wc -l` echo "${nof_packages} packages in state repo" echo "${nof_checked_out_packages} packages are checked out" -exit 0 +> "${data_dir}/stats" +echo "packages_state\t${nof_packages}" >> "${data_dir}/stats" +echo "packages_repos\t${nof_checked_out_packages}" >> "${data_dir}/stats" # find duplicate entries in state repo +> "${data_dir}/duplicates" for duplicate in `find "${state_dir}"/{core,extra}-{any,x86_64} -type f | \ rev | cut -f 1 -d / | rev | sort | uniq -D | uniq`; do for packages in `ls ${state_dir}/{core,extra}-{any,x86_64}/$duplicate 2>/dev/null`; do for instance in `echo $packages | rev | cut -f 1,2 -d / | rev`; do - echo -n "${instance} " - cat "${state_dir}/$instance" + echo -n "${instance} " >> "${data_dir}/duplicates" + cat "${state_dir}/$instance" >> "${data_dir}/duplicates" done done done diff --git a/bin/genhtml b/bin/genhtml new file mode 100755 index 0000000..8593727 --- /dev/null +++ b/bin/genhtml @@ -0,0 +1,15 @@ +#!/bin/oksh + +BASE="${0%/*}/.." +. "${BASE}/conf/default.conf" + +if test ! -d "${html_dir}"; then + echo "no html output diretory found.. call setup first." + exit 1 +fi + +FILES="summary" + +for file in $FILES; do + m4 -I "${templates_dir}" -P < "${templates_dir}/${file}.m4" > "${html_dir}/${file}.html" +done @@ -22,6 +22,7 @@ else echo "package directory exists" fi + for repo in core extra; do for arch in any x86_64; do if test ! -d "${packages_dir}/${repo}-${arch}"; then @@ -33,4 +34,11 @@ for repo in core extra; do done done +if test ! -d "${data_dir}"; then + echo "creating directory for storing data.." + mkdir -p "${data_dir}" +else + echo "data directory exists" +fi + # TODO: AUR directory @@ -13,8 +13,12 @@ if test ! -d "${packages_dir}"; then exit 1 fi +echo "Updating main state git repo.." + git -C "${state_dir}" pull +echo "Checking statistics.." + find "${state_dir}"/{core,extra}-{any,x86_64} -type f > /tmp/update_packages.$$ nof_packages=`cat /tmp/update_packages.$$ | wc -l` diff --git a/conf/default.conf b/conf/default.conf index bd1be9b..c8dd762 100644 --- a/conf/default.conf +++ b/conf/default.conf @@ -10,3 +10,6 @@ fi script_dir="${base_dir}/scripts" state_dir="${base_dir}/state" packages_dir="${base_dir}/packages" +data_dir="${base_dir}/data" +templates_dir="${base_dir}/templates" +html_dir="${base_dir}/html" diff --git a/html/static/archnav32.png b/html/static/archnav32.png Binary files differnew file mode 100644 index 0000000..a7fd0d8 --- /dev/null +++ b/html/static/archnav32.png diff --git a/html/static/archweb.css b/html/static/archweb.css new file mode 100644 index 0000000..d717851 --- /dev/null +++ b/html/static/archweb.css @@ -0,0 +1,876 @@ +#archnavbar{ + height:40px!important; + padding:10px 15px!important; + background:#333!important; + border-bottom:5px #08c solid!important +} +#archnavbarlogo{ + float:left!important; + margin:0!important; + padding:0!important; + height:40px!important; + width:230px!important; + background:url(archnav32.png) no-repeat!important +} +#archnavbarlogo h1{ + margin:0!important; + padding:0!important; + text-indent:-9999px!important +} +#archnavbarlogo a{ + display:block!important; + height:40px!important; + width:230px!important +} +#archnavbarlist{ + display:inline!important; + float:right!important; + list-style:none!important; + margin:0!important; + padding:0!important +} +#archnavbarlist li{ + float:left!important; + font-size:14px!important; + font-family:sans-serif!important; + line-height:45px!important; + padding-right:15px!important; + padding-left:15px!important +} +#archnavbarlist li a{ + color:#999; + font-weight:bold!important; + text-decoration:none!important +} +#archnavbarlist li a:hover{ + color:white!important; + text-decoration:underline!important +} +*{ + margin:0; + padding:0; + line-height:1.4 +} +body{ + min-width:650px; + background:#f6f9fc; + color:#222; + font:normal 100% sans-serif; + text-align:center +} +p{ + margin:.33em 0 1em +} +ol, ul{ + margin-bottom:1em; + padding-left:2em +} +ul{ + list-style:square +} +code{ + font:1.2em monospace; + background:#ffd; + padding:.15em .25em +} +pre{ + font:1.2em monospace; + border:1px solid #bdb; + background:#dfd; + padding:.5em; + margin:1em +} +pre code{ + display:block; + background:none; + overflow:auto +} +blockquote{ + margin:1.5em 2em +} +input{ + vertical-align:middle +} +select[multiple]{ + padding:1px 0 +} +select[multiple] option{ + padding:0 .5em 0 .3em +} +input[type=submit]{ + padding:0 .6em +} +.clear{ + clear:both +} +.hide{ + display:none +} +hr{ + border:none; + border-top:1px solid #888 +} +img{ + border:0 +} +#content{ + font-size:.812em +} +a{ + text-decoration:none +} +a:link, th a:visited{ + color:#07b +} + a:visited{ + color:#666 +} + a:hover{ + text-decoration:underline; + color:#666 +} + a:active{ + color:#e90 +} + a.headerlink{ + visibility:hidden; + padding-left:.5em +} + h3:hover>a.headerlink{ + visibility:visible +} + h2{ + font-size:1.5em; + margin-bottom:.5em; + border-bottom:1px solid #888 +} + h3{ + font-size:1.25em; + margin-top:.5em +} + h4{ + font-size:1.15em; + margin-top:1em +} + h5{ + font-size:1em; + margin-top:1em +} + #content{ + width:95%; + margin:0 auto; + text-align:left +} + #content-left-wrapper{ + float:left; + width:100% +} + #content-left{ + margin:0 340px 0 0 +} + #content-right{ + float:left; + width:300px; + margin-left:-300px +} + div.box{ + margin-bottom:1.5em; + padding:.65em; + background:#ecf2f5; + border:1px solid #bcd +} + #footer{ + clear:both; + margin:2em 0 1em +} + #footer p{ + margin:0; + text-align:center; + font-size:.85em +} + div.center, table.center, img.center{ + width:auto; + margin-left:auto; + margin-right:auto +} + p.center, td.center, th.center{ + text-align:center +} + table{ + width:100%; + border-collapse:collapse +} + table .wrap{ + white-space:normal +} + th, td{ + white-space:nowrap; + text-align:left +} + th{ + vertical-align:middle; + font-weight:bold +} + td{ + vertical-align:top +} + table.pretty1{ + width:auto; + margin-top:.25em; + margin-bottom:.5em; + border-collapse:collapse; + border:1px solid #bcd +} + .pretty1 th{ + padding:.35em; + background:#e4eeff; + border:1px solid #bcd +} + .pretty1 td{ + padding:.35em; + border:1px dotted #bcd +} + table.pretty2{ + width:auto; + margin-top:.25em; + margin-bottom:.5em; + border-collapse:collapse; + border:1px solid #bbb +} + .pretty2 th{ + padding:.35em; + background:#eee; + border:1px solid #bbb +} + .pretty2 td{ + padding:.35em; + border:1px dotted #bbb +} + table.compact{ + width:auto +} + .compact td{ + padding:.25em 0 .25em 1.5em +} + dl{ + clear:both +} + dl dt, dl dd{ + margin-bottom:4px; + padding:8px 0 4px; + font-weight:bold; + border-top:1px dotted #bbb +} + dl dt{ + color:#333; + float:left; + padding-right:15px +} + form p{ + margin:.5em 0 +} + fieldset{ + border:0 +} + label{ + width:12em; + vertical-align:top; + display:inline-block; + font-weight:bold +} + input[type=text], input[type=password], textarea{ + padding:.10em +} + form.general-form label, form.general-form .form-help{ + width:10em; + vertical-align:top; + display:inline-block +} + form.general-form input[type=text], form.general-form textarea{ + width:45% +} + #archdev-navbar{ + margin:1.5em 0 +} + #archdev-navbar ul{ + list-style:none; + margin:-0.5em 0; + padding:0 +} + #archdev-navbar li{ + display:inline; + margin:0; + padding:0; + font-size:.9em +} + #archdev-navbar li a{ + padding:0 .5em; + color:#07b +} + #sys-message{ + width:35em; + text-align:center; + margin:1em auto; + padding:.5em; + background:#fff; + border:1px solid #f00 +} + #sys-message p{ + margin:0 +} + ul.errorlist{ + color:red +} + form ul.errorlist{ + margin:.5em 0 +} + table th.tablesorter-header{ + padding-right:20px; + background-image:url(data:image/gif; + base64, R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); + background-repeat:no-repeat; + background-position:center right; + cursor:pointer +} + table thead th.tablesorter-headerAsc{ + background-color:#e4eeff; + background-image:url(data:image/gif; + base64, R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7) +} + table thead th.tablesorter-headerDesc{ + background-color:#e4eeff; + background-image:url(data:image/gif; + base64, R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7) +} + table thead th.sorter-false{ + background-image:none; + cursor:default +} + #intro p.readmore{ + margin:-0.5em 0 0 0; + font-size:.9em; + text-align:right +} + #news{ + margin-top:1.5em +} + #news h3{ + float:left; + padding-bottom:.5em +} + #news div{ + margin-bottom:1em +} + #news div p{ + margin-bottom:.5em +} + #news .more{ + font-weight:normal +} + #news .rss-icon{ + float:right; + margin-top:1em +} + #news h4{ + clear:both; + font-size:1em; + margin-top:1.5em; + border-bottom:1px dotted #bbb +} + #news .timestamp{ + float:right; + font-size:.85em; + margin:-1.8em .5em 0 0 +} + #news h3 a{ + display:block; + background:#1794D1; + font-size:15px; + padding:2px 10px; + color:white +} + #news a:active{ + color:white +} + h3 span.arrow{ + display:block; + width:0; + height:0; + border-left:6px solid transparent; + border-right:6px solid transparent; + border-top:6px solid #1794D1; + margin:0 auto; + font-size:0; + line-height:0 +} + #pkgsearch{ + padding:1em .75em; + background:#3ad; + color:#fff; + border:1px solid #08b +} + #pkgsearch label{ + width:auto; + padding:.1em 0 +} + #pkgsearch input{ + width:10em; + float:right; + font-size:1em; + color:#000; + background:#fff; + border:1px solid #09c +} + .pkgsearch-typeahead{ + position:absolute; + top:100%; + left:0; + z-index:1000; + display:none; + float:left; + padding:.15em .1em; + margin:0; + min-width:10em; + font-size:.812em; + text-align:left; + list-style:none; + background-color:#f6f9fc; + border:1px solid #09c +} + .pkgsearch-typeahead li a{ + color:#000 +} + .pkgsearch-typeahead li.active a{ + color:#07b +} + #pkg-updates h3{ + margin:0 0 .3em +} + #pkg-updates .more{ + font-weight:normal +} + #pkg-updates .rss-icon{ + float:right; + margin:-2em 0 0 0 +} + #pkg-updates table{ + margin:0 +} + #pkg-updates td.pkg-name{ + white-space:normal +} + #pkg-updates td.pkg-arch{ + text-align:right +} + #pkg-updates span.testing{ + font-style:italic +} + #pkg-updates span.staging{ + font-style:italic; + color:#ff8040 +} + #nav-sidebar ul{ + list-style:none; + margin:.5em 0 .5em 1em; + padding:0 +} + #arch-sponsors img{ + padding:.3em 0 +} + div.widget{ + margin-bottom:1.5em +} + #konami{ + position:fixed; + top:0; + left:0; + width:100%; + height:100%; + text-align:center; + opacity:.6 +} + #rss-feeds .rss{ + padding-right:20px; + background:url(rss.c5ebdc5318d6.png) top right no-repeat +} + #artwork img.inverted{ + background:#333; + padding:0 +} + #artwork div.imagelist img{ + display:inline; + margin:.75em +} + .news-nav{ + float:right; + margin-top:-2.2em +} + .news-nav .prev, .news-nav .next{ + margin:0 1em +} + div.news-article .article-info{ + margin:0; + color:#999 +} + #newsform{ + width:60em +} + #newsform input[type=text], #newsform textarea{ + width:75% +} + .todolist-nav{ + float:right; + margin-top:-2.2em +} + .todolist-nav .prev, .todolist-nav .next{ + margin:0 1em +} + #donor-list ul{ + width:100% +} + #donor-list li{ + float:left; + width:25%; + min-width:20em +} + #arch-downloads h3{ + border-bottom:1px dotted #bbb +} + table.results{ + font-size:.846em; + border-top:1px dotted #999; + border-bottom:1px dotted #999 +} + .results th{ + padding:.5em 1em .25em .25em; + border-bottom:1px solid #999; + white-space:nowrap; + background-color:#fff +} + .results td{ + padding:.3em 1em .3em 3px +} + .results tr.odd{ + background:#fff +} + .results tr.even{ + background:#e4eeff +} + .results .flagged{ + color:red +} + .results tr.empty td{ + text-align:center +} + #pkglist-about{ + margin-top:1.5em +} + .pkglist-stats{ + font-size:.85em +} + #pkglist-results .pkglist-nav{ + float:right; + margin-top:-2.2em +} + .pkglist-nav .prev{ + margin-right:1em +} + .pkglist-nav .next{ + margin-right:1em +} + .filter-criteria{ + margin-bottom:1em +} + .filter-criteria h3{ + font-size:1em; + margin-top:0 +} + .filter-criteria div{ + float:left; + margin-right:1.65em; + font-size:.85em +} + .filter-criteria legend{ + display:none +} + .filter-criteria label{ + width:auto; + display:block; + font-weight:normal +} + #pkgdetails #detailslinks{ + float:right +} + #pkgdetails #detailslinks h4{ + margin-top:0; + margin-bottom:.25em +} + #pkgdetails #detailslinks ul{ + list-style:none; + padding:0; + margin-bottom:0; + font-size:.846em +} + #pkgdetails #detailslinks>div{ + padding:.5em; + margin-bottom:1em; + background:#eee; + border:1px solid #bbb +} + #pkgdetails #actionlist .flagged{ + color:red; + font-size:.9em; + font-style:italic +} + #pkgdetails #pkginfo{ + width:auto +} + #pkgdetails #pkginfo td{ + padding:.25em 0 .25em 1.5em +} + #pkgdetails #pkginfo .userdata{ + font-size:.85em; + padding:.5em +} + #flag-pkg-form label{ + width:10em +} + #flag-pkg-form textarea, #flag-pkg-form input[type=text]{ + width:45% +} + #pkgdetails #metadata{ + clear:both +} + #pkgdetails #metadata h3{ + background:#555; + color:#fff; + font-size:1em; + margin-bottom:.5em; + padding:.2em .35em +} + #pkgdetails #metadata ul{ + list-style:none; + margin:0; + padding:0 +} + #pkgdetails #metadata li{ + padding-left:.5em +} + #pkgdetails #metadata p{ + padding-left:.5em +} + #pkgdetails #metadata .message{ + font-style:italic +} + #pkgdetails #metadata br{ + clear:both +} + #pkgdetails #pkgdeps{ + float:left; + width:48%; + margin-right:2% +} + #pkgdetails #metadata .virtual-dep, #pkgdetails #metadata .testing-dep, #pkgdetails #metadata .staging-dep, #pkgdetails #metadata .opt-dep, #pkgdetails #metadata .make-dep, #pkgdetails #metadata .link-dep, #pkgdetails #metadata .check-dep, #pkgdetails #metadata .dep-desc{ + font-style:italic +} + #pkgdetails #pkgreqs{ + float:left; + width:50% +} + #pkgdetails #pkgfiles{ + clear:left; + padding-top:1em +} + #pkgfilelist li.d{ + color:#666 +} + #pkgfilelist li.f{ +} + table td.country{ + white-space:normal +} + #list-generator div ul{ + list-style:none; + display:inline; + padding-left:0 +} + #list-generator div ul li{ + display:inline +} + .visualize-mirror .axis path, .visualize-mirror .axis line{ + fill:none; + stroke:#000; + stroke-width:3px; + shape-rendering:crispEdges +} + .visualize-mirror .url-dot{ + stroke:#000 +} + .visualize-mirror .url-line{ + fill:none; + stroke-width:1.5px +} + #arch-bio-toc{ + width:75%; + margin:0 auto; + text-align:center +} + #arch-bio-toc a{ + white-space:nowrap +} + .arch-bio-entry{ + width:75%; + min-width:640px; + margin:0 auto +} + .arch-bio-entry td.pic{ + vertical-align:top; + padding-right:15px; + padding-top:2.25em +} + .arch-bio-entry td.pic img{ + padding:4px; + border:1px solid #ccc +} + .arch-bio-entry td h3{ + border-bottom:1px dotted #ccc; + margin-bottom:.5em +} + .arch-bio-entry table.bio{ + margin-bottom:2em +} + .arch-bio-entry table.bio th{ + color:#666; + font-weight:normal; + text-align:right; + padding-right:.5em; + vertical-align:top; + white-space:nowrap +} + .arch-bio-entry table.bio td{ + width:100%; + padding-bottom:.25em; + white-space:normal +} + #dev-login{ + width:auto +} + #dash-pkg-notify{ + text-align:right; + padding:1em 0 0; + margin-top:1em; + font-size:.85em; + border-top:1px dotted #bbb +} + #dash-pkg-notify label{ + width:auto; + font-weight:normal +} + #dash-pkg-notify input{ + vertical-align:middle; + margin:0 .25em +} + #dash-pkg-notify input[type=submit]{ + margin-top:-0.25em +} + #dash-pkg-notify p{ + margin:0 +} + table.dash-stats .key{ + width:50% +} + ul.admin-actions{ + float:right; + list-style:none; + margin-top:-2.5em +} + ul.admin-actions li{ + display:inline; + padding-left:1.5em +} + .todo-table .complete, .signoff-yes, #key-status .signed-yes, #releng-result .success-yes, #release-list .available-yes{ + color:green +} + .todo-table .incomplete, .signoff-no, #key-status .signed-no, #releng-result .success-no, #release-list .available-no{ + color:red +} + .todo-table .inprogress, .signoff-bad{ + color:darkorange +} + .todo-info{ + color:#999; + border-bottom:1px dotted #bbb +} + .todo-description{ + margin-top:1em; + padding-left:2em; + max-width:900px +} + .todo-pkgbases{ + border-top:1px dotted #bbb +} + .todo-list h4{ + margin-top:0; + margin-bottom:.4em +} + #dev-signoffs tr:hover{ + background:#ffd +} + ul.signoff-list{ + list-style:none; + margin:0; + padding:0 +} + .signoff-yes{ + font-weight:bold +} + .signoff-disabled{ + color:gray +} + #releng-feedback label{ + width:auto; + display:inline; + font-weight:normal +} + #releng-feedback ul{ + padding-left:1em +} + #releng-feedback li{ + list-style:none +} + #releng-feedback ul+.helptext{ + position:relative; + top:-0.9em +} + #archnavbar.anb-home ul li#anb-home a, + #archnavbar.anb-stats ul li#anb-stats a, + #archnavbar.anb-packages ul li#anb-packages a, + #archnavbar.anb-download ul li#anb-download a{ + color:white!important +} + .visualize-buttons{ + margin:.5em .33em +} + .visualize-buttons button.active{ + depressed:true +} + .visualize-chart{ + position:relative; + height:500px; + margin:.33em +} + #visualize-archrepo .treemap-cell{ + border:solid 1px white; + overflow:hidden; + position:absolute +} + #visualize-archrepo .treemap-cell span{ + padding:3px; + font-size:.85em; + line-height:1em +} + #visualize-keys svg{ + width:100%; + height:100% +} + diff --git a/html/static/favicon.ico b/html/static/favicon.ico Binary files differnew file mode 100644 index 0000000..8ef6f13 --- /dev/null +++ b/html/static/favicon.ico diff --git a/templates/footer.m4 b/templates/footer.m4 new file mode 100644 index 0000000..b026089 --- /dev/null +++ b/templates/footer.m4 @@ -0,0 +1,31 @@ +m4_define(`_FOOTER', +` + <div id="footer"> + <p> + Copyright © 2002-2019 <a href="mailto:jvinet@zeroflux.org" title="Contact Judd Vinet">Judd Vinet</a> and <a href="mailto:aaron@archlinux.org" title="Contact Aaron Griffin">Aaron Griffin</a>. + Copyright © 2018-2022 <a href="mailto:arch@eckner.net" title="Contact Erich Eckner">Erich Eckner</a>. + Copyright © 2024 <a href="mailto:mail@andreasbaumann.cc" title="Contact Andreas Baumann">Andreas Baumann</a>. + </p> + <p> + The Arch Linux® name and logo are recognized <a href="https://wiki.archlinux.org/index.php/DeveloperWiki:TrademarkPolicy" title="Arch Linux Trademark Policy">trademarks</a>. Some rights reserved. + </p> + <p> + The registered trademark Linux®; is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide basis. + </p> + </div> + </div> + <script type="application/ld+json"> + { + "@context": "http://schema.org", + "@type": "WebSite", + "url": "/", + "potentialAction": { + "@type": "SearchAction", + "target": "/?q={search_term}", + "query-input": "required name=search_term" + } + } + </script> + </body> +</html> +') diff --git a/templates/header.m4 b/templates/header.m4 new file mode 100644 index 0000000..45335e1 --- /dev/null +++ b/templates/header.m4 @@ -0,0 +1,26 @@ +m4_define(`_HEADER', +`<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Arch Linux 32 - $1</title> + <link rel="stylesheet" type="text/css" href="/static/archweb.css" media="screen, projection" /> + <link rel="icon" type="image/x-icon" href="/static/favicon.ico" /> + <link rel="shortcut icon" type="image/x-icon" href="/static/favicon.ico" /> + </head> + <body class=""> + <div id="archnavbar" class="$2"> + <div id="archnavbarlogo"> + <h1><a href="/" title="Return to the main page">Arch Linux</a></h1> + </div> + <div id="archnavbarmenu"> + <ul id="archnavbarlist"> + <li id="anb-home"><a href="https://www.archlinux32.org/">Home</a></li> + <li id="anb-stats"><a href="http://euronuc.lan/summary.html">Statistics</a></li> + <li id="anb-packages"><a href="https://www.archlinux32.org/packages">Packages</a></li> + <li id="anb-arch-linux-official"><a href="https://www.archlinux.org/">Arch Linux Official</a></li> + </ul> + </div> + </div> + <div id="content"> +') diff --git a/templates/summary.m4 b/templates/summary.m4 new file mode 100644 index 0000000..23c3b1c --- /dev/null +++ b/templates/summary.m4 @@ -0,0 +1,17 @@ +m4_include(header.m4) +m4_include(footer.m4) + +_HEADER(`Archlinux32 Consistency Checker',`anb-stats') + +<h2>Statistics</h2> +Generated on m4_esyscmd(date) +<pre> +m4_esyscmd(cat ../data/stats) +</pre> +<h2>Duplicate States in State Repo</h2> +<pre> +m4_esyscmd(cat ../data/duplicates) +</pre> + +_FOOTER() + diff --git a/templates/main.m4 b/templates/table.m4 index 604a8da..4913ad7 100644 --- a/templates/main.m4 +++ b/templates/table.m4 @@ -6,7 +6,6 @@ <link rel="stylesheet" type="text/css" href="/static/archweb.css" media="screen, projection" /> <link rel="icon" type="image/x-icon" href="/static/favicon.ico" /> <link rel="shortcut icon" type="image/x-icon" href="/static/favicon.ico" /> - <link rel="stylesheet" type="text/css" href="/static/flags/fam.47411010d402.css" media="screen, projection" /> </head> <body class=""> <div id="archnavbar" class="anb-packages"> @@ -632,14 +631,14 @@ </div> <div id="footer"> <p> - Copyright © 2002-2019 <a href="mailto:jvinet@zeroflux.org" title="Contact Judd Vinet">Judd Vinet</a> and <a href="mailto:aaron@archlinux.org" title="Contact Aaron Griffin">Aaron Griffin</a>. - Copyright © 2018-2022 <a href="mailto:arch@eckner.net" title="Contact Erich Eckner">Erich Eckner</a>. + Copyright © 2002-2019 <a href="mailto:jvinet@zeroflux.org" title="Contact Judd Vinet">Judd Vinet</a> and <a href="mailto:aaron@archlinux.org" title="Contact Aaron Griffin">Aaron Griffin</a>. + Copyright © 2018-2024 <a href="mailto:arch@eckner.net" title="Contact Erich Eckner">Erich Eckner</a>. </p> <p> - The Arch Linux name and logo are recognized <a href="https://wiki.archlinux.org/index.php/DeveloperWiki:TrademarkPolicy" title="Arch Linux Trademark Policy">trademarks</a>. Some rights reserved. + The Arch Linux® name and logo are recognized <a href="https://wiki.archlinux.org/index.php/DeveloperWiki:TrademarkPolicy" title="Arch Linux Trademark Policy">trademarks</a>. Some rights reserved. </p> <p> - The registered trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide basis. + The registered trademark Linux&tm; is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide basis. </p> </div> </div> |