#! /bin/bash -ex

## @id $Id$

## Resolve Debian Build Dependencies
## Installs all the required packages
## Call: ./resolve-debbuilddeps 'name of build schroot'
## e.g. call: ./resolve-debbuilddeps trusty_amd64

##       1         2         3         4         5         6         7         8
## 45678901234567890123456789012345678901234567890123456789012345678901234567890

SCHROOTNAME="$1"
if test -n "${SCHROOTNAME}"; then
  DO="schroot -c "${SCHROOTNAME}" --"
  SUDO="schroot -c "${SCHROOTNAME}" -u root -d / --"
else
  DO=""
  if grep -q '/docker' /proc/1/cgroup; then
      SUDO=""
  else
      SUDO="sudo"
  fi
fi

function install() {
    if ${SUDO} apt-get -y install $*; then
        return 0
    else
        return 1
    fi
}

TO_INSTALL=

if test -e debian/control.in -a ! -e debian/control; then
    for f in $(sed -n 's, *AX_DEB_DEPEND_IFEXISTS(\([^)]*\)).*,\1,p' configure.ac); do
        if test -n "$(${DO} apt-cache policy -q ${f})" && ! "$(${DO} apt-cache policy ${f} 2>&1 | grep -q 'N: Unable to locate package')" && ! ${DO} dpkg -l "${f}"; then
            TO_INSTALL+=" ${f}"
        fi
    done
    trap "rm debian/control" INT TERM EXIT
    sed 's,@DEB_DEPEND_IFEXISTS@,,g' debian/control.in | \
        sed 's,@[^@]*@, dummytext,g' > debian/control
fi

install dpkg-dev
DEPS=$(LANG= ${DO} dpkg-checkbuilddeps 2>&1 || true)
DEPS=$(echo "$DEPS" | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}')

for pa in ${DEPS}; do
    if test ${pa//|/} = ${pa}; then
        TO_INSTALL+=" ${pa}"
        continue;
    fi
    success=0
    for p in ${pa//|/ }; do
        if install ${TO_INSTALL} ${p}; then
            TO_INSTALL+=" ${p}"
            success=1
            break
        fi
    done
    if test ${success} -eq 0; then
        echo "**** Error: Installation Failed: ${pa}"
        exit 1
    fi
done

if test -n "${TO_INSTALL}" && ! install ${TO_INSTALL}; then
    echo "**** Error: Installation Failed: ${TO_INSTALL}"
    exit 1
fi

echo "**** Success: All Dependencies Resolved"
