From 5ef9cf1471630ebe6eddb15815a4e4f96df8a84f Mon Sep 17 00:00:00 2001 From: DarkFeather Date: Wed, 22 Feb 2023 17:56:30 -0600 Subject: [PATCH] Syncing Maat with current state; adding MaatIcon for favicon; updating install with maat user; moved maat-builder name to just maat --- .gitignore | 11 ++-- MaatIcon.png | Bin 0 -> 41727 bytes Makefile | 32 +++++++----- PKGBUILD | 4 +- install | 9 ++++ maat-builder => maat | 75 ++++++++++++++++----------- maat-builder.service => maat.service | 4 +- maat-builder.timer => maat.timer | 2 +- 8 files changed, 85 insertions(+), 52 deletions(-) create mode 100644 MaatIcon.png create mode 100644 install rename maat-builder => maat (67%) rename maat-builder.service => maat.service (72%) rename maat-builder.timer => maat.timer (70%) diff --git a/.gitignore b/.gitignore index f35b614..088a994 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,10 @@ -src/ -web/ +# Testing outputs +src/HelloWorld +src/HelloWorld/** +src/ascii-invaders +src/ascii-invaders/** pkg/ testing.log -*.pkg.tar.xz + +# Packaging outputs +*.pkg.tar.zst diff --git a/MaatIcon.png b/MaatIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..62aa9865db66f9941ee53fe04dd671dae854ba2b GIT binary patch literal 41727 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 vnrY5E^+!Amf{{0JK*1_F/dev/null + useradd -g maat -d /srv/maat -s /bin/false maat &> /dev/null + chown -R maat:maat /srv/maat &> /dev/null +} + +pre_remove() { + getent passwd maat &>/dev/null && userdel maat &> /dev/null +} diff --git a/maat-builder b/maat similarity index 67% rename from maat-builder rename to maat index c8d1d26..11f8e03 100755 --- a/maat-builder +++ b/maat @@ -9,7 +9,11 @@ # Copyright: WTFPL # # Author: DarkFeather -# +# + +# Arch keys to look for +pkgExt=".pkg.tar.zst" +deprivuser="maat" ### Printing defaults passCell="PASS"; @@ -30,11 +34,11 @@ function Usage() { ### Put the initial content in the webfile function SeedWebFile() { - printf '\n\nAniNIX/Maat -- Build Results\n\n\n\n\n\n\n\n

AniNIX/Maat -- Build Status

\nWEBSTATSGOHERE\n

AnINIX Packages

\n

These are packages written by the AniNIX. Their source is in AniNIX/Foundation.

\n' > "$webfile" + printf '\n\nAniNIX/Maat -- Build Results\n\n\n\n\n\n\n\n

AniNIX/Maat -- Build Status

\nWEBSTATSGOHERE\n

AnINIX Packages

\n

These are packages written by the AniNIX. Their source is in AniNIX/Foundation.

\n' > "$webfile" printf "$tableHead" >> "$webfile" } -### Update the webfile to close up table tags and add stats. +### Update the webfile to close up table tags and add stats. function UpdateWebFile() { sed -i "s#WEBSTATSGOHERE#

These are the AniNIX testing results. We found $passcount passing and $failcount failing packages, with $warncount warnings. It took $runtime seconds to finish.

