cockpit/bots/images/scripts/lib/debian.install

98 lines
2.7 KiB
Bash
Executable File

#! /bin/sh
set -ex
export DEB_BUILD_OPTIONS=""
do_build=
do_install=
stdout_dest="/dev/null"
args=$(getopt -o "vqs:" -l "verbose,quick,skip:,build,install" -- "$@")
eval set -- "$args"
while [ $# -gt 0 ]; do
case $1 in
-v|--verbose)
stdout_dest="/dev/stdout"
;;
-q|--quick)
DEB_BUILD_OPTIONS="$DEB_BUILD_OPTIONS nocheck"
;;
--build)
do_build=t
;;
--install)
do_install=t
;;
--)
shift
break
;;
esac
shift
done
tar="$1"
# Build
if [ -n "$do_build" ]; then
rm -rf build-results
mkdir build-results
resultdir=$PWD/build-results
upstream_ver=$(ls cockpit-*.tar.gz | sed 's/^.*-//; s/.tar.gz//' | head -n1)
ln -sf cockpit-*.tar.gz cockpit_${upstream_ver}.orig.tar.gz
rm -rf cockpit-*/
tar -xzf cockpit-*.tar.gz
( cd cockpit-*/
cp -rp tools/debian debian
# put proper version into changelog, as we have versioned dependencies
sed -i "1 s/(.*)/($upstream_ver-1)/" debian/changelog
# Hack: Remove PCP build dependencies while pcp is not in testing
# (https://tracker.debian.org/pcp)
sed -i '/libpcp.*-dev/d' debian/control
dpkg-buildpackage -S -uc -us -nc
)
# Some unit tests want a real network interface
echo USENETWORK=yes >>~/.pbuilderrc
# pbuilder < 0.228.6 has broken /dev/pts/ptmx permissions; affects Ubuntu < 17.04
# see https://bugs.debian.org/841935
if ! grep -q ptmxmode /usr/lib/pbuilder/pbuilder-modules; then
echo "Fixing /dev/pts/ptmx mode in pbuilder"
sed -i '/mount -t devpts none/ s/$/,ptmxmode=666,newinstance/' /usr/lib/pbuilder/pbuilder-modules
fi
pbuilder build --buildresult "$resultdir" \
--logfile "$resultdir/build.log" \
cockpit_${upstream_ver}-1.dsc >$stdout_dest
lintian $resultdir/cockpit_*_$(dpkg --print-architecture).changes >&2
fi
# Install
if [ -n "$do_install" ]; then
packages=$(find build-results -name "*.deb")
dpkg --install $packages
# FIXME: our tests expect cockpit.socket to not be running after boot, only
# after start_cockpit().
systemctl disable cockpit.socket
# HACK: tuned breaks QEMU (https://launchpad.net/bugs/1774000)
systemctl disable tuned.service 2>/dev/null || true
# avoid random dpkg database locks, they break our package related tests
systemctl disable apt-daily-upgrade.timer
firewall-cmd --add-service=cockpit --permanent
# not managed by NM, so enable interface manually
firewall-cmd --zone=public --permanent --add-interface=eth1
journalctl --flush
journalctl --sync || killall systemd-journald
rm -rf /var/log/journal/*
fi