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 0000000..62aa986
Binary files /dev/null and b/MaatIcon.png differ
diff --git a/Makefile b/Makefile
index 0805b2f..f8d061d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,24 +1,27 @@
installDir = ${pkgdir}/usr/local/bin
-list = ./maat-builder
-systemdList = ./maat-builder.timer ./maat-builder.service
+list = ./maat
+systemdList = ./maat.timer ./maat.service
serverRoot = /srv/maat/
-owner=root
+owner=maat
perms=0755
fileperms=0644
compile: /bin/bash
@echo Nothing to compile.
-install: ${list}
+install: ${list} MaatIcon.png
mkdir -p ${installDir}
mkdir -p ${pkgdir}${serverRoot}/src
mkdir -p ${pkgdir}${serverRoot}/pkg
+ install -m ${fileperms} -o ${owner} ./MaatIcon.png ${pkgdir}${serverRoot}/pkg
mkdir -p ${pkgdir}/usr/lib/systemd/system
- for i in ${list}; do install -m ${perms} -o ${owner} $$i ${installDir}; done
+ for i in ${list}; do install -m ${perms} -o root $$i ${installDir}; done
+ install -m ${perms} -o ${owner} -d ${pkgdir}/usr/local/etc/Maat/
+ touch ${pkgdir}/usr/local/etc/Maat/aur.list; chown ${owner} ${pkgdir}/usr/local/etc/Maat/aur.list; chmod ${fileperms} ${pkgdir}/usr/local/etc/Maat/aur.list
for i in ${systemdList}; do install -m 0644 -o root $$i ${pkgdir}/usr/lib/systemd/system; done
clean:
- cat .gitignore | xargs rm -Rf
+ cat .gitignore | sudo xargs rm -Rf
uninstall:
for i in ${list}; do rm -Rf ${installDir}/$$i; done
@@ -27,31 +30,32 @@ uninstall:
rmdir -p ${pkgdir}${serverRoot}/pkg
test: clean
- ./maat-builder -T
+ sudo ./maat -u $$USER -T
test -d src
- test -d src/cower
- test -d src/cower/.git
+ test -d src/ascii-invaders
+ test -d src/ascii-invaders/.git
test -d src/HelloWorld
test -d src/HelloWorld/.git
test -d pkg
test -d pkg/aur
test -f pkg/AniNIX.db
test -f pkg/AniNIX.db.sig
- test -f pkg/helloworld*.tar.xz
+ test -f pkg/HelloWorld*.tar.zst
test -f pkg/aur/aur.db
test -f pkg/aur/aur.db.sig
- test -f pkg/aur/cower*.tar.xz
+ test -f pkg/aur/ascii-invaders*.tar.zst
[ `wc -l pkg/index.html | cut -f 1 -d ' '` -eq 24 ]
+ make clean
@echo
@echo Tests passed successfully.
diff:
- for i in ${list}; do if [ -f ${installDir}/$$i ]; then diff "$$i" "${installDir}/$$i"; fi done
+ for i in ${list}; do if [ -f ${installDir}/$$i ]; then diff "$$i" "${installDir}/$$i"; fi done
reverse:
- for i in ${list}; do if [ -f ${installDir}/$$i ]; then cp "${installDir}/$$i" "$$i"; fi done
+ for i in ${list}; do if [ -f ${installDir}/$$i ]; then cp "${installDir}/$$i" "$$i"; fi done
checkperm:
chown -R ${owner}: ${pkgdir}${serverRoot}/src
chown -R ${owner}: ${pkgdir}${serverRoot}/pkg
- for i in ${list}; do chown -R ${owner}: "${installDir}/$$i"; chmod ${perms} "${installDir}/$$i"; done
+ for i in ${list}; do chown -R ${owner}: "${installDir}/$$i"; sudo chmod ${perms} "${installDir}/$$i"; done
diff --git a/PKGBUILD b/PKGBUILD
index 5f7f2b4..73f9e26 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -19,7 +19,7 @@ conflicts=()
replaces=("${pkgname,,}", "aninix-${pkgname,,}")
backup=()
options=()
-install=
+install=install
changelog=
source=()
noextract=()
@@ -28,7 +28,7 @@ validpgpkeys=()
prepare() {
git pull
- make -C .. test
+ make -C .. test && make -C .. clean
}
build() {
diff --git a/install b/install
new file mode 100644
index 0000000..455adf7
--- /dev/null
+++ b/install
@@ -0,0 +1,9 @@
+pre_install() {
+ groupadd maat &>/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.
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 '