#" "$webfile" printf '\n\n\n' >> "$webfile" @@ -43,21 +47,23 @@ function UpdateWebFile() { ### Build the package. Assumes a PKGBUILD is resent in the repo. # param suffix: where to store the final package -function BuildPackage() { +function BuildPackage() { suffix="$1" [ `pgrep -afc pacman` -eq 0 ] && rm -Rf /var/lib/pacman/db.lck - nice -n 10 timeout --preserve-status 20m sudo -u "depriv" /usr/sbin/makepkg -sfc --noconfirm --sign &>> "$pkgdir"/"$repodir".txt + nice -n 10 timeout --preserve-status 60m sudo -u "$deprivuser" /usr/sbin/makepkg -sfc --noconfirm --sign &>> "$pkgdir"/"$repodir".txt if [ $? -ne 0 ]; then # Build failed. - printf "$failCell""$warnCell" >> "$webfile" + printf "$failCell""$warnCell" >> "$webfile" else # Build passed. printf "$passCell""" >> "$webfile" # List passing versions - for pkg in `find . -type f | egrep ".pkg.tar.xz$"`; do + for pkg in `find . -type f | grep -E "${pkgExt}""\$"`; do printf "$pkg
" >> "$webfile" - mv "$pkg" "$pkgdir"/"$suffix"; - mv "$pkg"".sig" "$pkgdir"/"$suffix"; + pkgname="$(basename "$pkg" | cut -f 1 -d '.' | sed 's/-[[:digit:]]\+$//')" + find "${pkgdir}/${suffix}/" -name "${pkgname}-[0-9]*" -exec rm {} \; + mv "$pkg" "$pkgdir"/"$suffix"; + mv "$pkg"".sig" "$pkgdir"/"$suffix"; done printf "" >> "$webfile" fi @@ -76,20 +82,27 @@ function BuildRepo() { if [ ! -d "$repodir" ]; then git clone "$repo" fi - cd "$repodir" + cd "$repodir" git reset --hard origin &>/dev/null output="$(git pull 2>&1)" - chown -R "depriv": . - + if [ -n "$incremental" ] && [ $( echo "$output" | grep -c 'Already up to date.' ) -eq 1 ]; then + return; + fi + + chown -R "$deprivuser": . echo "$output" > "$pkgdir"/"$repodir".txt # Find the PKGBuilds in the repo for pkgbuild in `find . -type f -name PKGBUILD`; do cd "$(dirname "$pkgbuild")" # Tell the status file about it. printf ''"$repodir -- $pkgbuild"'' >> "$webfile" - if [ -f Makefile ] && [ `egrep -c '^test:' Makefile` -ge 1 ]; then + if [ -f Makefile ] && [ `grep -E -c '^test:' Makefile` -ge 1 ]; then + # Have to try to install dependencies first + for dep in $(grep makedepends PKGBUILD | cut -f 2 -d '(' | cut -f 1 -d ')' | sed "s/'//g"); do + pacman -Sy "$dep" --noconfirm --needed + done # Check test status. - timeout --preserve-status "$timeout" sudo -u "depriv" /bin/bash -l -c 'make test' &>> "$pkgdir"/"$repodir".txt + timeout --preserve-status "$timeout" sudo -u "$deprivuser" /bin/bash -l -c "cd $PWD; make test" &>> "$pkgdir"/"$repodir".txt if [ $? -ne 0 ]; then # Testing failed. printf "$failCell""$warnCell""$warnCell" >> "$webfile" @@ -98,7 +111,7 @@ function BuildRepo() { printf "$passCell" >> "$webfile" BuildPackage "$suffix" fi - else + else # Can't test -- usually from non-AniNIX repos. printf "$warnCell" >> "$webfile" BuildPackage "$suffix" @@ -108,26 +121,26 @@ function BuildRepo() { cd "$cwd" if [ ! -z "$testing" ]; then break; fi done - cd "$cwd" + cd "$cwd" } -### Update the local repo -function UpdateLocalRepo() { +### Update the local repo +function UpdateLocalRepo() { set -x - cd "$pkgdir" - chown -R "depriv": . + cd "$pkgdir" + chown -R "$deprivuser": . # TODO Add deduplication of updated files -- keep latest 3 versions. - rm -Rf AniNIX.[db,files]* - sudo -u "depriv" repo-add --sign ./AniNIX.db.tar.xz `ls -1 *".pkg.tar.xz"` + rm -Rf AniNIX.[db,files]* + sudo -u "$deprivuser" repo-add --sign ./AniNIX.db.tar.zst `ls -1 *"${pkgExt}"` cd aur/ rm -Rf aur.[db,files]* - sudo -u "depriv" repo-add --sign ./aur.db.tar.xz `ls -1 *".pkg.tar.xz"` + sudo -u "$deprivuser" repo-add --sign ./aur.db.tar.zst `ls -1 *"${pkgExt}"` set +x } # Clear variables aurconf='/usr/local/etc/Maat/aur.list' -baseurl='https://foundation.aninix.net/AniNIX' +baseurl='https://aninix.net/AniNIX' homedir="/srv/maat/" unset incremental unset skipPatching @@ -138,7 +151,7 @@ timeout="90s" starttime=`date +%s` # Parse arguments -while getopts 'b:c:hil:st:Tv' OPTION; do +while getopts 'b:c:hil:st:Tu:v' OPTION; do case "${OPTION}" in b) homedir="${OPTARG}" ;; c) aurconf="${OPTARG}" ;; @@ -147,15 +160,17 @@ while getopts 'b:c:hil:st:Tv' OPTION; do l) cmdstring="$0"; for arg in $@; do if [ "$arg" != "-l" ] && [ "$arg" != "${OPTARG}" ]; then cmdstring="$cmdstring \"${arg}\""; fi; done; exec /bin/bash -c "$cmdstring | tee -a \"${OPTARG}\""; ;; s) skipPatching=1 ;; t) timeout="${OPTARG}" ;; - T) export MAATTESTINGVAR=1; exec $0 -l ./testing.log -v -s -c <(echo https://aur.archlinux.org/cower.git) -b . ;; + T) export MAATTESTINGVAR=1; exec $0 -l ./testing.log -u "$deprivuser" -v -s -c <(echo https://aur.archlinux.org/ascii-invaders.git) -b . ;; + u) deprivuser="${OPTARG}" ;; v) set -x ;; *) usage; exit 1 ;; esac done # Ensure we are up to date -- otherwise, building is not a good plan. -if [ -x `which pacman` ] && [ -z "$skipPatching" ]; then - pacman -Syu --noconfirm; +if [ -x `which pacman` ] && [ -z "$skipPatching" ]; then + pacman -Sc --noconfirm + pacman -Syu --noconfirm if [ $? -ne 0 ]; then echo "Self patching failed -- please investigate!" 1>&2 exit 1 @@ -163,7 +178,7 @@ if [ -x `which pacman` ] && [ -z "$skipPatching" ]; then fi # Ensure work directories live -if [ $( echo "$homedir" | egrep -c '^/') -ne 1 ]; then +if [ $( echo "$homedir" | grep -E -c '^/') -ne 1 ]; then homedir="${PWD}/${homedir}" fi @@ -190,7 +205,7 @@ printf "$tableHead" >> "$webfile" # Build AUR for repo in `cat "$aurconf"`; do - BuildRepo "$repo" aur/; + BuildRepo "$repo" aur; if [ ! -z "$MAATTESTINGVAR" ]; then break; fi done diff --git a/maat-builder.service b/maat.service similarity index 72% rename from maat-builder.service rename to maat.service index c9fae1b..49c0a55 100644 --- a/maat-builder.service +++ b/maat.service @@ -1,10 +1,10 @@ [Unit] -Description=AniNIX::Maat \\ Builder Service +Description=AniNIX/Maat | Builder Service ConditionPathExists=|!/srv/maat/pkg/.lock [Service] ExecStartPre=/usr/sbin/mkdir /srv/maat/pkg/.lock -ExecStart=/usr/local/bin/maat-builder +ExecStart=/usr/local/bin/maat ExecStopPost=/usr/sbin/rmdir /srv/maat/pkg/.lock Type=oneshot RemainAfterExit=no diff --git a/maat-builder.timer b/maat.timer similarity index 70% rename from maat-builder.timer rename to maat.timer index 442b015..936e5fb 100644 --- a/maat-builder.timer +++ b/maat.timer @@ -1,5 +1,5 @@ [Unit] -Description=AniNIX::Maat \\ Builder Timer +Description=AniNIX/Maat | Builder Timer [Timer] OnCalendar=daily