Template to bootstrap configure/automake projects for C++, libtool, Qt, NodeJS, PHP, Shell-Scripts, etc.
Extends autotools, by building packages for Debian and RPM, specifying generic library dependencies, creating desktop applications with icons, etc.
https://mrw.sh/development/bootstrap-build-environment
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.0 KiB
74 lines
2.0 KiB
9 years ago
|
#! /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"
|
||
|
|
||
|
function install() {
|
||
|
if test -n "${SCHROOTNAME}"; then
|
||
|
if schroot -c "${SCHROOTNAME}" -u root -d / -- apt-get -y install $*; then
|
||
|
return 0
|
||
|
fi
|
||
|
else
|
||
|
if apt-get -y install $*; then
|
||
|
return 0
|
||
|
fi
|
||
|
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 "$(apt-cache policy -q ${f})" && ! 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
|
||
|
|
||
|
if test -n "${SCHROOTNAME}"; then
|
||
|
schroot -c "${SCHROOTNAME}" -u root -d / -- apt-get -y install dpkg-dev
|
||
|
DEPS=$(schroot -c "${SCHROOTNAME}" -- dpkg-checkbuilddeps 2>&1 || true)
|
||
|
else
|
||
|
apt-get -y install dpkg-dev
|
||
|
DEPS=$(dpkg-checkbuilddeps 2>&1 || true)
|
||
|
fi
|
||
|
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"
|