#!/bin/sh
# This script installs a building environment using sbuild as a
# builder for the "gbp buildpackage" command line. The sbuild
# chroot uses an union FS (ie: AUFS in Jessie and Trusty,
# OverlayFS on newer kernels) as this is the fastest backend,
# and that unionFS scratch disk is stored on tmpfs, as this
# is the fastest way to run sbuild.

# Author: Thomas Goirand <zigo@debian.org>
# License: Apache-2.0

set -e
set -x

OSTACK_RELEASE=newton
BUILDER_SYS_USERNAME="jenkins"
BUILDER_HOMEDIR=/home/jenkins
GITREPO_ROOT=${WORKSPACE}

DISTRO_VENDOR=$(lsb_release --id -s | awk '{print tolower($0)}')
HOST_DISTRO_NAME=$(lsb_release -c -s)

####################
# Parse parameters #
####################
# There's 3 OS name concept concepts here:
# HOST_DISTRO_NAME: the os of the host (example: jessie, xenial)
# SBUILD_CHROOT_DISTRO_NAME: the name of the distro to setup in the chroot (example: jessie, xenial)
# SBUILD_CHROOT_NAME: the name of the chroot we want to setup (example: jessie-newton or jessie-newton-backports)
DO_EXIT="no"
for i in $@ ; do
    case "${1}" in
    "--sbuild-chroot-name")
        if [ -z "${2}" ] ; then echo "Parameter for option --sbuild-chroot-name is missing" > /dev/stderr ; DO_EXIT="yes" ; fi
        SBUILD_CHROOT_NAME="${2}"
        shift
        shift
    ;;
    "--sbuild-chroot-distro-name")
        if [ -z "${2}" ] ; then echo "Parameter for option --sbuild-chroot-distro-name is missing" > /dev/stderr ; DO_EXIT="yes" ; fi
        SBUILD_CHROOT_DISTRO_NAME="${2}"
        shift
        shift
    ;;
    esac
done

if [ -z "${SBUILD_CHROOT_NAME}" ] ; then
    SBUILD_CHROOT_NAME="${HOST_DISTRO_NAME}-${OSTACK_RELEASE}"
fi

if [ -z "${SBUILD_CHROOT_DISTRO_NAME}" ] ; then
    SBUILD_CHROOT_DISTRO_NAME=${HOST_DISTRO_NAME}
fi

if [ ${DO_EXIT} = "yes" ] ; then
    echo "Parameters not validated: will exit now!" > /dev/stderr
    exit 1
fi
########################
# End parse parameters #
########################

# Some configuration stuff
CLOSEST_DEBIAN_MIRROR=http://ftp.fr.debian.org/debian

PATH=/usr/bin:/usr/sbin:/bin:/sbin
APT="DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends"


disable_init_start () {
    TMPFILE=$(mktemp)
    echo "#!/bin/sh

exit 101

" >${TMPFILE}
    sudo cp ${TMPFILE} /usr/sbin/policy-rc.d
    sudo chmod +x /usr/sbin/policy-rc.d
    rm ${TMPFILE}
}

enable_init_start () {
    sudo rm -f /usr/sbin/policy-rc.d
}

# This gives the closest mirror in the current cloud where we're building
calculate_nodepool_mirror_host () {
    if ! [ -r /etc/nodepool/provider ] ; then
        echo "Could not read /etc/nodepool/provider"
        exit 1
    else
        . /etc/nodepool/provider
        NODEPOOL_MIRROR_HOST=${NODEPOOL_MIRROR_HOST:-mirror.$NODEPOOL_REGION.$NODEPOOL_CLOUD.openstack.org}
        NODEPOOL_MIRROR_HOST=$(echo $NODEPOOL_MIRROR_HOST|tr '[:upper:]' '[:lower:]')
    fi
}

