#!/bin/bash

MIRROR_CHROOT=http://ftp.de.debian.org/debian
MIRROR_CHROOT_SECURITY=http://security.debian.org/
MIRROR_BINARY=http://ftp.de.debian.org/debian
MIRROR_BINARY_SECURITY=http://security.debian.org/
MIRROR_BOOTSTRAP="$MIRROR_CHROOT"

. auto/kanotix

# preset kanotix defaults
export LB_PACKAGES_LISTS="kanotix-master"
export LB_DISTRIBUTION="wheezy"
export LB_BOOTLOADER="grub2"
export LB_SYSLINUX_MENU_LIVE_ENTRY="Kanotix"
export LB_LINUX_PACKAGES="linux-image linux-headers"

echo "We build $LB_DISTRIBUTION"
# use flag for security and updates
# since bullseye the name for security has changed, disable for now
# live-build default is true
KSECURITY="true"
KUPDATES="true"

# since buster we need packages in debootstrap not avaible in earlier distributions
# for stretch also use mime-support (fix build error)

case "$LB_DISTRIBUTION" in
wheezy)
        KDEBOOTSTRAPOPTIONS="--include=apt-transport-https,ca-certificates --exclude=nano"
	;;
jessie)
        KDEBOOTSTRAPOPTIONS="--include=apt-transport-https,ca-certificates --exclude=nano"
	;;
stretch)
        KDEBOOTSTRAPOPTIONS="--include=apt-transport-https,ca-certificates,mime-support --exclude=nano"
	;;
buster)
        KDEBOOTSTRAPOPTIONS="--include=apt-transport-https,ca-certificates,gpg,gpg-agent,mime-support --exclude=nano"
	;;
bullseye)
        KDEBOOTSTRAPOPTIONS="--include=apt-transport-https,ca-certificates,gpg,gpg-agent,mime-support --exclude=nano"
        KSECURITY="true"
	;;
*)
        KDEBOOTSTRAPOPTIONS="--include=apt-transport-https,ca-certificates,gpg,gpg-agent,mime-support --exclude=nano"
	;;
esac

lb config noauto \
	--iso-volume KANOTIX \
	--iso-preparer kanotix.com \
	--iso-publisher kanotix.com \
	--binary-images iso-hybrid \
	--chroot-filesystem squashfs \
	--debian-installer false \
	--apt apt \
	--apt-recommends false \
	--bootappend-live 'utc=no timezone=Europe/Berlin locales=de keyboard-layouts=de keyboard-variant=nodeadkeys splash' \
	--archive-areas "main contrib non-free" \
	--debootstrap-options "${KDEBOOTSTRAPOPTIONS}" \
	--repositories "" \
	--security "${KSECURITY}" \
	--updates "${KUPDATES}" \
	--checksums md5 \
	--syslinux-timeout 5 \
	--syslinux-menu true \
	--syslinux-splash config/binary_syslinux/splash.png \
	--memtest memtest86+ \
	--mirror-bootstrap ${MIRROR_BOOTSTRAP} \
	--mirror-chroot ${MIRROR_CHROOT} \
	--mirror-chroot-security ${MIRROR_CHROOT_SECURITY} \
	--mirror-binary ${MIRROR_BINARY} \
	--mirror-binary-security ${MIRROR_BINARY_SECURITY} \
	--binary-indices true \
	--firmware-binary false \
	--firmware-chroot false \
	"${@}" || exit $?

. config/binary
. config/bootstrap
. config/chroot

# architecture and distribution depending stuff (e.g. kernel)
case "$LB_DISTRIBUTION" in
wheezy)
	LB_REPOSITORIES+="dragonfire dragonfire-acritox"
	case $LB_ARCHITECTURE in
	amd64) LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="amd64";;
	i386)  LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="686-pae";;
	esac
	;;
jessie)
    LB_REPOSITORIES+="dragonfire spitfire spitfire-acritox"
	case $LB_ARCHITECTURE in
	amd64) LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="amd64";;
	i386)  LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="686-pae";;
	esac
	;;
stretch)
    LB_REPOSITORIES+="dragonfire spitfire steelfire"
	case $LB_ARCHITECTURE in
	amd64) LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="amd64";;
	i386)  LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="686-pae";;
	esac
	;;
buster)
    LB_REPOSITORIES+="dragonfire spitfire steelfire silverfire"
	case $LB_ARCHITECTURE in
	amd64) LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="amd64";;
	i386)  LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="686-pae";;
	esac
	;;
bullseye)
    LB_REPOSITORIES+="spitfire steelfire silverfire speedfire"
	case $LB_ARCHITECTURE in
	amd64) LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="amd64";;
	i386)  LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="686-pae";;
	esac
	;;
