pentoo-overlay/scripts/qa/test-build
Rick Farina (Zero_Chaos) a2b619213f
test-build: improve output
2025-12-31 20:18:13 -05:00

61 lines
2.1 KiB
Bash
Executable file

#!/bin/bash
WARNED='0'
FAILED='0'
FEATURES='-ipc-sandbox -network-sandbox -pid-sandbox'
export FEATURES
[ -d '/etc/portage/env' ] || mkdir -p /etc/portage/env/
printf 'FEATURES="%s test"' "${FEATURES}" >> /etc/portage/env/features-test
pretend_build() {
emerge --getbinpkg=y --buildpkg=n --jobs="$(nproc)" --load-average="$(nproc)" --verbose --pretend "${1}"
}
dep_build() {
emerge --getbinpkg=y --buildpkg=n --jobs="$(nproc)" --load-average="$(nproc)" --verbose --onlydeps "${1}"
}
build() {
emerge --getbinpkg=y --buildpkg=n --jobs="$(nproc)" --load-average="$(nproc)" --verbose "${1}"
}
for i in $(git --no-pager diff --name-only "$(git rev-parse --verify origin/master 2> /dev/null)" HEAD); do
if [ "${i%.ebuild}" != "${i}" ]; then
test_ebuild="$(printf '%s' "${i%.ebuild}" | awk -F'/' '{print "="$1"/"$3}')"
printf '%s features-test' "${test_ebuild}" >> /etc/portage/package.env
printf '%s looks like an ebuild, testing visibility\n' "${i}"
if pretend_build "${test_ebuild}" ; then
printf '%s appears to be unmasked, building deps\n' "${i}"
if dep_build "${test_ebuild}"; then
printf '%s deps have built, build testing\n' "${i}"
if build "${test_ebuild}"; then
printf '%s build SUCCESS\n' "${i}"
else
printf '%s build FAILED\n' "${i}"
FAILED="1"
fi
else
printf 'WARNING WARNING WARNING\n'
printf '%s deps failed to build. This is a bad sign which we are ignoring for now\n' "${i}"
printf 'WARNING WARNING WARNING\n'
WARNED='1'
fi
else
printf '%s appears to be masked, skipping build test\n' "${i}"
fi
fi
done
if [ "${WARNED}" = '1' ]; then
printf 'WARNING WARNING WARNING\n'
printf 'There were warnings during this build which may be fatal later. Please review the logs.\n'
printf 'WARNING WARNING WARNING\n'
else
printf 'No warnings generated by this script.\n'
fi
if [ "${FAILED}" = '0' ]; then
printf 'No failures seen by this script.\n'
else
printf 'FAILED FAILED FAILED\n'
printf 'Something above failed, please review the output.\n'
printf 'FAILED FAILED FAILED\n'
fi
exit "${FAILED}"