parent
044b8da55a
commit
759617c9c0
288 changed files with 13040 additions and 1 deletions
116
bots/images/scripts/lib/fedora.install
Executable file
116
bots/images/scripts/lib/fedora.install
Executable file
|
|
@ -0,0 +1,116 @@
|
|||
#! /bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
# don't update already installed cockpit packages
|
||||
installed=$(rpm --query --all --queryformat "%{NAME}-\[0-9\]\n" "cockpit*")
|
||||
skip="cockpit-doc-[0-9]"
|
||||
if [ -n "$installed" ]; then
|
||||
skip="$skip
|
||||
$installed"
|
||||
fi
|
||||
|
||||
do_build=
|
||||
do_install=
|
||||
# we build RHEL 7.x in a CentOS mock, thus we can't parse os-release in the .spec
|
||||
mock_opts="--define='os_version_id $(. /etc/os-release; echo $VERSION_ID)'"
|
||||
args=$(getopt -o "vqs:" -l "verbose,quick,skip:,build,install,rhel,HACK-no-bootstrap-chroot" -- "$@")
|
||||
eval set -- "$args"
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
-v|--verbose)
|
||||
mock_opts="$mock_opts --verbose"
|
||||
;;
|
||||
-q|--quick)
|
||||
mock_opts="$mock_opts --nocheck --define='selinux 0'"
|
||||
;;
|
||||
-s|--skip)
|
||||
skip="$skip
|
||||
$2"
|
||||
shift
|
||||
;;
|
||||
--build)
|
||||
do_build=t
|
||||
;;
|
||||
--install)
|
||||
do_install=t
|
||||
;;
|
||||
--rhel)
|
||||
# For RHEL we actually build in EPEL, which is based
|
||||
# on CentOS. On CentOS, the spec file has both
|
||||
# %centos and %rhel defined, but it gives precedence
|
||||
# to %centos, as it must. To make it produce the RHEL
|
||||
# packages, we explicitly undefine %centos here.
|
||||
mock_opts="$mock_opts --define='centos 0'"
|
||||
;;
|
||||
--HACK-no-bootstrap-chroot)
|
||||
mock_opts="$mock_opts --no-bootstrap-chroot"
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
tar=$1
|
||||
|
||||
# Build
|
||||
|
||||
if [ -n "$do_build" ]; then
|
||||
# Some tests need a non-loopback internet address, so we allow
|
||||
# networking during build. Note that we use "--offline" below, so
|
||||
# we should still be protected against unexpected package
|
||||
# installations.
|
||||
echo "config_opts['rpmbuild_networking'] = True" >>/etc/mock/site-defaults.cfg
|
||||
# don't destroy the mock after building, we want to run rpmlint
|
||||
echo "config_opts['cleanup_on_success'] = False" >>/etc/mock/site-defaults.cfg
|
||||
# HACK: don't fall over on unavailable repositories, as we are offline
|
||||
# (https://bugzilla.redhat.com/show_bug.cgi?id=1549291)
|
||||
sed --follow-symlinks -i '/skip_if_unavailable=False/d' /etc/mock/default.cfg
|
||||
|
||||
rm -rf build-results
|
||||
srpm=$(/var/lib/testvm/make-srpm "$tar")
|
||||
LC_ALL=C.UTF-8 su builder -c "/usr/bin/mock --offline --no-clean --resultdir build-results $mock_opts --rebuild $srpm"
|
||||
|
||||
su builder -c "/usr/bin/mock --offline --shell" <<EOF
|
||||
rm -rf /builddir/build
|
||||
if type rpmlint >/dev/null 2>&1; then
|
||||
# blacklist "E: no-changelogname-tag" rpmlint error, expected due to our template cockpit.spec
|
||||
mkdir -p ~/.config
|
||||
echo 'addFilter("E: no-changelogname-tag")' > ~/.config/rpmlint
|
||||
# we expect the srpm to be clean
|
||||
echo
|
||||
echo '====== rpmlint on srpm ====='
|
||||
rpmlint /builddir/build/SRPMS/*.src.rpm
|
||||
# this still has lots of errors, run it for information only
|
||||
echo
|
||||
echo '====== rpmlint binary rpms (advisory) ====='
|
||||
rpmlint /builddir/build/RPMS/ || true
|
||||
else
|
||||
echo '====== skipping rpmlint check, not installed ====='
|
||||
fi
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Install
|
||||
|
||||
if [ -n "$do_install" ]; then
|
||||
packages=$(find build-results -name "*.rpm" -not -name "*.src.rpm" | grep -vG "$skip")
|
||||
rpm -U --force $packages
|
||||
|
||||
if type firewall-cmd > /dev/null 2> /dev/null; then
|
||||
systemctl start firewalld
|
||||
firewall-cmd --add-service=cockpit --permanent
|
||||
fi
|
||||
|
||||
# Make sure we clean out the journal
|
||||
journalctl --flush
|
||||
journalctl --sync || killall systemd-journald
|
||||
rm -rf /var/log/journal/*
|
||||
rm -rf /var/lib/NetworkManager/dhclient-*.lease
|
||||
fi
|
||||
|
||||
if [ -n "$do_build" ]; then
|
||||
su builder -c "/usr/bin/mock --clean"
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue