pbuilder support (requires pbuilder, dput, mini-dinstall, ...)
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Sun, 8 Jul 2012 22:28:23 +0000 (00:28 +0200)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Sun, 8 Jul 2012 22:28:23 +0000 (00:28 +0200)
mock.sh
pbuilder/D00update [new file with mode: 0755]

diff --git a/mock.sh b/mock.sh
index 74bfd7b..311b315 100755 (executable)
--- a/mock.sh
+++ b/mock.sh
@@ -1,8 +1,31 @@
 #! /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
@@ -21,26 +44,27 @@ Fedora*16*)
        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]\+.*//'`
 
@@ -62,13 +86,40 @@ build() {
        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
@@ -79,7 +130,7 @@ while test -n "$1"; do
        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)
@@ -129,7 +180,11 @@ while test -n "$1"; do
                ;;
 
        *)
-               build "$1"
+               if test "$CONF" = "pbuilder"; then
+                       pbuilder_build "$1"
+               else
+                       mock_build "$1"
+               fi
        esac
 
        shift
diff --git a/pbuilder/D00update b/pbuilder/D00update
new file mode 100755 (executable)
index 0000000..748356d
--- /dev/null
@@ -0,0 +1,2 @@
+#! /bin/sh
+aptitude update