# This is needed to install the backported version of dpkg
add_bpo_repo_to_host () {
    calculate_nodepool_mirror_host

    echo "deb http://${NODEPOOL_MIRROR_HOST}/debian-openstack jessie-newton-backports main
deb-src http://${NODEPOOL_MIRROR_HOST}/debian-openstack jessie-newton-backports main
" >/tmp/jessie-newton-backports.list
    sudo cp /tmp/jessie-newton-backports.list /etc/apt/sources.list.d/jessie-newton-backports.list

    # Add the repo key
    echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

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
=vKaS
-----END PGP PUBLIC KEY BLOCK-----" >/tmp/repo-key.gpg
    sudo apt-key add /tmp/repo-key.gpg
    rm /tmp/repo-key.gpg
    sudo apt-get update
}

install_all_software () {
    echo "===> Installing required packages to run sbuild"
    sudo apt-get update
    sudo ${APT} git-buildpackage eatmydata build-essential \
        fakeroot pristine-tar ssl-cert sudo debootstrap \
        openstack-pkg-tools lsb-release gnupg haveged

    # Jessie needs lintian from jessie-backports, because we are using
    # newer debhelper. New lintian prevents errors like
    # postinst-must-call-ldconfig
    if [ "${HOST_DISTRO_NAME}" = "jessie" ] ; then
        add_bpo_repo_to_host

        # Use lintian from backports
        DEBIAN_FRONTEND=noninteractive sudo apt-get install -y --no-install-recommends -t jessie-backports lintian
    # This code thinks anything else than jessie is higher version of lintian
    else
        DEBIAN_FRONTEND=noninteractive sudo apt-get install -y --no-install-recommends lintian
    fi

    # Jessie needs sbuild from jessie-backports, because it has the
    # $clean_source = 0 option
    if [ "${HOST_DISTRO_NAME}" = "jessie" ] ; then
        add_bpo_repo_to_host

        # Use sbuild from backports, as we need the $clean_source = 0 option
        DEBIAN_FRONTEND=noninteractive sudo apt-get install -y --no-install-recommends -t jessie-backports sbuild

        # Patch libdpkg-perl so that it ignores .gitreview files
        # This is a hack which should be replaced by a newer version of dpkg
        THISDIR=$(pwd)
        cd /usr/share/perl5/Dpkg/Source
        if [ -e /usr/share/openstack-pkg-tools/libdpkg-perl-gitreview.patch ] ; then
            patch -p1 </usr/share/openstack-pkg-tools/libdpkg-perl-gitreview.patch
        else
            patch -p1 <${THISDIR}/misc/libdpkg-perl-gitreview.patch
        fi
        cd ${THISDIR}

    # This code thinks anything else than jessie is higher version of sbuild
    else
        DEBIAN_FRONTEND=noninteractive sudo apt-get install -y --no-install-recommends sbuild
    fi
}

configure_dotgitconfig () {
    git config user.name "OpenStack Package Builder"
    git config user.email "openstack-infra@lists.openstack.org"
}

# This key will be used to sign the built package
gen_package_build_key () {
    echo "===> Generating builder's GPG key to sign packages"
    if ! [ -d ${BUILDER_HOMEDIR}/.gnupg ] ; then
        mkdir -p ${BUILDER_HOMEDIR}/.gnupg
        chmod 755 ${BUILDER_HOMEDIR}/.gnupg
    fi
    if ! [ -r ${BUILDER_HOMEDIR}/.gnupg/gpg.conf ] ; then
        echo "keyserver hkp://pool.sks-keyservers.net
personal-digest-preferences SHA256
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
cert-digest-algo SHA256
" >${BUILDER_HOMEDIR}/.gnupg/gpg.conf
    fi
    if ! [ -r ${BUILDER_HOMEDIR}/.gnupg/pkgos-gen-key-batchfile ] ; then
        echo "
%echo Generating a basic OpenPGP key
Key-Type: RSA
Key-Length: 4096
Name-Real: Jenkins
Name-Email: ${BUILDER_SYS_USERNAME}@openstack.org
Expire-Date: 0
" >${BUILDER_HOMEDIR}/.gnupg/pkgos-gen-key-batchfile
    fi
    sudo chown -R ${BUILDER_SYS_USERNAME}:${BUILDER_SYS_USERNAME} ${BUILDER_HOMEDIR}/.gnupg
    su ${BUILDER_SYS_USERNAME} -c "gpg --gen-key --batch ${BUILDER_HOMEDIR}/.gnupg/pkgos-gen-key-batchfile"
}

