#! /bin/bash -e
+#
+# script to build binary packages from prepared source packages in source tree
+#
+# ==== mock ====
+#
+# moduser -a -A mock $LOGNAME
+#
+# ==== pbuilder ====
+#
+# pbuilder --create --distribution squeeze
+#
+# cat > /root/.pbuilderrc <<EOF
+# OTHERMIRROR='deb http://emisoft.web.cern.ch/emisoft/dist/EMI/2/RC/debian/ stable third-party|deb file:///home/valtri/debian/ stable/'
+# BINDMOUNTS="/home/valtri/debian"
+# EOF
+# cp /root/.pbuilderrc /home/valtri/.pbuilderrc
+# chown valtri:users /home/valtri/.pbuilderrc
+#
+
+
OS=`cat /etc/issue | head -n 1`
ARCH=`uname -i`
+#CONF=sl-5-x86_64
+#CONF=sl-5-i386
+#CONF=sl-6-x86_64
case $OS in
Debian*)
CONF=pbuilder
exit 1
;;
esac
-#CONF=sl-5-x86_64
-#CONF=sl-5-i386
-#CONF=sl-6-x86_64
+LAUNCHDIR=`dirname $0`
+LAUNCHDIR=`(cd $LAUNCHDIR; pwd)`
REPORTS=results/reports
CMD="mock --configdir=mock -r $CONF --resultdir `pwd`/$REPORTS"
-if ! test -d mock; then
- mkdir mock
- ln -s /etc/mock/logging.ini mock/
- touch mock/site-defaults.cfg
-fi
-if test ! -s mock/$CONF.cfg -o `dirname $0`/$CONF.cfg.template -nt mock/$CONF.cfg; then
- sed -e "s,@PWD@,`pwd`," -e "s,@REPO@,results," `dirname $0`/$CONF.cfg.template > mock/$CONF.cfg
-fi
-
mkdir -p $REPORTS 2>/dev/null || :
-createrepo results
+if test "$CONF" != "pbuilder"; then
+ if ! test -d mock; then
+ mkdir mock
+ ln -s /etc/mock/logging.ini mock/
+ touch mock/site-defaults.cfg
+ fi
+ if test ! -s mock/$CONF.cfg -o $LAUNCHDIR/$CONF.cfg.template -nt mock/$CONF.cfg; then
+ sed -e "s,@PWD@,`pwd`," -e "s,@REPO@,results," $LAUNCHDIR/$CONF.cfg.template > mock/$CONF.cfg
+ fi
+
+ createrepo results
+fi
-build() {
+mock_build() {
local FILE="$1"
local BASENAME=`basename "$FILE" | sed -e 's/-[0-9]\+.*//'`
echo "==== Done $BASENAME ===="
}
+pbuilder_build() {
+ local FILE="$1"
+ local BASENAME=`basename "$FILE" | sed -e 's/_[0-9]\+.*//'`
+ local DIR=`dirname "$FILE"`
+ local SUBDIR
+ local BASEDIR="`pwd`"
+ local CHANGES
+
+ echo "==== Building $BASENAME ==== "
+ touch $REPORTS/fail.$BASENAME
+ (cd $DIR; dpkg-source -x "`basename $FILE`")
+ SUBDIR=`find $DIR -type d -name ${BASENAME}-\* | head -n 1`
+ (cd $SUBDIR; pdebuild --buildresult $BASEDIR/results/pbuilder -- --hookdir $LAUNCHDIR/pbuilder)
+ mv $DIR/*.build results/reports
+ CHANGES=`find results/pbuilder -type f -name ${BASENAME}_\*.changes | head -n 1`
+ # buggy mini-dinstall?
+ rm -f ~/debian/*.db
+ dput -uU local $CHANGES
+ rm -f $REPORTS/fail.$BASENAME
+ echo $BASENAME >> $REPORTS/success.log
+ echo "==== Done $BASENAME ===="
+}
package() {
local file
if test -d $1/dist; then
- file=`find $1/dist -maxdepth 1 -type f -name $2-\*.src.rpm | head -n 1`
- build $file
+ if test "$CONF" = "pbuilder"; then
+ file=`find $1/dist -maxdepth 1 -type f -name $2_\*.dsc | head -n 1`
+ pbuilder_build $file
+ else
+ file=`find $1/dist -maxdepth 1 -type f -name $2-\*.src.rpm | head -n 1`
+ mock_build $file
+ fi
else
echo "==== Skipping $1 ===="
fi
case "$1" in
gridsite|grids)
file=`find org.gridsite.core/RPMTMP -type f -name gridsite-\*.src.rpm | head -n 1`
- build $file
+ mock_build $file
;;
jobid)
;;
*)
- build "$1"
+ if test "$CONF" = "pbuilder"; then
+ pbuilder_build "$1"
+ else
+ mock_build "$1"
+ fi
esac
shift