*)
    LB_REPOSITORIES+="spitfire steelfire silverfire speedfire"
	case $LB_ARCHITECTURE in
	amd64) LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="amd64";;
	i386)  LB_LINUX_PACKAGES="linux-image linux-headers"; LB_LINUX_FLAVOURS="686-pae";;
	esac
	;;
esac

if ! [ "$LB_ARCHITECTURE" = "i386" ]; then
	LB_REPOSITORIES+=" lo"
fi

[ "$LB_BOOTLOADER" = "burg" ] && LB_REPOSITORIES+=" burg"
grep -wq retabell <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" retabell"
grep -wq silverfire-extra <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" silverfire-extra llvm11"
grep -wq acritox <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" acritox dragonfire-acritox"
grep -wq hellfire <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" hellfire"
grep -wq trinity <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" trinity"
grep -wq -e virtualbox -e vbox <<<"$LB_PACKAGES $LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" vbox"
grep -wq bmguck <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" bmguck"
grep -wq -e opera <<<"$LB_PACKAGES $LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" opera"
grep -wq google-chrome <<<"$LB_PACKAGES $LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" google-chrome"
grep -wq -e hangouts -e google-talkplugin <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" google-talkplugin"
grep -wq google-earth <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" google-earth"
grep -wq vivaldi <<<"$LB_PACKAGES $LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" vivaldi"
grep -wq mesa <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" mesa"
grep -wq msa9 <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" mesa-9"
grep -wq ms11 <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" mesa-11"
grep -wq msos <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" mesa-steamos"
grep -wq nvidia <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" nvidia"
grep -wq fglrx <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" fglrx"
if grep -wq steam <<<"$LB_PACKAGES_LISTS"; then
    if [ "$LB_DISTRIBUTION" = "wheezy" ]; then
        LB_REPOSITORIES+=" steam steam-wheezy"
    else
        LB_REPOSITORIES+=" steam"
    fi
fi
grep -wq wine-staging <<<"$LB_PACKAGES $LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" wine-staging"
grep -wq iceweasel <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" iceweasel"
grep -wq firefox <<<"$LB_PACKAGES_LISTS"
grep -wq midori <<<"$LB_PACKAGES_LISTS"
grep -wq netsurf-gtk <<<"$LB_PACKAGES_LISTS"
grep -wq silverlight <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" silverlight"
grep -wq spotify <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" spotify"
grep -wq dropbox <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" dropbox"
grep -wq skypeforlinux <<<"$LB_PACKAGES_LISTS" && LB_REPOSITORIES+=" skype-stable"

# Languages
grep -wq extra_cz <<<"$LB_PACKAGES_LISTS"

# special hack
if grep -wq gfxdetect <<<"$LB_PACKAGES_LISTS"; then
    LB_REPOSITORIES+=" nvidia mesa-11"
    LB_LINUX_FLAVOURS="generic"
fi

# Build with debpool
if grep -wq debpool <<<"$LB_PACKAGES_LISTS"; then
    mkdir -p config/chroot_debpool
    if [ -d /tmp/debpool ]; then
     cp -rf /tmp/debpool/*.deb config/chroot_debpool/
    fi
    cp -rf config/prepare_debpool/* config/chroot_debpool/
fi

lb config noauto --linux-packages "$LB_LINUX_PACKAGES" --linux-flavours "$LB_LINUX_FLAVOURS" --repositories "$LB_REPOSITORIES"

# Fetch kanotix-scripts if necessary
mkdir -p config/chroot_local-includes/usr/local/bin
grep -oe '^[^ #]*' scripts.urls | wget -i- -N -q -P config/chroot_local-includes/usr/local/bin
chmod 755 config/chroot_local-includes/usr/local/bin/*sh || :

case "$LB_DISTRIBUTION" in
wheezy)
    MIRROR_CHROOT=http://archive.debian.org/debian
    MIRROR_BINARY=http://archive.debian.org/debian
    MIRROR_CHROOT_SECURITY=http://security.debian.org/
    MIRROR_BINARY_SECURITY=http://security.debian.org/
    MIRROR_BOOTSTRAP="$MIRROR_CHROOT"
    lb config noauto \
	--mirror-bootstrap ${MIRROR_BOOTSTRAP} \
	--parent-mirror-bootstrap ${MIRROR_BOOTSTRAP} \
	--mirror-chroot ${MIRROR_CHROOT} \
	--parent-mirror-chroot ${MIRROR_CHROOT} \
	--mirror-chroot-security ${MIRROR_CHROOT_SECURITY} \
	--mirror-binary ${MIRROR_BINARY} \
	--parent-mirror-binary ${MIRROR_BINARY} \
	--mirror-binary-security ${MIRROR_BINARY_SECURITY} \
	--updates false
    ;;
esac