configure_sbuild () {
    echo "===> Setting-up sbuild's GPG key"
    # Setup the gpg key for sbuild
    sudo mkdir -p /root/.gnupg
    sudo chmod 600 /root/.gnupg
    sudo gpg --list-keys
    sudo sbuild-update --keygen

    # Add the builder as a sbuild user
    sudo sbuild-adduser ${BUILDER_SYS_USERNAME}

    echo "===> Creating sbuild's schroot chroot using a directory backend (ie: not tarball)"
    # Create the actual schroot env
    if ! [ -e /var/lib/sbuild/${SBUILD_CHROOT_NAME} ] ; then
        sudo sbuild-createchroot ${SBUILD_CHROOT_DISTRO_NAME} /var/lib/sbuild/${SBUILD_CHROOT_DISTRO_NAME} ${CLOSEST_DEBIAN_MIRROR}
    fi

    # Let's use a RAMDISK for sbuild chroot to build packages:
    # that's much faster than the HDD backend
    echo "===> Mounting /var/lib/schroot/union/{overlay,underlay} using tmpfs to speed-up build"
    TMPFILE=$(mktemp)
    cp /etc/fstab ${TMPFILE}
#    echo "tmpfs           /var/lib/schroot/union/overlay        tmpfs defaults        0       0
#tmpfs           /var/lib/schroot/union/underlay        tmpfs defaults        0       0" >>${TMPFILE}
#    sudo cp ${TMPFILE} /etc/fstab
#    rm ${TMPFILE}
#    sudo mount /var/lib/schroot/union/overlay
#    sudo mount /var/lib/schroot/union/underlay
    rm ${TMPFILE}

    echo "===> Fixing-up newly created schroot's chroot config and /etc/git-buildpackage/gbp.conf"
    # Make sure git-buildpackage is using sbuild
    sudo sed -i 's/^[ #\t]*builder[ #\t]*=.*/builder = sbuild -v --no-apt-update/' /etc/git-buildpackage/gbp.conf
    # Disable clean outside of the chroot (note: this actually doesn't work due to a bug,
    # but let's keep it there still, when we found out how to fix git-buildpackage).
    sudo sed -i 's/^[ #\t]*cleaner[ #\t]*=.*/cleaner = \/bin\/true/' /etc/git-buildpackage/gbp.conf

    # Fix from jessie to jessie-newton
    # or jessie to jessie-newton-backports
    if ! [ "${SBUILD_CHROOT_NAME}" = "${SBUILD_CHROOT_DISTRO_NAME}" ] ; then
        # Fetch the full chroot.d filename
        SBUILD_SRC_NAME=$(ls /etc/schroot/chroot.d/${SBUILD_CHROOT_DISTRO_NAME}-amd64-sbuild-*)
        SBUILD_CHROOTD_FN=$(echo ${SBUILD_SRC_NAME} | sed s/${SBUILD_CHROOT_DISTRO_NAME}/${SBUILD_CHROOT_NAME}/)

        mv ${SBUILD_SRC_NAME} ${SBUILD_CHROOTD_FN}
        sed -i s/${SBUILD_CHROOT_DISTRO_NAME}-amd64-sbuild/${SBUILD_CHROOT_NAME}-amd64-sbuild/ ${SBUILD_CHROOTD_FN}
        mv /var/lib/sbuild/${SBUILD_CHROOT_DISTRO_NAME} /var/lib/sbuild/${SBUILD_CHROOT_NAME}
        sed -i "s#/var/lib/sbuild/${SBUILD_CHROOT_DISTRO_NAME}#/var/lib/sbuild/${SBUILD_CHROOT_NAME}#" ${SBUILD_CHROOTD_FN}
    fi

    # Switch from tarball to directory (ie: aufs) based build
    # (again, that's much faster...)
    sudo sed -i -e "s/^[ \t]*type[ \t]*=.*/type=directory/" ${SBUILD_CHROOTD_FN}
    # Tell that we'd like to use AUFS as backend for union FS
    # note that for Stretch and Xenial, we should switch to overlay instead
    case ${HOST_DISTRO_NAME} in
    jessie|trusty)
        UNION_TYPE=aufs
    ;;
    *)
        UNION_TYPE=overlay
    ;;
    esac
    if ! grep -q union-type ${SBUILD_CHROOTD_FN} ; then
        TMPFILE=$(mktemp)
        cp ${SBUILD_CHROOTD_FN} ${TMPFILE}
        echo "union-type=${UNION_TYPE}" >>${TMPFILE}
        sudo cp ${TMPFILE} ${SBUILD_CHROOTD_FN}
        rm ${TMPFILE}
    fi
    # Just to make sure in case union-type was there already (it's normally not there),
    # we overwrite it.
    sudo sed -i -e "s/^[ \t]*union-type[ \t]*=.*/union-type=${UNION_TYPE}/" ${SBUILD_CHROOTD_FN}

    # Configure ~/.sbuildrc to use our new sbuild chroot
    GPG_KEY_ID=$(su jenkins -c "gpg --list-keys ${BUILDER_SYS_USERNAME}" | grep ^pub | awk '{print $2}' | cut -d/ -f2)
    DOT_SBUILDRC_PATH=${BUILDER_HOMEDIR}/.sbuildrc
    if ! [ -r "${DOT_SBUILDRC_PATH}" ] ; then
        echo "\$build_arch_all = 1;
