|
|
|
#! /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=
|
|
|
|
DEPS=
|
|
|
|
|
|
|
|
if test -e debian/control.in -a ! -e debian/control; then
|
|
|
|
function pkg_exists() {
|
|
|
|
test -n "$(${DO} apt-cache policy -q ${1})"
|
|
|
|
}
|
|
|
|
function AX_PKG_CHECK() {
|
|
|
|
local DEV_DEB_DIST_PKG=
|
|
|
|
local DEV_DIST_PKG=
|
|
|
|
local pkg=
|
|
|
|
eval $4
|
|
|
|
if test -z "$2"; then
|
|
|
|
pkg=$1
|
|
|
|
else
|
|
|
|
pkg=$2
|
|
|
|
fi
|
|
|
|
pkg=${DEV_DEB_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-dev}
|
|
|
|
if pkg_exists "${pkg}"; then
|
|
|
|
echo $pkg
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
function AX_PKG_REQUIRE() {
|
|
|
|
local DEV_DEB_DIST_PKG=
|
|
|
|
local DEV_DIST_PKG=
|
|
|
|
local pkg=
|
|
|
|
eval $6
|
|
|
|
if test -z "$2"; then
|
|
|
|
pkg=$1
|
|
|
|
else
|
|
|
|
pkg=$2
|
|
|
|
fi
|
|
|
|
if test -n "$4"; then
|
|
|
|
for f in $pkg $4; do
|
|
|
|
if pkg_exists "${f}-dev"; then
|
|
|
|
pkg=$f
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
echo ${DEV_DEB_DIST_PKG:-${DEV_DIST_PKG:-${pkg}}-dev}
|
|
|
|
}
|
|
|
|
DEPS+=" $(eval $(sed -n '/^ *AX_PKG_REQUIRE/{s,^ *\(AX_PKG_REQUIRE\) *(\(.*\)).*,\1 \2,;s.\[\([^]]*\)\],\?."\1".g;s,$,;,g;p}' configure.ac))"
|
|
|
|
DEPS+=" $(eval $(sed -n '/^ *AX_PKG_CHECK/{s,^ *\(AX_PKG_CHECK\) *(\(.*\)).*,\1 \2,;s.\[\([^]]*\)\],\?."\1".g;s,$,;,g;p}' configure.ac))"
|
|
|
|
for f in $(sed -n 's, *AX_\(DEB\|ALL\)_DEPEND_IFEXISTS(\([^)]*\)).*,\2,p' configure.ac); do
|
|
|
|
if pkg_exists "${f}"; then
|
|
|
|
DEPS+=" ${f}"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
for f in $(sed -n 's, *AX_\(DEB\|ALL\)_DEPEND_IFEXISTS_DEV(\([^)]*\)).*,\2,p' configure.ac); do
|
|
|
|
if pkg_exists "${f}-dev"; then
|
|
|
|
DEPS+=" ${f}-dev"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
for f in $(sed -n 's, *AX_\(DEB\|ALL\)\(_BUILD\)\?_DEPEND(\([^)]*\)).*,\3,p' configure.ac); do
|
|
|
|
DEPS+=" ${f}"
|
|
|
|
done
|
|
|
|
for f in $(sed -n 's, *AX_\(DEB\|ALL\)\(_BUILD\)\?_DEPEND_DEV(\([^)]*\)).*,\3,p' configure.ac); do
|
|
|
|
DEPS+=" ${f}-dev"
|
|
|
|
done
|
|
|
|
trap "rm debian/control" INT TERM EXIT
|
|
|
|
sed 's,@\(\(ALL\|DEB\)_DEPEND_IFEXISTS\|\(ALL\|DEB\)_BUILD_DEPEND\|\(ALL\|DEB\)_DEPEND\)@,,g' debian/control.in | \
|
|
|
|
sed 's,@[^@]*@, dummytext,g' > debian/control
|
|
|
|
fi
|
|
|
|
|
|
|
|
install dpkg-dev
|
|
|
|
|
|
|
|
DEPS+=" $(LANG= ${DO} dpkg-checkbuilddeps 2>&1 | 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
|
|
|
|
|
|
|
|
FILES="$(LANG= ${DO} dpkg-checkbuilddeps 2>&1 | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}')"
|
|
|
|
if test -n "${FILES}"; then
|
|
|
|
echo "**** ERROR: Cannot install: " $FILES
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "**** Success: All Dependencies Resolved"
|