Blame tests/mocktest.sh

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