\$build_source = 1;
\$distribution = '"${SBUILD_CHROOT_NAME}"';
# We may run lintian by hand later on
# not need to get git-buildpackage to do it
\$run_lintian = 0;

# We don't want to run clean of source tree before
# entering the chroot, because that would mean we need
# some of the build dependencies.
\$clean_source = 0;

# Needed for sbuild to show output in deb-auto-backports
\$verbose = 1;

# In case we decide to no sign packages, uncomment this:
#\$pgp_options = '-us -uc';

\$key_id = '${GPG_KEY_ID}';

# Needed for example for python-glance-store, which as in
# build-depends-indep: python3-all (>= 3.5) | python3-enum34
\$resolve_alternatives = 1;

# This is for perl, just leave it...
1;
" >${DOT_SBUILDRC_PATH}
    fi

    # Add our repos to the sbuild chroot
    echo "deb http://${NODEPOOL_MIRROR_HOST}/debian-openstack jessie-newton-backports main
deb-src http://${NODEPOOL_MIRROR_HOST}/debian-openstack jessie-newton-backports main
" >/tmp/jessie-newton-backports.list
    sudo cp /tmp/jessie-newton-backports.list /var/lib/sbuild/${SBUILD_CHROOT_NAME}/etc/apt/sources.list.d/jessie-newton-backports.list
    echo "deb http://${NODEPOOL_MIRROR_HOST}/debian-openstack jessie-newton main
deb-src http://${NODEPOOL_MIRROR_HOST}/debian-openstack jessie-newton main
" >/tmp/jessie-newton.list
    sudo cp /tmp/jessie-newton.list /var/lib/sbuild/${SBUILD_CHROOT_NAME}/etc/apt/sources.list.d/jessie-newton.list
    # Add the repo key
    echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

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
=vKaS
-----END PGP PUBLIC KEY BLOCK-----" >/tmp/repo-key.gpg
    sudo cp /tmp/repo-key.gpg /var/lib/sbuild/${SBUILD_CHROOT_NAME}/repo-key.gpg
    sudo chroot /var/lib/sbuild/${SBUILD_CHROOT_NAME} apt-key add /repo-key.gpg
    rm /tmp/repo-key.gpg /var/lib/sbuild/${SBUILD_CHROOT_NAME}/repo-key.gpg
    sudo sbuild-update -udcar ${SBUILD_CHROOT_NAME}
}

disable_init_start
install_all_software
configure_dotgitconfig
gen_package_build_key
configure_sbuild
enable_init_start
