Build packages concurrently
[git-tools-moved-to-github.git] / id-deb-build / id-pbuild-all.sh
index 796eddd..3af753a 100755 (executable)
@@ -2,6 +2,14 @@
 update=true
 PKG="$1"
 if test -z "$PKG"; then
+       if test -d deb-src; then
+               cd deb-src      
+               for d in *.dsc; do
+                       PKG=$d
+               done
+       fi
+fi
+if test -z "$PKG"; then
        echo "Specify .dsc file"
        exit 1
 fi
@@ -10,8 +18,12 @@ if test ! -e "$PKG"; then
        exit 1
 fi
 PRODUCT=`echo *.dsc|sed 's/_.*//g'`
-DEBIAN_DIST="squeeze etch lenny"
-UBUNTU_DIST="jaunty intrepid hardy"
+if test -z "$DEBIAN_DIST"; then
+       DEBIAN_DIST="squeeze etch lenny"
+fi
+if test -z "$UBUNTU_DIST"; then
+       UBUNTU_DIST="karmic jaunty intrepid hardy"
+fi
 
 if test "$2" = "upload"; then
        for dist in ${UBUNTU_DIST}; do
@@ -20,23 +32,46 @@ if test "$2" = "upload"; then
        for dist in ${DEBIAN_DIST}; do
                scp ${dist}-*/* ftp.indexdata.dk:/home/ftp/pub/${PRODUCT}/debian/${dist}
        done
+       echo "Remember to update APT on ftp.indexdata.dk"
+       echo "cd git-tools/update-archive"
+       echo "sudo su"
+       echo "./update-archive.sh"
        exit 0
 fi
+i=0
+concurrency=4
+echo "Building $PKG"
+date
 for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
-       for arch in i386 amd64; do
-               if test ! -f /var/cache/pbuilder/${dist}-${arch}-base.tgz; then
-                       DIST=$dist ARCH=$arch pbuilder create
-               fi
-               if $update; then
-                       DIST=$dist ARCH=$arch pbuilder update --override-config
-               fi
-               DIST=$dist ARCH=$arch pbuilder --build $PKG
-               if test -f ${dist}-${arch}/*.dsc; then
-                       :
-               else
-                       echo "No .dsc file for ${dist}-${arch}"
-                       exit 1
-               fi
-       done
+    for arch in i386 amd64; do
+        rm -fr ${dist}-${arch}
+       (
+           if test ! -f /var/cache/pbuilder/${dist}-${arch}-base.tgz; then
+               DIST=$dist ARCH=$arch pbuilder create
+           fi
+           if $update; then
+               DIST=$dist ARCH=$arch pbuilder update --override-config
+           fi
+           DIST=$dist ARCH=$arch pbuilder --build $PKG
+           ) >${dist}-${arch}.log 2>&1 &
+       i=`expr $i + 1`
+       if test $i -eq $concurrency; then
+           i=0
+           wait
+       fi
+    done
 done
-
+wait
+for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
+    for arch in i386 amd64; do
+       
+       if test -f ${dist}-${arch}/*.dsc; then
+           :
+       else
+           echo "No .dsc file for ${dist}-${arch}"
+           exit 1
+       fi
+    done
+done
+date
+echo "Done"