|
|
dd5ff52 |
#!/usr/bin/bash -eux
|
|
|
2a3b101 |
. /etc/os-release
|
|
|
ed8ae6b |
|
|
|
ed8ae6b |
version=$(echo "${VERSION_ID}" | cut -d. -f1)
|
|
|
ed8ae6b |
arch="x86_64"
|
|
|
ed8ae6b |
|
|
|
ed8ae6b |
case $NAME in
|
|
|
ed8ae6b |
"Fedora Linux"|"Fedora")
|
|
|
ed8ae6b |
mock="fedora-${version}-${arch}"
|
|
|
c839a6f |
repos="local"
|
|
|
ed8ae6b |
;;
|
|
|
ed8ae6b |
|
|
|
ed8ae6b |
"CentOS Stream"|"Red Hat Enterprise Linux")
|
|
|
c839a6f |
mock="centos-stream+epel-next-${version}-${arch}"
|
|
|
c839a6f |
repos="local,local-centos-stream"
|
|
|
ed8ae6b |
;;
|
|
|
ed8ae6b |
|
|
|
ed8ae6b |
*)
|
|
|
ed8ae6b |
echo "Not supported OS" >&2
|
|
|
ed8ae6b |
exit 1
|
|
|
ed8ae6b |
;;
|
|
|
ed8ae6b |
esac
|
|
|
dd5ff52 |
|
|
|
8a31feb |
pkgname=${1}
|
|
|
8a31feb |
shift
|
|
|
8a31feb |
|
|
|
ed8ae6b |
config="/tmp/${mock}-ci.cfg"
|
|
|
dd5ff52 |
|
|
|
dd5ff52 |
# create mock config if not present
|
|
|
dd5ff52 |
# this makes sure tested version of pyproject-rpm-macros is available
|
|
|
dd5ff52 |
# TODO: check if it has precedence if the release was not bumped in tested PR
|
|
|
dd5ff52 |
if [ ! -f $config ]; then
|
|
|
ed8ae6b |
original="/etc/mock/${mock}.cfg"
|
|
|
2262ba2 |
cp $original $config
|
|
|
2262ba2 |
|
|
|
76613bd |
echo -e '\n\n' >> $config
|
|
|
2998811 |
echo -e 'config_opts["package_manager_max_attempts"] = 10' >> $config
|
|
|
2998811 |
echo -e 'config_opts["package_manager_attempt_delay"] = 60' >> $config
|
|
|
9bb7de7 |
echo -e '\n\nconfig_opts[f"{config_opts.package_manager}.conf"] += """' >> $config
|
|
|
fe3aa8f |
|
|
|
fe3aa8f |
# The zuul CI has zuul-build.repo
|
|
|
fe3aa8f |
# The Jenkins CI has test-<pkgname>.repo
|
|
|
fe3aa8f |
# We run this code from various packages, so we support any <pkgname>
|
|
|
fe3aa8f |
if [ -f /etc/yum.repos.d/zuul-build.repo ]; then
|
|
|
fe3aa8f |
cat /etc/yum.repos.d/zuul-build.repo >> $config
|
|
|
fe3aa8f |
else
|
|
|
fe3aa8f |
cat /etc/yum.repos.d/test-*.repo >> $config
|
|
|
fe3aa8f |
fi
|
|
|
2262ba2 |
echo -e '\n"""\n' >> $config
|
|
|
dd5ff52 |
fi
|
|
|
dd5ff52 |
|
|
|
dd5ff52 |
# prepare the rpmbuild folders, make sure nothing relevant is there
|
|
|
e5c4bb2 |
mkdir -p ~/rpmbuild/SRPMS
|
|
|
8a31feb |
rm -f ~/rpmbuild/SRPMS/${pkgname}-*.src.rpm
|
|
|
dd5ff52 |
|
|
|
dd5ff52 |
# download the sources and create SRPM
|
|
|
e5c4bb2 |
spectool -g ${pkgname}.spec
|
|
|
e5c4bb2 |
rpmbuild -bs --define '_sourcedir .' ${pkgname}.spec
|
|
|
dd5ff52 |
|
|
|
dd5ff52 |
# build the SRPM in mock
|
|
|
7e01f58 |
res=0
|
|
|
bd1022e |
mock --verbose --isolation=simple -r $config --enablerepo="$repos" init
|
|
|
bd1022e |
mock --verbose --isolation=simple -r $config --enablerepo="$repos" "$@" ~/rpmbuild/SRPMS/${pkgname}-*.src.rpm || res=$?
|
|
|
dd5ff52 |
|
|
|
dd5ff52 |
# move the results to the artifacts directory, so we can examine them
|
|
|
dd5ff52 |
artifacts=${TEST_ARTIFACTS:-/tmp/artifacts}
|
|
|
ed8ae6b |
|
|
|
ed8ae6b |
# on Fedora Rawhide, the directory contains "rawhide" instead of the actual version
|
|
|
ed8ae6b |
pushd /var/lib/mock/${mock}/result || pushd /var/lib/mock/${mock/${version}/rawhide}/result
|
|
|
7e01f58 |
mv *.rpm ${artifacts}/ || :
|
|
|
dd5ff52 |
for log in *.log; do
|
|
|
8a31feb |
mv ${log} ${artifacts}/${pkgname}-${log}
|
|
|
dd5ff52 |
done
|
|
|
dd5ff52 |
popd
|
|
|
7e01f58 |
|
|
|
7e01f58 |
exit $res
|