#!/bin/bash set -e # shellcheck source=functions-debian.sh . "$(dirname "$(readlink -f "$0")")"/functions-debian.sh # enabling ccache echo "[ enabling ccache ]" PATH=/usr/lib/ccache:"$PATH" export CCACHE_DIR="${WORKDIR}/ccache" env | grep -E '^(PATH=|CCACHE)' if [ -x /usr/sbin/update-ccache-symlinks ]; then echo "Running update-ccache-symlinks" sudo /usr/sbin/update-ccache-symlinks fi # reset ccache statistics # so we now the statistics of the new build if [ -d "${CCACHE_DIR}" ]; then ccache -z # (--zero-stats) fi # use eatmydata if present eatmydata= if command -v eatmydata >/dev/null; then eatmydata=eatmydata fi if [ -n "$ICINGA_BUILD_APTCACHER" ]; then echo "[ enable apt-cacher ]" echo "Acquire::http::Proxy \"${ICINGA_BUILD_APTCACHER}\";" | sudo tee /etc/apt/apt.conf.d/999cache echo fi echo "[ apt-get update ]" # absolute apt-get path because of # "eatmydata: unable to find 'apt-get' in PATH" on Ubuntu Hirsute sudo $eatmydata /usr/bin/apt-get update echo "[ Extracting source to build directory ]" ( set -ex cd "${BUILDDIR}/" set -e if [ -d "${ICINGA_BUILD_PROJECT}" ]; then set -x chmod -R u+w "${ICINGA_BUILD_PROJECT}" fi set -x rm -rf "${ICINGA_BUILD_PROJECT}" dpkg-source -x ./*.dsc "${ICINGA_BUILD_PROJECT}" ) echo "[ Installing build dependencies ]" ( set -ex cd "${BUILDDIR}/${ICINGA_BUILD_PROJECT}" if [[ "$(uname -m)" = arm* ]]; then # avoid aptitude, since it crashed with qemu-arm-static for some reason... # qemu:handle_cpu_signal received signal outside vCPU context sudo DEBIAN_FRONTEND=noninteractive $eatmydata /usr/lib/pbuilder/pbuilder-satisfydepends-experimental elif command -v aptitude >/dev/null && [ -x /usr/lib/pbuilder/pbuilder-satisfydepends-aptitude ]; then sudo DEBIAN_FRONTEND=noninteractive $eatmydata /usr/lib/pbuilder/pbuilder-satisfydepends-aptitude else sudo DEBIAN_FRONTEND=noninteractive $eatmydata /usr/lib/pbuilder/pbuilder-satisfydepends fi ) # Building the package binopts= if [ "${ICINGA_BUILD_ARCH}" != "${ICINGA_BUILD_DEB_DEFAULT_ARCH}" ]; then binopts="-B" fi echo "[ Building binary package ]" ( set -ex cd "${BUILDDIR}/${ICINGA_BUILD_PROJECT}" dpkg-buildpackage -rfakeroot -uc -us $binopts ) if [ -d "${CCACHE_DIR}" ]; then cached_files="$(find "${CCACHE_DIR}" -type f ! -name ccache.conf ! -name stats | wc -l)" if [ "$cached_files" -eq 0 ]; then echo "Removing empty ccache dir: ${CCACHE_DIR}" rm -rf "${CCACHE_DIR}" else echo "[ ccache stats ]" ccache -s | tee build/ccache-stats.txt # (--show-stats) echo fi fi echo "[ Running Lintian ]" ( set -ex cd "${BUILDDIR}/${ICINGA_BUILD_PROJECT}/" lintian | tee ../lintian-binary.log ) || [ "${ICINGA_BUILD_IGNORE_LINT}" -eq 1 ] if [ "${ICINGA_BUILD_CLEANUP:=1}" -gt 0 ]; then echo "[ Cleanup Build Directory ]" ( set -ex chmod -R u+w "${BUILDDIR:?}/${ICINGA_BUILD_PROJECT}/" rm -rf "${BUILDDIR:?}/${ICINGA_BUILD_PROJECT}/" ) fi