postmarketos-mkinitfs-hook-ci: new aport (MR 4420)

Add a new initramfs hook for running tests in a CI environment.

This hook automatically runs any scripts from /usr/libexec/ci-tests.
Tests should be installed as a subpackage of some other package (e.g.
qrtr) with an install_if clause to install them when this hook is
installed.

This allows platform specific packages like device packages to define
tests that will automatically be installed and executed when building
the initramfs for that device. See
device/community/device-oneplus-enchilada for an example.

Signed-off-by: Caleb Connolly <caleb@connolly.tech>
This commit is contained in:
Caleb Connolly 2023-09-25 15:31:48 +01:00
parent aecda04b22
commit e22f6f684f
No known key found for this signature in database
GPG key ID: 7930459FB9303217
3 changed files with 71 additions and 0 deletions

View file

@ -0,0 +1,8 @@
/usr/libexec/pmos-tests-initramfs
# We want all modules to be here so that we can validate
# that all the device drivers load properly
/lib/modules
/sbin/udevd
/bin/udevadm
/etc/udev/rules.d
/lib/udev/rules.d

View file

@ -0,0 +1,38 @@
#!/bin/sh
# shellcheck disable=SC1091
. ./init_functions.sh
. /usr/share/misc/source_deviceinfo
TEST=""
DID_FAIL=0
echo "==> Running postmarketos-mkinitfs-hook-ci"
echo "==> disabling dmesg on console"
dmesg -n 2
for f in /usr/libexec/pmos-tests-initramfs/*; do
echo -e "\n==> Running test $f\n\n"
$f
if [ $? -ne 0 ]; then
echo "==> FAIL: $f"
DID_FAIL=1
else
echo "==> OK: $f"
fi
done
dmesg -n 8
if [ $DID_FAIL -ne 0 ]; then
echo "==> PMOS-CI-FAIL"
else
echo "==> PMOS-CI-OK"
fi
# We're done, kill it
# CDBA will exit if it sees 20 '~' characters
# in a row, send a whole bunch just to be sure
# In the worst case it will timeout.
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

View file

@ -0,0 +1,25 @@
# Maintainer: Caleb Connolly <caleb@connolly.tech>
pkgname=postmarketos-mkinitfs-hook-ci
pkgver=0.1.0
pkgrel=0
pkgdesc="Hook for doing automated CI tests in the initramfs"
url="https://postmarketos.org"
source="
05-ci.sh
05-ci.files
"
arch="noarch"
license="GPL2"
options="!check"
package() {
install -Dm755 "$srcdir"/05-ci.sh \
"$pkgdir"/usr/share/mkinitfs/hooks/05-ci.sh
install -Dm644 "$srcdir"/05-ci.files \
"$pkgdir"/usr/share/mkinitfs/files/05-ci.files
}
sha512sums="
43f9d9a35a57845eb36893a3f20d8ff5f20b93b1c22c7c6e3959b07a41b3c5fe2f9941612620cf006a0018b53edae5fdc7ed3006befc6908c19a5617f322dea3 05-ci.sh
35457ab221acd485ebde84fccac2187f36a074554c5f73828f2031f1e8e92ab7b3d46e654f0d7c62c0aa483c1d7f0dc901422fe0398ae0eae6995a2ae539a4af 05-ci.files
"