index : checker | |
Archlinux32 consistency checker | gitolite user |
summaryrefslogtreecommitdiff |
author | Andreas Baumann <mail@andreasbaumann.cc> | 2024-09-12 07:53:18 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2024-09-12 07:53:18 +0200 |
commit | c6b8602075156e9997d0504fc861f11cd60ab613 (patch) | |
tree | 5ae82af4b74bf8f8d8feca4a9f57ef9010814655 |
-rwxr-xr-x | bin/check | 38 | ||||
-rwxr-xr-x | bin/setup | 36 | ||||
-rwxr-xr-x | bin/update | 46 | ||||
-rw-r--r-- | conf/default.conf | 12 | ||||
-rw-r--r-- | conf/local.conf | 0 | ||||
-rw-r--r-- | doc/LINKS | 4 | ||||
-rw-r--r-- | doc/TODOS | 10 | ||||
-rw-r--r-- | html/.gitkeep | 0 | ||||
-rw-r--r-- | templates/main.m4 | 659 |
diff --git a/bin/check b/bin/check new file mode 100755 index 0000000..43a047c --- /dev/null +++ b/bin/check @@ -0,0 +1,38 @@ +#!/bin/oksh + +BASE="${0%/*}/.." +. "${BASE}/conf/default.conf" + +if test ! -d "${state_dir}"; then + echo "no upstream git state repo of packages.. exiting.." + exit 1 +fi + +if test ! -d "${packages_dir}"; then + echo "no directory for uptream package descriptions.. exiting.." + exit 1 +fi + +find "${state_dir}"/{core,extra}-{any,x86_64} -type f > /tmp/update_packages.$$ +nof_packages=`cat /tmp/update_packages.$$ | wc -l` + +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 + +# find duplicate entries in state repo +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" + done + done +done + +# TODO: update all single package directories +# TODO: update all AUR package directories diff --git a/bin/setup b/bin/setup new file mode 100755 index 0000000..f1e252c --- /dev/null +++ b/bin/setup @@ -0,0 +1,36 @@ +#!/bin/oksh + +BASE="${0%/*}/.." +. "${BASE}/conf/default.conf" + +echo "base dir: ${base_dir}" +echo "script dir: ${script_dir}" +echo "state dir: ${state_dir}" +echo "packages dir: ${packages_dir}" + +if test ! -d "${state_dir}"; then + echo "no upstream git state repo of packages.. cloning.." + git clone https://gitlab.archlinux.org/archlinux/packaging/state.git "${state_dir}" +else + echo "upstream git state repo exists.." +fi + +if test ! -d "${packages_dir}"; then + echo "creating directory for uptream package description.." + mkdir -p "${packages_dir}" +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 + echo "package directory ${packages_dir}/${repo}-${arch} doesn't exist, creating it.." + mkdir "${packages_dir}/${repo}-${arch}" + else + echo "package directory ${packages_dir}/${repo}-${arch} exists" + fi + done +done + +# TODO: AUR directory diff --git a/bin/update b/bin/update new file mode 100755 index 0000000..31333dc --- /dev/null +++ b/bin/update @@ -0,0 +1,46 @@ +#!/bin/oksh + +BASE="${0%/*}/.." +. "${BASE}/conf/default.conf" + +if test ! -d "${state_dir}"; then + echo "no upstream git state repo of packages.. exiting.." + exit 1 +fi + +if test ! -d "${packages_dir}"; then + echo "no directory for uptream package descriptions.. exiting.." + exit 1 +fi + +git -C "${state_dir}" pull + +find "${state_dir}"/{core,extra}-{any,x86_64} -type f > /tmp/update_packages.$$ +nof_packages=`cat /tmp/update_packages.$$ | wc -l` + +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" + +sleep 10 + +for pkgfile in `cat /tmp/update_packages.$$`; do + repo=`echo "${pkgfile}" | rev | cut -f 2 -d / | rev` + OLDIFS="$IFS" + IFS=" " + while read pkgname pkgver tag revision; do + echo "${repo} ${pkgname}" + if test ! -d "${packages_dir}/${repo}/${pkgname}"; then + cd "${packages_dir}/${repo}" || exit 1 + pkgctl repo clone --protocol=https "${pkgname}" + sleep 10 + else + true +# git -C "${packages_dir}/${repo}/${pkgname}" pull + fi + done < $pkgfile + IFS="$OLDIFS" +done +# TODO: update all single package directories +# TODO: update all AUR package directories diff --git a/conf/default.conf b/conf/default.conf new file mode 100644 index 0000000..bd1be9b --- /dev/null +++ b/conf/default.conf @@ -0,0 +1,12 @@ +script_name=`readlink -f "$0"` +script_dir=`dirname ${script_name}` +base_dir_rel=`printf '%s/..' "${script_dir}"` +base_dir=`realpath ${base_dir_rel}` + +if test -r "${base_dir}/conf/local.conf"; then + . "${base_dir}/conf/local.conf" +fi + +script_dir="${base_dir}/scripts" +state_dir="${base_dir}/state" +packages_dir="${base_dir}/packages" diff --git a/conf/local.conf b/conf/local.conf new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/conf/local.conf diff --git a/doc/LINKS b/doc/LINKS new file mode 100644 index 0000000..f09fa6e --- /dev/null +++ b/doc/LINKS @@ -0,0 +1,4 @@ +- Archlinux + - devtools +- HTML with m4 + - https://www.linuxjournal.com/article/2393 diff --git a/doc/TODOS b/doc/TODOS new file mode 100644 index 0000000..3f9f630 --- /dev/null +++ b/doc/TODOS @@ -0,0 +1,10 @@ +- check if gitrevision is part of the packages_dir checkout, if not, and only then, + do a git pull. +- consistency checks + - check for more than one pkgname over multiple repos/archs, use vercmp + to find the newer version + - provide a report and a code snippet for arch32 builder to ignore all + but the newest version + - check for gitrevision from state to appear in packages for every package + - check for all tags if they appear in the packages for every package + diff --git a/html/.gitkeep b/html/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/html/.gitkeep diff --git a/templates/main.m4 b/templates/main.m4 new file mode 100644 index 0000000..604a8da --- /dev/null +++ b/templates/main.m4 @@ -0,0 +1,659 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <title>Arch Linux 32 - List of Build Slaves</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" /> + <link rel="stylesheet" type="text/css" href="/static/flags/fam.47411010d402.css" media="screen, projection" /> + </head> + <body class=""> + <div id="archnavbar" class="anb-packages"> + <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-packages"><a href="https://www.archlinux32.org/packages">Packages</a></li> + <li id="anb-forums"><a href="https://bbs.archlinux32.org/">Forums</a></li> + <li id="anb-bugs"><a href="https://bugs.archlinux32.org/" title="Report and track bugs">Bugs</a></li> + <li id="anb-mailing-list"><a href="https://lists.archlinux.org/archives/list/arch-ports@lists.archlinux.org/latest">Mailing List</a></li> + <li id="anb-download"><a href="https://www.archlinux32.org/download/" title="Get Arch Linux">Download</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"> + <div id="buildslaveslist-results" class="box"> + <table class="results"> + <thead> + <tr> + <th> + <a href="?showall=&sort=name" title="Sort build assignments by name"> + name + </a> + </th> + <th> + <a href="?showall=&sort=operator" title="Sort build assignments by operator"> + operator + </a> + </th> + <th> + <a href="?showall=&sort=currently_building" title="Sort build assignments by pkgbase of currently building package"> + currently building + </a> + </th> + <th> + <a href="?showall=&sort=last_connection" title="Sort build assignments by time of last connection"> + last connection + </a> + </th> + <th> + <a href="?showall=&sort=building_since" title="Sort build assignments by start of build"> + building since + </a> + </th> + <th> + <a href="?showall=&sort=trials" title="Sort build assignments by number of trials"> + trials + </a> + </th> + <th> + <a href="?showall=&sort=logged_lines" title="Sort build assignments by number of logged lines so far"> + logged lines + </a> + </th> + <th> + <a href="?showall=&sort=last_action" title="Sort build assignments by last action"> + last action + </a> + </th> + </tr> + </thead> + <tbody> + <tr class="odd"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=build-tasossah-1">build-tasossah-1</a> + </td> + <td> + KitsuWhooa + </td> + <td> + pentium4/ot-urchin + </td> + <td> + 2024-09-10 19:11:29 + </td> + <td> + 2024-09-10 19:09:18 + </td> + <td> + 2 + </td> + <td> + 601 + </td> + <td> + checking-source + </td> + </tr> + <tr class="even"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=euronuc">euronuc</a> + </td> + <td> + abaumann + </td> + <td> + i686/guile2.2 + </td> + <td> + 2024-09-10 19:11:26 + </td> + <td> + 2024-09-09 23:12:01 + </td> + <td> + 3 + </td> + <td> + 12036 + </td> + <td> + building + </td> + </tr> + <tr class="odd"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=build-tasossah-2">build-tasossah-2</a> + </td> + <td> + KitsuWhooa + </td> + <td> + i686/sniffnet + </td> + <td> + 2024-09-10 19:11:07 + </td> + <td> + 2024-09-10 15:24:15 + </td> + <td> + 5 + </td> + <td> + 6954 + </td> + <td> + building + </td> + </tr> + <tr class="even"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=build-tasossah-fx">build-tasossah-fx</a> + </td> + <td> + KitsuWhooa + </td> + <td> + pentium4/vlc + </td> + <td> + 2024-09-10 19:11:01 + </td> + <td> + 2024-09-09 08:13:36 + </td> + <td> + 1 + </td> + <td> + 1479 + </td> + <td> + building + </td> + </tr> + <tr class="odd"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=euronuc-i486">euronuc-i486</a> + </td> + <td> + abaumann + </td> + <td> + i486/rocm-llvm + </td> + <td> + 2024-09-10 19:11:00 + </td> + <td> + 2024-09-09 21:48:35 + </td> + <td> + 4 + </td> + <td> + 42243 + </td> + <td> + building + </td> + </tr> + <tr class="even"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=build-tasossah-3">build-tasossah-3</a> + </td> + <td> + KitsuWhooa + </td> + <td> + i686/ot-urchin + </td> + <td> + 2024-09-10 19:10:47 + </td> + <td> + 2024-09-10 19:01:21 + </td> + <td> + 5 + </td> + <td> + 3056 + </td> + <td> + building + </td> + </tr> + <tr class="odd"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=eurobuild6-6">eurobuild6-6</a> + </td> + <td> + abaumann + </td> + <td> + + </td> + <td> + 2024-09-10 17:30:12 + </td> + <td> + 2024-09-10 16:27:25 + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="even"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=eurobuild6-4">eurobuild6-4</a> + </td> + <td> + abaumann + </td> + <td> + + </td> + <td> + 2024-09-10 17:27:58 + </td> + <td> + 2024-09-10 15:45:32 + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="odd"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=eurobuild6-1">eurobuild6-1</a> + </td> + <td> + abaumann + </td> + <td> + + </td> + <td> + 2024-09-10 17:23:10 + </td> + <td> + 2024-09-10 16:55:10 + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="even"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=eurobuild6-5">eurobuild6-5</a> + </td> + <td> + abaumann + </td> + <td> + + </td> + <td> + 2024-09-10 17:20:00 + </td> + <td> + 2024-09-10 16:42:52 + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="odd"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=eurobuild6-8-i486">eurobuild6-8-i486</a> + </td> + <td> + abaumann + </td> + <td> + + </td> + <td> + 2024-09-10 17:14:43 + </td> + <td> + 2024-09-10 16:51:28 + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="even"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=eurobuild6-7-i486">eurobuild6-7-i486</a> + </td> + <td> + abaumann + </td> + <td> + + </td> + <td> + 2024-09-10 17:10:43 + </td> + <td> + 2024-09-10 16:54:44 + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="odd"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=eurobuild6-3">eurobuild6-3</a> + </td> + <td> + abaumann + </td> + <td> + + </td> + <td> + 2024-09-10 17:10:31 + </td> + <td> + 2024-09-10 16:41:49 + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="even"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=eurobuild6-2">eurobuild6-2</a> + </td> + <td> + abaumann + </td> + <td> + + </td> + <td> + 2024-09-10 17:04:09 + </td> + <td> + 2024-09-10 16:36:53 + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="odd"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=build-tasossah-c2d">build-tasossah-c2d</a> + </td> + <td> + KitsuWhooa + </td> + <td> + + </td> + <td> + 2024-09-09 15:20:04 + </td> + <td> + 2024-09-09 15:01:04 + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="even"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=eurobuild3-i486">eurobuild3-i486</a> + </td> + <td> + abaumann + </td> + <td> + + </td> + <td> + 2024-09-08 11:55:16 + </td> + <td> + 2024-09-08 11:34:55 + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="odd"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=eurobuild3">eurobuild3</a> + </td> + <td> + abaumann + </td> + <td> + + </td> + <td> + 2024-09-08 11:49:22 + </td> + <td> + 2024-09-08 11:34:13 + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="even"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=streusel-1">streusel-1</a> + </td> + <td> + deep42thought + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="odd"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=streusel-2">streusel-2</a> + </td> + <td> + deep42thought + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="even"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=streusel-3">streusel-3</a> + </td> + <td> + deep42thought + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + <tr class="odd"> + <td> + <a href="/buildmaster/log.php?show=ssh&slave=thuringiabuild1">thuringiabuild1</a> + </td> + <td> + deep42thought + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + <td> + + </td> + </tr> + </tbody> + </table> + <div> + <form> + <input type="hidden" name="sort" value="-last_connection"/> + <label style="font-weight: normal" for="showall">Show all:</label><input type="checkbox" name="showall" /> + <input type="submit" value="Filter"> + </form> + </div> + + </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>. + </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> |