#!/bin/bash PROG=$0 function usage () { echo "usage: $PROG [ --no-clean ] [ -m ] -s sources.list [ -o builddir ] " 1>&2 } function error () { code=$1 shift echo ${PROG}: $* 1>&2 exit $code } function indent () { sed -e 's/^/ /' } CLEAN=false while [ $# -gt 0 ] ; do case $1 in --no-clean) CLEAN=false; shift;; --clean) CLEAN=true; shift;; -o) ROOT=$2; shift 2;; -s) SOURCES="-s $2" ; shift 2;; -m) MIRROR="-m" ; shift 1;; --help) usage ; exit 0;; *) ARGS="$ARGS $1"; shift;; esac done if [ -z "$ARGS" ] ; then usage exit 1 fi if [ -z "$SOURCES" ] ; then usage error 5 "No sources.list specified." fi if [ -z "$ROOT" ] ; then ROOT=build-env.$TREE fi TREE=$(basename $ARGS) export DEBIAN_FRONTEND=noninteractive echo ; echo "****************************************************************" echo "Creating build environment..." 1>&2 if ! (build-env $MIRROR $SOURCES -o "$ROOT" with pbuilder | indent) ; then error 10 "Could not create build-env environment." fi if ! mkdir -p "$ROOT/build" ; then error 11 "Could not create $ROOT/build" fi echo ; echo "****************************************************************" echo "Copying source tree..." 1>&2 if ! rsync -a "$TREE/" "$ROOT/build" ; then error 20 "Could not copy source tree from $TREE to $ROOT/build." fi echo ; echo "****************************************************************" echo "Installing build dependencies..." 1>&2 if ! (chroot "$ROOT" bash -c 'export DEBIAN_FRONTEND=noninteractive; cd /build && /usr/lib/pbuilder/pbuilder-satisfydepends' | indent) ; then error 30 "Could not satisfy build dependencies." fi echo ; echo "****************************************************************" echo "Running dpkg-buildpackage..." 1>&2 if ! (chroot "$ROOT" bash -c 'cd /build && dpkg-buildpackage' | indent ) ; then error 40 "dpkg-buildpackage returned an error." fi if $CLEAN ; then echo ; echo "****************************************************************" echo "Cleaning up build-env..." 1>&2 if ! rm -r "$ROOT" ; then error 50 "Could not clean up build environment: $ROOT" fi else echo ; echo "****************************************************************" echo "You specified --noclean. Not removing build-env: $ROOT" 1>&2 fi echo ; echo "****************************************************************" echo "Success." exit 0