pentoo-overlay/scripts/qa/test-build
2025-12-31 19:58:48 -05:00

52 lines
1.9 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 appears to be unmasked, 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'
fi
exit "${FAILED}"