diff --git a/admin/sudo/test-version.sh b/admin/sudo/test-version.sh new file mode 100755 index 0000000000..f8a0f1b586 --- /dev/null +++ b/admin/sudo/test-version.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# shellcheck shell=busybox + +# PKG_VERSION substitutes p->_p for a valid apk version (1.9.17_p2); the binary +# embeds the real 1.9.17p2. Executing sudo just to read its version hangs under +# QEMU emulation (e.g. mips_24kc), so match the version string compiled into the +# binary instead of running it. +case "$1" in +sudo) + grep -aqF "$(echo "$2" | tr -d '_')" /usr/bin/sudo + ;; +*) + echo "Untested package: $1" >&2 + exit 1 + ;; +esac diff --git a/admin/sudo/test.sh b/admin/sudo/test.sh old mode 100644 new mode 100755 index da24851fb7..14701d4027 --- a/admin/sudo/test.sh +++ b/admin/sudo/test.sh @@ -1,7 +1,12 @@ #!/bin/sh +# sudo hangs when executed under QEMU emulation (e.g. mips_24kc), so verify the +# installed files rather than running it. The version is checked in +# test-version.sh against the string compiled into the binary. case "$1" in - sudo) - sudo --version | grep "${2//_p/p}" - ;; +sudo) + [ -x /usr/bin/sudo ] || { echo "FAIL: /usr/bin/sudo missing"; exit 1; } + [ -x /usr/sbin/visudo ] || { echo "FAIL: /usr/sbin/visudo missing"; exit 1; } + [ -f /etc/sudoers ] || { echo "FAIL: /etc/sudoers missing"; exit 1; } + ;; esac