set -euo pipefail
dnf -y install dnf-plugins-core
dnf config-manager setopt updates-testing.enabled=1
dn=$(dirname "$0")
tmpd=$(mktemp -d) && trap 'rm -rf ${tmpd}' EXIT
arch=$(arch)
echo "Installing base build requirements"
dnf -y install /usr/bin/xargs 'dnf-command(builddep)'
deps=$(grep -v '^#' "${dn}"/buildroot-reqs.txt)
if [ -f "${dn}/buildroot-reqs-${arch}.txt" ]; then
deps+=" "
deps+=$(grep -v '^#' "${dn}/buildroot-reqs-${arch}.txt")
fi
echo "${deps}" | xargs dnf -y install
echo "Installing build dependencies of primary packages"
brs=$(grep -v '^#' "${dn}"/buildroot-buildreqs.txt)
(cd "${tmpd}" && mkdir rpmbuild
echo "${brs}" | xargs dnf download --source
find . -name '*.src.rpm' -print0 | xargs -0n 1 rpmbuild -rs --nodeps \
-D "%_topdir $PWD/rpmbuild" -D "%_tmppath %{_topdir}/tmp"
dnf builddep -y rpmbuild/SRPMS/*.src.rpm)
rm -rf "${tmpd:?}"/*
echo "Installing build dependencies from canonical spec files"
specs=$(grep -v '^#' "${dn}"/buildroot-specs.txt)
(cd "${tmpd}" && echo "${specs}" | xargs curl -L --remote-name-all)
(cd "${tmpd}" && find . -type f -print0 | xargs -0 dnf -y builddep)
rm -rf "${tmpd:?}"/*
echo "Installing test dependencies from canonical upstream files"
testdep_urls=$(grep -v '^#' "${dn}"/testdeps.txt)
(cd "${tmpd}" && echo "${testdep_urls}" | xargs curl -L --remote-name-all)
grep -hrv '^#' "${tmpd}" | xargs dnf -y install
rm -rf "${tmpd:?}"/*
echo 'Done!'