#!/bin/sh
here=`pwd`
timestamp=`date +%Y%m%d-%H%M`
configfile=/etc/xbuilder.cfg


if [ -n "$2" ]; then
  if [ -f "$2" ]; then
    configfile="$2"
  else
    echo "Usage: $0 [configfile]"
  fi
fi

if [ -f "$configfile" ]; then 
  . "$configfile"
else
  echo "config in $configfile not found - exiting"
  exit 1
fi

mkdir -p "$here/build/${buildmethod}" "$here/logs/${buildmethod}/${timestamp}"

dosbuild()
{
  #should only use extrarepo option if it is set
  echo "Using sbuild multiarch"
  echo "running sbuild --host=$arch -d $distro --extra-repository="${extrarepo}" --nolog -c $chrootname in $here/build/${buildmethod}/${sourcepackage}"
  cd $here/build/${buildmethod} && apt-get source --download-only $sourcepackage
  ( cd $here/build/${buildmethod} && sbuild --host=$arch -d $distro --extra-repository="${extrarepo}" --build-dep-resolver=aptitude --nolog --verbose -c $chrootname $sourcepackage*.dsc > $here/logs/${buildmethod}/${timestamp}/${package}.log 2>&1 )
}

doxapt()
{
 echo "Using sbuild xapt"
 cd $here/build/${buildmethod} && apt-get source --download-only $sourcepackage
 ( cd $here/build/${buildmethod} && sbuild --host=$arch --build-dep-resolver=xapt -d $distro --nolog --verbose -c $chrootname $sourcepackage*.dsc > $here/logs/${buildmethod}/${timestamp}/${package}.log 2>&1 )

}

dopdebuild()
{
  echo "Using pdebuild-cross"
  cd $here/build/${buildmethod} && apt-get source $sourcepackage
  ( cd $here/build/${buildmethod}/${sourcepackage}-* && pdebuild-cross  > $here/logs/${buildmethod}/${timestamp}/${package}.log 2>&1 )
}

doxdeb()
{
  echo "Using xdeb"
  #go back to base chroot for clean builds
  if [ -n "$cleanbuild" ];  then
#    echo "cleaning chroot"
    # replace this with cow or lvm-foo
#    if [ -z "$chrootpath" ]; then echo "No path for build chroot specified ($chrootpath)"; exit 1; fi
#    if [ "$chrootpath" = "/" ]; then echo "Refusing to delete everything"; exit 1; fi   
#    if [ -e "$chrootpath" -a -n "$chrootpath" ]; then sudo rm -rf "$chrootpath"; fi
#    mkdir -p "$chrootpath" && sudo tar -C "$chrootpath" -zxf "${cleantarballs}/${chrootname}.tgz"
    cleanprefix="schroot -c $chrootname -- sh -c"
  fi
  cd $here/build/xdeb
  # tidy up any -cross packages except the base toolchain stuff
  # for a really clean build get rid of the local package cache too
  # rm -rf *
  
  # Do this stuff if using a persistent chroot
  if [ ! -n "$cleanbuild" ]; then
    rm -f pkgcache.apt
    echo "Removing previously-installed -cross packages"
    rm -f *armel-cross* *armel.changes
    dpkg --get-selections | grep -E "$arch-cross.*install" |  grep -E -v "(libgcc1|linux-libc|libc6|libstdc++.*|libgomp1)(-dev)*-$arch-cross" | awk '{ print $1}' | sudo xargs apt-get -qq -y remove
  fi
  echo "Doing the build. Log in $here/logs/xdeb/$package-$timestamp.log"
  #clean build runs this in schroot via $cleanprefix
  $cleanprefix "xdeb --only-explicit -a $arch --prefer-apt --apt-source --debug --force-rebuild $sourcepackage > $here/logs/xdeb/${timestamp}/${package}.log 2>&1"

}

parselog()
{
#echo "Parsing build log for build status"
/usr/lib/xbuilder/build-status-single $here/logs/${buildmethod}/${timestamp}/${package}.log
}

for package in `cat $buildlist`
do
  sourcepackage=`grep-aptavail -X -FSource -FPackage $package -s Source:Package | awk '{ print $2 }' | uniq`
  if [ -z $sourcepackage ]; 
  then 
    echo "No source found corresponding to $package, skipping"
    continue
  else
    echo "*********************************************"
    echo "*********   building $package from $sourcepackage"
    echo "*********************************************"
    do$buildmethod
    parselog
  fi
done