#!/bin/bash
# Pbuilder configuration for OSSEC-HIDS. Used by generate_ossec.sh with
#   sudo DIST=<codename> ARCH=<arch> pbuilder create|update|... --configfile contrib/debian-packages/pbuilderrc
# Codenames: update when new releases exist.
UNSTABLE_CODENAME="sid"
TESTING_CODENAME="trixie"
STABLE_CODENAME="bookworm"
STABLE_BACKPORTS_SUITE="$STABLE_CODENAME-backports"

# List of Debian suites (codenames and aliases).
DEBIAN_SUITES=($UNSTABLE_CODENAME $TESTING_CODENAME $STABLE_CODENAME
    "unstable" "testing" "stable")

# List of Ubuntu suites. LTS: noble (24.04), jammy (22.04), focal (20.04), bionic (18.04).
UBUNTU_SUITES=("noble" "jammy" "focal" "bionic" "xenial")

# Mirrors. Override via DEBIAN_MIRROR / UBUNTU_MIRROR if needed.
DEBIAN_MIRROR="deb.debian.org"
UBUNTU_MIRROR="archive.ubuntu.com"
UBUNTU_PORTS_MIRROR="ports.ubuntu.com"

# Optionally use the changelog of a package to determine the suite to use if none set.
if [ -z "${DIST}" ] && [ -r "debian/changelog" ]; then
    DIST=$(dpkg-parsechangelog | awk '/^Distribution: / {print $2}')
    DIST="${DIST%%-*}"
    if $(echo "experimental UNRELEASED" | grep -q $DIST); then
        DIST="$UNSTABLE_CODENAME"
    fi
fi

: ${DIST:="$(lsb_release --short --codename 2>/dev/null)"}

case "$DIST" in
    unstable)
        DIST="$UNSTABLE_CODENAME"
        ;;
    testing)
        DIST="$TESTING_CODENAME"
        ;;
    stable)
        DIST="$STABLE_CODENAME"
        ;;
esac

: ${ARCH:="$(dpkg --print-architecture)"}

NAME="$DIST"
if [ -n "${ARCH}" ]; then
    NAME="$NAME-$ARCH"
    DEBOOTSTRAPOPTS=("--arch" "$ARCH" "${DEBOOTSTRAPOPTS[@]}")
fi
BASETGZ="/var/cache/pbuilder/$NAME-base.tgz"
# For cowbuilder: BASEPATH="/var/cache/pbuilder/$NAME/base.cow/"
DISTRIBUTION="$DIST"
BUILDRESULT="/var/cache/pbuilder/$NAME/result/"
APTCACHE="/var/cache/pbuilder/$NAME/aptcache/"
BUILDPLACE="/var/cache/pbuilder/build/"

if $(echo ${DEBIAN_SUITES[@]} | grep -q $DIST); then
    MIRRORSITE="http://$DEBIAN_MIRROR/debian/"
    COMPONENTS="main contrib non-free"
    DEBOOTSTRAPOPTS=("${DEBOOTSTRAPOPTS[@]}" "--keyring=/usr/share/keyrings/debian-archive-keyring.gpg")
elif $(echo ${UBUNTU_SUITES[@]} | grep -q $DIST); then
    case "$ARCH" in
        i386|amd64)
            MIRRORSITE="http://$UBUNTU_MIRROR/ubuntu/"
            ;;
        arm64)
            MIRRORSITE="http://$UBUNTU_PORTS_MIRROR/ubuntu-ports/"
            DEBOOTSTRAP="qemu-debootstrap"
            PBUILDERSATISFYDEPENDSCMD=/usr/lib/pbuilder/pbuilder-satisfydepends-experimental
            ;;
        *)
            MIRRORSITE="http://$UBUNTU_MIRROR/ubuntu/"
            ;;
    esac
    COMPONENTS="main restricted universe multiverse"
    DEBOOTSTRAPOPTS=("${DEBOOTSTRAPOPTS[@]}" "--keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg")
else
    echo "Unknown distribution: $DIST (supported: Debian ${DEBIAN_SUITES[*]}, Ubuntu ${UBUNTU_SUITES[*]})"
    exit 1
fi
